From 59dd5729f789e82ed0bd05ee47a57f2fa6586153 Mon Sep 17 00:00:00 2001 From: gnzlbg Date: Sat, 3 Nov 2018 12:41:02 +0100 Subject: [PATCH] [breaking change]: mask argument type of _mm_shuffle_ps --- library/stdarch/crates/core_arch/src/x86/sse.rs | 2 +- library/stdarch/crates/stdsimd-verify/tests/x86-intel.rs | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/library/stdarch/crates/core_arch/src/x86/sse.rs b/library/stdarch/crates/core_arch/src/x86/sse.rs index 2e36aa9211b4..2a2305207650 100644 --- a/library/stdarch/crates/core_arch/src/x86/sse.rs +++ b/library/stdarch/crates/core_arch/src/x86/sse.rs @@ -995,7 +995,7 @@ pub const fn _MM_SHUFFLE(z: u32, y: u32, x: u32, w: u32) -> i32 { #[cfg_attr(test, assert_instr(shufps, mask = 3))] #[rustc_args_required_const(2)] #[stable(feature = "simd_x86", since = "1.27.0")] -pub unsafe fn _mm_shuffle_ps(a: __m128, b: __m128, mask: u32) -> __m128 { +pub unsafe fn _mm_shuffle_ps(a: __m128, b: __m128, mask: i32) -> __m128 { let mask = (mask & 0xFF) as u8; macro_rules! shuffle_done { diff --git a/library/stdarch/crates/stdsimd-verify/tests/x86-intel.rs b/library/stdarch/crates/stdsimd-verify/tests/x86-intel.rs index 3e84069ee380..f1f2c7891484 100644 --- a/library/stdarch/crates/stdsimd-verify/tests/x86-intel.rs +++ b/library/stdarch/crates/stdsimd-verify/tests/x86-intel.rs @@ -155,6 +155,11 @@ fn verify_all_signatures() { // https://github.com/rust-lang/rfcs/issues/2512 "ud2" => continue, + // 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" => continue, _ => {} }