diff --git a/crates/core_arch/src/arm_shared/neon/generated.rs b/crates/core_arch/src/arm_shared/neon/generated.rs index 852e103128..f896c18b13 100644 --- a/crates/core_arch/src/arm_shared/neon/generated.rs +++ b/crates/core_arch/src/arm_shared/neon/generated.rs @@ -3851,14 +3851,7 @@ pub fn vbicq_u8(a: uint8x16_t, b: uint8x16_t) -> uint8x16_t { all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), assert_instr(bsl) )] -#[cfg_attr( - not(target_arch = "arm"), - stable(feature = "neon_intrinsics", since = "1.59.0") -)] -#[cfg_attr( - target_arch = "arm", - unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800") -)] +#[unstable(feature = "stdarch_neon_f16", issue = "136306")] pub fn vbsl_f16(a: uint16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t { let not = int16x4_t::splat(-1); unsafe { @@ -3878,14 +3871,7 @@ pub fn vbsl_f16(a: uint16x4_t, b: float16x4_t, c: float16x4_t) -> float16x4_t { all(test, any(target_arch = "aarch64", target_arch = "arm64ec")), assert_instr(bsl) )] -#[cfg_attr( - not(target_arch = "arm"), - stable(feature = "neon_intrinsics", since = "1.59.0") -)] -#[cfg_attr( - target_arch = "arm", - unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800") -)] +#[unstable(feature = "stdarch_neon_f16", issue = "136306")] pub fn vbslq_f16(a: uint16x8_t, b: float16x8_t, c: float16x8_t) -> float16x8_t { let not = int16x8_t::splat(-1); unsafe { diff --git a/crates/core_arch/src/arm_shared/neon/mod.rs b/crates/core_arch/src/arm_shared/neon/mod.rs index 84a3701cb7..0683d48ed3 100644 --- a/crates/core_arch/src/arm_shared/neon/mod.rs +++ b/crates/core_arch/src/arm_shared/neon/mod.rs @@ -62,8 +62,6 @@ types! { pub struct int16x4_t(4 x pub(crate) i16); /// Arm-specific 64-bit wide vector of four packed `u16`. pub struct uint16x4_t(4 x pub(crate) u16); - // Arm-specific 64-bit wide vector of four packed `f16`. - pub struct float16x4_t(4 x pub(crate) f16); /// Arm-specific 64-bit wide vector of four packed `p16`. pub struct poly16x4_t(4 x pub(crate) p16); /// Arm-specific 64-bit wide vector of two packed `i32`. @@ -89,8 +87,6 @@ types! { pub struct int16x8_t(8 x pub(crate) i16); /// Arm-specific 128-bit wide vector of eight packed `u16`. pub struct uint16x8_t(8 x pub(crate) u16); - // Arm-specific 128-bit wide vector of eight packed `f16`. - pub struct float16x8_t(8 x pub(crate) f16); /// Arm-specific 128-bit wide vector of eight packed `p16`. pub struct poly16x8_t(8 x pub(crate) p16); /// Arm-specific 128-bit wide vector of four packed `i32`. @@ -107,6 +103,15 @@ types! { pub struct poly64x2_t(2 x pub(crate) p64); } +types! { + #![unstable(feature = "stdarch_neon_f16", issue = "136306")] + + /// Arm-specific 64-bit wide vector of four packed `f16`. + pub struct float16x4_t(4 x pub(crate) f16); + /// Arm-specific 128-bit wide vector of eight packed `f16`. + pub struct float16x8_t(8 x pub(crate) f16); +} + /// Arm-specific type containing two `int8x8_t` vectors. #[repr(C)] #[derive(Copy, Clone, Debug)] diff --git a/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml b/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml index 89e02ec3be..33eb0a4a5a 100644 --- a/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml +++ b/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml @@ -14644,8 +14644,7 @@ intrinsics: - *neon-v7 - FnCall: [cfg_attr, [*test-is-arm, { FnCall: [assert_instr, ['vbsl']]}]] - FnCall: [cfg_attr, [*neon-target-aarch64-arm64ec, {FnCall: [assert_instr, ['bsl']]}]] - - *neon-not-arm-stable - - *neon-cfg-arm-unstable + - *neon-unstable-f16 safety: safe types: - ['vbslq_f16', 'uint16x8_t', 'float16x8_t', 'int16x8_t::splat(-1)']