Skip to content

Conversation

usamoi
Copy link
Contributor

@usamoi usamoi commented Sep 20, 2025

Tracking issue: rust-lang/rust#136306 (waiting for FCP and rust-lang/rust#146613 probably)

  1. The feature gate of stablized items is stdarch_neon_fp16.
  2. stdarch_neon_f16 types are still unstable on arm. They're gated by stdarch_arm_neon_intrinsics now.
  3. stdarch_neon_f16 intrinsics are still unstable on arm. They're gated by stdarch_arm_neon_intrinsics now.
  4. stdarch_neon_f16 intrinsics that requires fhm are stable.
  5. stdarch_neon_f16 intrinsics that requires fcma are still unstable. They're gated by stdarch_neon_fcma now.
  6. stdarch_neon_f16 intrinsics that requires lut are still unstable. They're gated by stdarch_neon_feat_lut before and after this pull request.
  7. stdarch_neon_f16 intrinsics that takes or returns f16, *const f16 or *mut f16 are still unstable.
List of stablized intrinsics.
extern {
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vabd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vabdq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vabs_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vabsq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vaddq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "v7")]
    pub fn vbsl_f16(a: uint16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "v7")]
    pub fn vbslq_f16(a: uint16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcage_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcageq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcagt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcagtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcale_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcaleq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcalt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcaltq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vceq_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vceqq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcge_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgeq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgez_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgezq_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgtq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgtz_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcgtzq_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcle_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcleq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vclez_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vclezq_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vclt_f16(a: float16x4_t, b: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcltq_f16(a: float16x8_t, b: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcltz_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcltzq_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcombine_f16(a: float16x4_t, b: float16x4_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcreate_f16(a: u64) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcreate_f16(a: u64) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_f16_f32(a: float32x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_f16_s16(a: int16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_f16_s16(a: int16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_f16_u16(a: uint16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_f16_u16(a: uint16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_f32_f16(a: float16x4_t) -> float32x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_n_f16_s16<const N: i32>(a: int16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_n_f16_s16<const N: i32>(a: int16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_n_f16_u16<const N: i32>(a: uint16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_n_f16_u16<const N: i32>(a: uint16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_n_s16_f16<const N: i32>(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_n_s16_f16<const N: i32>(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_n_u16_f16<const N: i32>(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_n_u16_f16<const N: i32>(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_s16_f16(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_s16_f16(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_u16_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtq_u16_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vdup_lane_f16<const N: i32>(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vdupq_lane_f16<const N: i32>(a: float16x4_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vdup_laneq_f16<const N: i32>(a: float16x8_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vdupq_laneq_f16<const N: i32>(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vext_f16<const N: i32>(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vextq_f16<const N: i32>(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "vfp4")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vfma_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "vfp4")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vfmaq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "vfp4")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vfms_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "vfp4")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vfmsq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vget_high_f16(a: float16x8_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vget_low_f16(a: float16x8_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "fp-armv8,v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "fp-armv8,v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "fp-armv8,v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "fp-armv8,v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmul_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmul_lane_f16<const LANE: i32>(a: float16x4_t, v: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulq_lane_f16<const LANE: i32>(
        a: float16x8_t,
        v: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vneg_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vnegq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vpadd_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrecpe_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrecpeq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrecps_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrecpsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f32_f16(a: float16x4_t) -> float32x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_s8_f16(a: float16x4_t) -> int8x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_s16_f16(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_s32_f16(a: float16x4_t) -> int32x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_s64_f16(a: float16x4_t) -> int64x1_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_u8_f16(a: float16x4_t) -> uint8x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_u16_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_u32_f16(a: float16x4_t) -> uint32x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_u64_f16(a: float16x4_t) -> uint64x1_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_p8_f16(a: float16x4_t) -> poly8x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_p16_f16(a: float16x4_t) -> poly16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f32_f16(a: float16x8_t) -> float32x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_s8_f16(a: float16x8_t) -> int8x16_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_s16_f16(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_s32_f16(a: float16x8_t) -> int32x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_s64_f16(a: float16x8_t) -> int64x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_u8_f16(a: float16x8_t) -> uint8x16_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_u16_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_u32_f16(a: float16x8_t) -> uint32x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_u64_f16(a: float16x8_t) -> uint64x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_p8_f16(a: float16x8_t) -> poly8x16_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_p16_f16(a: float16x8_t) -> poly16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_f32(a: float32x2_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_f32(a: float32x4_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_s8(a: int8x8_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_s8(a: int8x16_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_s16(a: int16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_s16(a: int16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_s32(a: int32x2_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_s32(a: int32x4_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_s64(a: int64x1_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_s64(a: int64x2_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_u8(a: uint8x8_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_u8(a: uint8x16_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_u16(a: uint16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_u16(a: uint16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_u32(a: uint32x2_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_u32(a: uint32x4_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_u64(a: uint64x1_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_u64(a: uint64x2_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_p8(a: poly8x8_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_p8(a: poly8x16_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_p16(a: poly16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_p16(a: poly16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_p128(a: p128) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_p64_f16(a: float16x4_t) -> poly64x1_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_p128_f16(a: float16x8_t) -> p128;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_p64_f16(a: float16x8_t) -> poly64x2_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_p64(a: poly64x1_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_p64(a: poly64x2_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrev64_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrev64q_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "fp-armv8,v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndn_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "fp-armv8,v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndnq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrsqrte_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrsqrteq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrsqrts_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vrsqrtsq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vsub_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vsubq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vtrn_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vtrnq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vuzp_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vuzpq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vzip_f16(a: float16x4_t, b: float16x4_t) -> float16x4x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    pub fn vzipq_f16(a: float16x8_t, b: float16x8_t) -> float16x8x2_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vceqz_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vceqzq_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_high_f16_f32(a: float16x4_t, b: float32x4_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvt_high_f32_f16(a: float16x8_t) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvta_s16_f16(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtaq_s16_f16(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvta_u16_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtaq_u16_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtm_s16_f16(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtmq_s16_f16(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtm_u16_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtmq_u16_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtn_s16_f16(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtnq_s16_f16(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtn_u16_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtnq_u16_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtp_s16_f16(a: float16x4_t) -> int16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtpq_s16_f16(a: float16x8_t) -> int16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtp_u16_f16(a: float16x4_t) -> uint16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vcvtpq_u16_f16(a: float16x8_t) -> uint16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vdiv_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vdivq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfma_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfma_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfmaq_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfmaq_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlal_high_f16(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x4_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlalq_high_f16(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlal_lane_high_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x4_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlal_laneq_high_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x8_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlalq_lane_high_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x4_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlalq_laneq_high_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlal_lane_low_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x4_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlal_laneq_low_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x8_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlalq_lane_low_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x4_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlalq_laneq_low_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlal_low_f16(r: float32x2_t, a: float16x4_t, b: float16x4_t) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlalq_low_f16(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlsl_high_f16(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x4_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlslq_high_f16(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlsl_lane_high_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x4_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlsl_laneq_high_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x8_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlslq_lane_high_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x4_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlslq_laneq_high_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlsl_lane_low_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x4_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlsl_laneq_low_f16<const LANE: i32>(
        r: float32x2_t,
        a: float16x4_t,
        b: float16x8_t,
    ) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlslq_lane_low_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x4_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlslq_laneq_low_f16<const LANE: i32>(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlsl_low_f16(r: float32x2_t, a: float16x4_t, b: float16x4_t) -> float32x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fhm")]
    pub fn vfmlslq_low_f16(
        r: float32x4_t,
        a: float16x8_t,
        b: float16x8_t,
    ) -> float32x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfms_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfms_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfmsq_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vfmsq_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmul_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulq_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulx_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulx_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulx_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulxq_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vmulxq_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpaddq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpmax_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpmaxq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpmaxnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpmaxnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpmin_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpminq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpminnm_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vpminnmq_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f64_f16(a: float16x4_t) -> float64x1_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f64_f16(a: float16x8_t) -> float64x2_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpret_f16_f64(a: float64x1_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vreinterpretq_f16_f64(a: float64x2_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrnd_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrnda_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndaq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndi_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndiq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndm_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndmq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndp_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndpq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndx_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vrndxq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vsqrt_f16(a: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vsqrtq_f16(a: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vtrn1_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vtrn1q_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vtrn2_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vtrn2q_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vuzp1_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vuzp1q_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vuzp2_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vuzp2q_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vzip1_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vzip1q_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vzip2_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    pub fn vzip2q_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
}
List of unstable intrinsics.
extern {
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vabsh_f16(a: f16) -> f16;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vaddh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vdup_n_f16(a: f16) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vdupq_n_f16(a: f16) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vget_lane_f16<const LANE: i32>(a: float16x4_t) -> f16;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vgetq_lane_f16<const LANE: i32>(a: float16x8_t) -> f16;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_dup_f16(ptr: *const f16) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_dup_f16(ptr: *const f16) -> float16x8_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_f16_x2(a: *const f16) -> float16x4x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_f16_x3(a: *const f16) -> float16x4x3_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_f16_x4(a: *const f16) -> float16x4x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_f16_x2(a: *const f16) -> float16x8x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_f16_x3(a: *const f16) -> float16x8x3_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_f16_x4(a: *const f16) -> float16x8x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_lane_f16<const LANE: i32>(
        ptr: *const f16,
        src: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_lane_f16<const LANE: i32>(
        ptr: *const f16,
        src: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_arm_neon_intrinsics")]
    unsafe fn vld1_v4f16(a: *const i8, b: i32) -> float16x4_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_arm_neon_intrinsics")]
    unsafe fn vld1q_v8f16(a: *const i8, b: i32) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2_dup_f16(a: *const f16) -> float16x4x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2q_dup_f16(a: *const f16) -> float16x8x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2_f16(a: *const f16) -> float16x4x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2q_f16(a: *const f16) -> float16x8x2_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x4x2_t,
    ) -> float16x4x2_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2q_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x8x2_t,
    ) -> float16x8x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x4x2_t,
    ) -> float16x4x2_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld2q_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x8x2_t,
    ) -> float16x8x2_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3_dup_f16(a: *const f16) -> float16x4x3_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3q_dup_f16(a: *const f16) -> float16x8x3_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3_f16(a: *const f16) -> float16x4x3_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3q_f16(a: *const f16) -> float16x8x3_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x4x3_t,
    ) -> float16x4x3_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3q_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x8x3_t,
    ) -> float16x8x3_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x4x3_t,
    ) -> float16x4x3_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld3q_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x8x3_t,
    ) -> float16x8x3_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4_dup_f16(a: *const f16) -> float16x4x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4q_dup_f16(a: *const f16) -> float16x8x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4_f16(a: *const f16) -> float16x4x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4q_f16(a: *const f16) -> float16x8x4_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x4x4_t,
    ) -> float16x4x4_t;
    #[target_feature(enable = "neon,v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4q_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x8x4_t,
    ) -> float16x8x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x4x4_t,
    ) -> float16x4x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld4q_lane_f16<const LANE: i32>(
        a: *const f16,
        b: float16x8x4_t,
    ) -> float16x8x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmov_n_f16(a: f16) -> float16x4_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmovq_n_f16(a: f16) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmul_n_f16(a: float16x4_t, b: f16) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulq_n_f16(a: float16x8_t, b: f16) -> float16x8_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vset_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "v8")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vsetq_lane_f16<const LANE: i32>(a: f16, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16(ptr: *mut f16, a: float16x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16(ptr: *mut f16, a: float16x8_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16_x2(a: *mut f16, b: float16x4x2_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16_x2(a: *mut f16, b: float16x8x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16_x3(a: *mut f16, b: float16x4x3_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16_x3(a: *mut f16, b: float16x8x3_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16_x4(a: *mut f16, b: float16x4x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16_x4(a: *mut f16, b: float16x8x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_arm_neon_intrinsics")]
    unsafe fn vst1_v4f16(addr: *const i8, val: float16x4_t, align: i32);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_arm_neon_intrinsics")]
    unsafe fn vst1q_v8f16(addr: *const i8, val: float16x8_t, align: i32);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2_f16(a: *mut f16, b: float16x4x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2q_f16(a: *mut f16, b: float16x8x2_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst2q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x2_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3_f16(a: *mut f16, b: float16x4x3_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3q_f16(a: *mut f16, b: float16x8x3_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x3_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst3q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x3_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4_f16(a: *mut f16, b: float16x4x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4q_f16(a: *mut f16, b: float16x8x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t);
    #[target_feature(enable = "v7")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4_lane_f16<const LANE: i32>(a: *mut f16, b: float16x4x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst4q_lane_f16<const LANE: i32>(a: *mut f16, b: float16x8x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vabdh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fcma")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcadd_rot270_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fcma")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcaddq_rot270_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fcma")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcadd_rot90_f16(a: float16x4_t, b: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[target_feature(enable = "fcma")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcaddq_rot90_f16(a: float16x8_t, b: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcageh_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcagth_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcaleh_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcalth_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vceqh_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vceqzh_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcgeh_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcgezh_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcgth_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcgtzh_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcleh_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vclezh_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vclth_f16(a: f16, b: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcltzh_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_f16(a: float16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_f16(a: float16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot180_f16(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot180_f16(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot180_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot180_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot180_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot180_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot270_f16(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot270_f16(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcmla_rot270_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcmlaq_rot270_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot270_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot270_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot90_f16(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot90_f16(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot90_lane_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x4_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot90_lane_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x4_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmla_rot90_laneq_f16<const LANE: i32>(
        a: float16x4_t,
        b: float16x4_t,
        c: float16x8_t,
    ) -> float16x4_t;
    #[target_feature(enable = "neon,fcma")]
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_fcma")]
    pub fn vcmlaq_rot90_laneq_f16<const LANE: i32>(
        a: float16x8_t,
        b: float16x8_t,
        c: float16x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtah_s16_f16(a: f16) -> i16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtah_s32_f16(a: f16) -> i32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtah_s64_f16(a: f16) -> i64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtah_u16_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtah_u32_f16(a: f16) -> u32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtah_u64_f16(a: f16) -> u64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_f16_s16(a: i16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_f16_s32(a: i32) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_f16_s64(a: i64) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_f16_u16(a: u16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_f16_u32(a: u32) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_f16_u64(a: u64) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_f16_s16<const N: i32>(a: i16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_f16_s32<const N: i32>(a: i32) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_f16_s64<const N: i32>(a: i64) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_f16_u16<const N: i32>(a: u16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_f16_u32<const N: i32>(a: u32) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_f16_u64<const N: i32>(a: u64) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_s16_f16<const N: i32>(a: f16) -> i16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_s32_f16<const N: i32>(a: f16) -> i32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_s64_f16<const N: i32>(a: f16) -> i64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_u16_f16<const N: i32>(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_u32_f16<const N: i32>(a: f16) -> u32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_n_u64_f16<const N: i32>(a: f16) -> u64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_s16_f16(a: f16) -> i16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_s32_f16(a: f16) -> i32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_s64_f16(a: f16) -> i64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_u16_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_u32_f16(a: f16) -> u32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvth_u64_f16(a: f16) -> u64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtmh_s16_f16(a: f16) -> i16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtmh_s32_f16(a: f16) -> i32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtmh_s64_f16(a: f16) -> i64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtmh_u16_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtmh_u32_f16(a: f16) -> u32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtmh_u64_f16(a: f16) -> u64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtnh_s16_f16(a: f16) -> i16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtnh_s32_f16(a: f16) -> i32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtnh_s64_f16(a: f16) -> i64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtnh_u16_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtnh_u32_f16(a: f16) -> u32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtnh_u64_f16(a: f16) -> u64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtph_s16_f16(a: f16) -> i16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtph_s32_f16(a: f16) -> i32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtph_s64_f16(a: f16) -> i64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtph_u16_f16(a: f16) -> u16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtph_u32_f16(a: f16) -> u32;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vcvtph_u64_f16(a: f16) -> u64;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vdivh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vduph_lane_f16<const N: i32>(a: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vduph_laneq_f16<const N: i32>(a: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfma_n_f16(a: float16x4_t, b: float16x4_t, c: f16) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmaq_n_f16(a: float16x8_t, b: float16x8_t, c: f16) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmah_f16(a: f16, b: f16, c: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmah_lane_f16<const LANE: i32>(a: f16, b: f16, v: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmah_laneq_f16<const LANE: i32>(a: f16, b: f16, v: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfms_n_f16(a: float16x4_t, b: float16x4_t, c: f16) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmsq_n_f16(a: float16x8_t, b: float16x8_t, c: f16) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmsh_f16(a: f16, b: f16, c: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmsh_lane_f16<const LANE: i32>(a: f16, b: f16, v: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vfmsh_laneq_f16<const LANE: i32>(a: f16, b: f16, v: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1_f16(ptr: *const f16) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vld1q_f16(ptr: *const f16) -> float16x8_t;
    #[target_feature(enable = "neon,lut,fp16")]
    #[unstable(feature = "stdarch_neon_feat_lut")]
    pub unsafe fn vluti4q_lane_f16_x2<const LANE: i32>(
        a: float16x8x2_t,
        b: uint8x8_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,lut,fp16")]
    #[unstable(feature = "stdarch_neon_feat_lut")]
    pub unsafe fn vluti4q_laneq_f16_x2<const LANE: i32>(
        a: float16x8x2_t,
        b: uint8x16_t,
    ) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmaxh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmaxnmh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmaxnmv_f16(a: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmaxnmvq_f16(a: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmaxv_f16(a: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmaxvq_f16(a: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vminh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vminnmh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vminnmv_f16(a: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vminnmvq_f16(a: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vminv_f16(a: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vminvq_f16(a: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulh_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulh_laneq_f16<const LANE: i32>(a: f16, b: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulx_n_f16(a: float16x4_t, b: f16) -> float16x4_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulxq_n_f16(a: float16x8_t, b: f16) -> float16x8_t;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulxh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulxh_lane_f16<const LANE: i32>(a: f16, b: float16x4_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vmulxh_laneq_f16<const LANE: i32>(a: f16, b: float16x8_t) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vnegh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrecpeh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrecpsh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrecpxh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndah_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndih_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndmh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndnh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndph_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrndxh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrsqrteh_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vrsqrtsh_f16(a: f16, b: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vsqrth_f16(a: f16) -> f16;
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1_f16(ptr: *mut f16, a: float16x4_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub unsafe fn vst1q_f16(ptr: *mut f16, a: float16x8_t);
    #[target_feature(enable = "neon,fp16")]
    #[unstable(feature = "stdarch_neon_f16")]
    pub fn vsubh_f16(a: f16, b: f16) -> f16;
}

@rustbot
Copy link
Collaborator

rustbot commented Sep 20, 2025

r? @sayantn

rustbot has assigned @sayantn.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@usamoi usamoi marked this pull request as draft September 20, 2025 09:13
@usamoi
Copy link
Contributor Author

usamoi commented Sep 20, 2025

All failed intrinsics are vreinterpret*. It's confusing.

#1923

@tgross35
Copy link
Contributor

  • stdarch_neon_f16 intrinsics that requires fhm or fcma are still unstable. They're gated by stdarch_neon_f16_updates now.

Is there any reason not to stabilize fhm at the same time? We'd need to double check with libs-api but per Arm it's just "Floating-point half-precision multiplication instructions", so that seems fine to include here.

The fcma intrinsics that don't depend on immediate f16 should probably be moved to stdarch_neon_fcma so they get stablized along with rust-lang/rust#117222. I assume that may be ready for a stabilization PR as well.

@sayantn
Copy link
Contributor

sayantn commented Sep 21, 2025

Also one more thing, ideally don't update the feature name of the non-stabilized intrinsics, instead change the feature name of the stabilized ones. Otherwise it introduces compile errors in user code, for no good reason

@usamoi usamoi force-pushed the stdarch_neon_f16_stablize branch from 91ffa69 to 8cb1918 Compare September 21, 2025 07:07
@usamoi
Copy link
Contributor Author

usamoi commented Sep 21, 2025

Is there any reason not to stabilize fhm at the same time? We'd need to double check with libs-api but per Arm it's just "Floating-point half-precision multiplication instructions", so that seems fine to include here.

No. It's included in this pull request now.

The fcma intrinsics that don't depend on immediate f16 should probably be moved to stdarch_neon_fcma so they get stablized along with rust-lang/rust#117222. I assume that may be ready for a stabilization PR as well.

Done.

Also one more thing, ideally don't update the feature name of the non-stabilized intrinsics, instead change the feature name of the stabilized ones. Otherwise it introduces compile errors in user code, for no good reason

Intrinsics are stablized under the new feature gate stdarch_neon_fp16 now.

@usamoi usamoi force-pushed the stdarch_neon_f16_stablize branch from 8cb1918 to 480dc48 Compare September 23, 2025 03:55
@usamoi usamoi force-pushed the stdarch_neon_f16_stablize branch from 480dc48 to 24df9ae Compare September 23, 2025 03:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants