@@ -5516,7 +5516,14 @@ pub fn vcvtaq_u64_f64(a: float64x2_t) -> uint64x2_t {
55165516#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55175517#[cfg(not(target_arch = "arm64ec"))]
55185518pub fn vcvtah_s16_f16(a: f16) -> i16 {
5519- vcvtah_s32_f16(a) as i16
5519+ unsafe extern "unadjusted" {
5520+ #[cfg_attr(
5521+ any(target_arch = "aarch64", target_arch = "arm64ec"),
5522+ link_name = "llvm.aarch64.neon.fcvtas.i16.f16"
5523+ )]
5524+ fn _vcvtah_s16_f16(a: f16) -> i16;
5525+ }
5526+ unsafe { _vcvtah_s16_f16(a) }
55205527}
55215528#[doc = "Floating-point convert to integer, rounding to nearest with ties to away"]
55225529#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtah_s32_f16)"]
@@ -5560,7 +5567,14 @@ pub fn vcvtah_s64_f16(a: f16) -> i64 {
55605567#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
55615568#[cfg(not(target_arch = "arm64ec"))]
55625569pub fn vcvtah_u16_f16(a: f16) -> u16 {
5563- vcvtah_u32_f16(a) as u16
5570+ unsafe extern "unadjusted" {
5571+ #[cfg_attr(
5572+ any(target_arch = "aarch64", target_arch = "arm64ec"),
5573+ link_name = "llvm.aarch64.neon.fcvtau.i16.f16"
5574+ )]
5575+ fn _vcvtah_u16_f16(a: f16) -> u16;
5576+ }
5577+ unsafe { _vcvtah_u16_f16(a) }
55645578}
55655579#[doc = "Floating-point convert to integer, rounding to nearest with ties to away"]
55665580#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtah_u32_f16)"]
@@ -6202,7 +6216,14 @@ pub fn vcvtmq_u64_f64(a: float64x2_t) -> uint64x2_t {
62026216#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62036217#[cfg(not(target_arch = "arm64ec"))]
62046218pub fn vcvtmh_s16_f16(a: f16) -> i16 {
6205- vcvtmh_s32_f16(a) as i16
6219+ unsafe extern "unadjusted" {
6220+ #[cfg_attr(
6221+ any(target_arch = "aarch64", target_arch = "arm64ec"),
6222+ link_name = "llvm.aarch64.neon.fcvtms.i16.f16"
6223+ )]
6224+ fn _vcvtmh_s16_f16(a: f16) -> i16;
6225+ }
6226+ unsafe { _vcvtmh_s16_f16(a) }
62066227}
62076228#[doc = "Floating-point convert to integer, rounding towards minus infinity"]
62086229#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtmh_s32_f16)"]
@@ -6238,15 +6259,22 @@ pub fn vcvtmh_s64_f16(a: f16) -> i64 {
62386259 }
62396260 unsafe { _vcvtmh_s64_f16(a) }
62406261}
6241- #[doc = "Floating-point convert to integer, rounding towards minus infinity"]
6262+ #[doc = "Floating-point convert to unsigned integer, rounding towards minus infinity"]
62426263#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtmh_u16_f16)"]
62436264#[inline]
62446265#[cfg_attr(test, assert_instr(fcvtmu))]
62456266#[target_feature(enable = "neon,fp16")]
62466267#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
62476268#[cfg(not(target_arch = "arm64ec"))]
62486269pub fn vcvtmh_u16_f16(a: f16) -> u16 {
6249- vcvtmh_u32_f16(a) as u16
6270+ unsafe extern "unadjusted" {
6271+ #[cfg_attr(
6272+ any(target_arch = "aarch64", target_arch = "arm64ec"),
6273+ link_name = "llvm.aarch64.neon.fcvtmu.i16.f16"
6274+ )]
6275+ fn _vcvtmh_u16_f16(a: f16) -> u16;
6276+ }
6277+ unsafe { _vcvtmh_u16_f16(a) }
62506278}
62516279#[doc = "Floating-point convert to unsigned integer, rounding towards minus infinity"]
62526280#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtmh_u32_f16)"]
@@ -6550,7 +6578,14 @@ pub fn vcvtnq_u64_f64(a: float64x2_t) -> uint64x2_t {
65506578#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65516579#[cfg(not(target_arch = "arm64ec"))]
65526580pub fn vcvtnh_s16_f16(a: f16) -> i16 {
6553- vcvtnh_s32_f16(a) as i16
6581+ unsafe extern "unadjusted" {
6582+ #[cfg_attr(
6583+ any(target_arch = "aarch64", target_arch = "arm64ec"),
6584+ link_name = "llvm.aarch64.neon.fcvtns.i16.f16"
6585+ )]
6586+ fn _vcvtnh_s16_f16(a: f16) -> i16;
6587+ }
6588+ unsafe { _vcvtnh_s16_f16(a) }
65546589}
65556590#[doc = "Floating-point convert to integer, rounding to nearest with ties to even"]
65566591#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtnh_s32_f16)"]
@@ -6594,7 +6629,14 @@ pub fn vcvtnh_s64_f16(a: f16) -> i64 {
65946629#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
65956630#[cfg(not(target_arch = "arm64ec"))]
65966631pub fn vcvtnh_u16_f16(a: f16) -> u16 {
6597- vcvtnh_u32_f16(a) as u16
6632+ unsafe extern "unadjusted" {
6633+ #[cfg_attr(
6634+ any(target_arch = "aarch64", target_arch = "arm64ec"),
6635+ link_name = "llvm.aarch64.neon.fcvtnu.i16.f16"
6636+ )]
6637+ fn _vcvtnh_u16_f16(a: f16) -> u16;
6638+ }
6639+ unsafe { _vcvtnh_u16_f16(a) }
65986640}
65996641#[doc = "Floating-point convert to unsigned integer, rounding to nearest with ties to even"]
66006642#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtnh_u32_f16)"]
@@ -6898,7 +6940,14 @@ pub fn vcvtpq_u64_f64(a: float64x2_t) -> uint64x2_t {
68986940#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
68996941#[cfg(not(target_arch = "arm64ec"))]
69006942pub fn vcvtph_s16_f16(a: f16) -> i16 {
6901- vcvtph_s32_f16(a) as i16
6943+ unsafe extern "unadjusted" {
6944+ #[cfg_attr(
6945+ any(target_arch = "aarch64", target_arch = "arm64ec"),
6946+ link_name = "llvm.aarch64.neon.fcvtps.i16.f16"
6947+ )]
6948+ fn _vcvtph_s16_f16(a: f16) -> i16;
6949+ }
6950+ unsafe { _vcvtph_s16_f16(a) }
69026951}
69036952#[doc = "Floating-point convert to integer, rounding to plus infinity"]
69046953#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtph_s32_f16)"]
@@ -6942,7 +6991,14 @@ pub fn vcvtph_s64_f16(a: f16) -> i64 {
69426991#[unstable(feature = "stdarch_neon_f16", issue = "136306")]
69436992#[cfg(not(target_arch = "arm64ec"))]
69446993pub fn vcvtph_u16_f16(a: f16) -> u16 {
6945- vcvtph_u32_f16(a) as u16
6994+ unsafe extern "unadjusted" {
6995+ #[cfg_attr(
6996+ any(target_arch = "aarch64", target_arch = "arm64ec"),
6997+ link_name = "llvm.aarch64.neon.fcvtpu.i16.f16"
6998+ )]
6999+ fn _vcvtph_u16_f16(a: f16) -> u16;
7000+ }
7001+ unsafe { _vcvtph_u16_f16(a) }
69467002}
69477003#[doc = "Floating-point convert to unsigned integer, rounding to plus infinity"]
69487004#[doc = "[Arm's documentation](https://developer.arm.com/architectures/instruction-sets/intrinsics/vcvtph_u32_f16)"]
0 commit comments