diff options
5 files changed, 13 insertions, 17 deletions
diff --git a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs index d797c3c5894..1842ad646e8 100644 --- a/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs +++ b/library/stdarch/crates/core_arch/src/arm_shared/neon/generated.rs @@ -10880,7 +10880,7 @@ pub fn vdupq_n_p16(value: p16) -> poly16x8_t { target_arch = "arm", unstable(feature = "stdarch_arm_neon_intrinsics", issue = "111800") )] -pub fn vdupq_n_p8(value: u8) -> poly8x16_t { +pub fn vdupq_n_p8(value: p8) -> poly8x16_t { poly8x16_t::splat(value) } #[doc = "Duplicate vector element to vector or scalar"] diff --git a/library/stdarch/crates/core_arch/src/x86/sse.rs b/library/stdarch/crates/core_arch/src/x86/sse.rs index a845e822fc2..1eca66adc2c 100644 --- a/library/stdarch/crates/core_arch/src/x86/sse.rs +++ b/library/stdarch/crates/core_arch/src/x86/sse.rs @@ -3050,7 +3050,7 @@ mod tests { } #[simd_test(enable = "sse")] - unsafe fn test_mm_shuffle() { + unsafe fn test_MM_SHUFFLE() { assert_eq!(_MM_SHUFFLE(0, 1, 1, 3), 0b00_01_01_11); assert_eq!(_MM_SHUFFLE(3, 1, 1, 0), 0b11_01_01_00); assert_eq!(_MM_SHUFFLE(1, 2, 2, 1), 0b01_10_10_01); diff --git a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml index a3b756d5573..d58c2ed10e4 100644 --- a/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml +++ b/library/stdarch/crates/stdarch-gen-arm/spec/neon/arm_shared.spec.yml @@ -14937,7 +14937,7 @@ intrinsics: - ['vdupq_n_u32', 'u32', 'uint32x4_t', 'vdup.32', 'dup', 'uint32x4_t::splat(value)'] - ['vdupq_n_f32', 'f32', 'float32x4_t', 'vdup.32', 'dup', 'float32x4_t::splat(value)'] - ['vdupq_n_u64', 'u64', 'uint64x2_t', 'vmov', 'dup', 'uint64x2_t::splat(value)'] - - ['vdupq_n_p8', 'u8', 'poly8x16_t', 'vdup.8', 'dup', 'poly8x16_t::splat(value)'] + - ['vdupq_n_p8', 'p8', 'poly8x16_t', 'vdup.8', 'dup', 'poly8x16_t::splat(value)'] - ['vdupq_n_p16', 'p16', 'poly16x8_t', 'vdup.16', 'dup', 'poly16x8_t::splat(value)'] - ['vdup_n_s8', 'i8', 'int8x8_t', 'vdup.8', 'dup', 'int8x8_t::splat(value)'] - ['vdup_n_s16', 'i16', 'int16x4_t', 'vdup.16', 'dup', 'int16x4_t::splat(value)'] diff --git a/library/stdarch/crates/stdarch-verify/src/lib.rs b/library/stdarch/crates/stdarch-verify/src/lib.rs index a07c1505751..38ac9864b52 100644 --- a/library/stdarch/crates/stdarch-verify/src/lib.rs +++ b/library/stdarch/crates/stdarch-verify/src/lib.rs @@ -70,14 +70,7 @@ fn functions(input: TokenStream, dirs: &[&str]) -> TokenStream { } assert!(!tests.is_empty()); - functions.retain(|(f, _)| { - if let syn::Visibility::Public(_) = f.vis { - if f.sig.unsafety.is_some() { - return true; - } - } - false - }); + functions.retain(|(f, _)| matches!(f.vis, syn::Visibility::Public(_))); assert!(!functions.is_empty()); let input = proc_macro2::TokenStream::from(input); diff --git a/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs b/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs index 6719c066083..02b6bdc7684 100644 --- a/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs +++ b/library/stdarch/crates/stdarch-verify/tests/x86-intel.rs @@ -244,6 +244,7 @@ fn verify_all_signatures() { "_fxrstor", "_fxrstor64", "_xend", + "_xabort_code", // Aliases "_mm_comige_ss", "_mm_cvt_ss2si", @@ -290,13 +291,10 @@ fn verify_all_signatures() { "__cpuid_count" | "__cpuid" | "__get_cpuid_max" | + "_MM_SHUFFLE" | + "_xabort_code" | // Not listed with intel, but manually verified - "cmpxchg16b" | - // Intel requires the mask argument for _mm_shuffle_ps to be an - // unsigned integer, but all other _mm_shuffle_.. intrinsics - // take a signed-integer. This breaks `_MM_SHUFFLE` for - // `_mm_shuffle_ps` - "_mm_shuffle_ps" + "cmpxchg16b" => continue, _ => {} } @@ -871,6 +869,11 @@ fn equate( // The _mm_stream_load_si128 intrinsic take a mutable pointer in the intrinsics // guide even though they never write through the pointer (&Type::ConstPtr(&Type::M128I), "void*") if intrinsic.name == "_mm_stream_load_si128" => {} + /// Intel requires the mask argument for _mm_shuffle_ps to be an + // unsigned integer, but all other _mm_shuffle_.. intrinsics + // take a signed-integer. This breaks `_MM_SHUFFLE` for + // `_mm_shuffle_ps` + (&Type::PrimSigned(32), "unsigned int") if intrinsic.name == "_mm_shuffle_ps" => {} _ => bail!( "failed to equate: `{intel}` and {t:?} for {}", |
