Skip to content

Commit 571954c

Browse files
committed
fix _mm256_permute2f128 miri tests
1 parent fd76e6d commit 571954c

File tree

2 files changed

+18
-20
lines changed

2 files changed

+18
-20
lines changed

src/tools/miri/tests/pass/shims/x86/intrinsics-x86-avx.rs

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -829,41 +829,44 @@ unsafe fn test_avx() {
829829

830830
#[target_feature(enable = "avx")]
831831
unsafe fn test_mm256_permute2f128_ps() {
832-
let a = _mm256_setr_ps(1., 2., 3., 4., 1., 2., 3., 4.);
833-
let b = _mm256_setr_ps(5., 6., 7., 8., 5., 6., 7., 8.);
834-
let r = _mm256_permute2f128_ps::<0x13>(a, b);
835-
let e = _mm256_setr_ps(5., 6., 7., 8., 1., 2., 3., 4.);
832+
let a = _mm256_setr_ps(11., 12., 13., 14., 15., 16., 17., 18.);
833+
let b = _mm256_setr_ps(21., 22., 23., 24., 25., 26., 27., 28.);
834+
let r = _mm256_permute2f128_ps::<0b0001_0011>(a, b);
835+
let e = _mm256_setr_ps(25., 26., 27., 28., 15., 16., 17., 18.);
836836
assert_eq_m256(r, e);
837837

838-
let r = _mm256_permute2f128_ps::<0x44>(a, b);
839-
let e = _mm256_setr_ps(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
840-
assert_eq_m256(r, e);
838+
// Setting bits 3 or 7 (zero-indexed) zeroes the corresponding field.
839+
let r = _mm256_permute2f128_ps::<0b1001_1011>(a, b);
840+
let z = _mm256_setr_ps(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
841+
assert_eq_m256(r, z);
841842
}
842843
test_mm256_permute2f128_ps();
843844

844845
#[target_feature(enable = "avx")]
845846
unsafe fn test_mm256_permute2f128_pd() {
846847
let a = _mm256_setr_pd(1., 2., 3., 4.);
847848
let b = _mm256_setr_pd(5., 6., 7., 8.);
848-
let r = _mm256_permute2f128_pd::<0x31>(a, b);
849+
let r = _mm256_permute2f128_pd::<0b0011_0001>(a, b);
849850
let e = _mm256_setr_pd(3., 4., 7., 8.);
850851
assert_eq_m256d(r, e);
851852

852-
let r = _mm256_permute2f128_pd::<0x44>(a, b);
853+
// Setting bits 3 or 7 (zero-indexed) zeroes the corresponding field.
854+
let r = _mm256_permute2f128_pd::<0b1011_1001>(a, b);
853855
let e = _mm256_setr_pd(0.0, 0.0, 0.0, 0.0);
854856
assert_eq_m256d(r, e);
855857
}
856858
test_mm256_permute2f128_pd();
857859

858860
#[target_feature(enable = "avx")]
859861
unsafe fn test_mm256_permute2f128_si256() {
860-
let a = _mm256_setr_epi32(1, 2, 3, 4, 1, 2, 3, 4);
861-
let b = _mm256_setr_epi32(5, 6, 7, 8, 5, 6, 7, 8);
862-
let r = _mm256_permute2f128_si256::<0x20>(a, b);
863-
let e = _mm256_setr_epi32(1, 2, 3, 4, 5, 6, 7, 8);
862+
let a = _mm256_setr_epi32(11, 12, 13, 14, 15, 16, 17, 18);
863+
let b = _mm256_setr_epi32(21, 22, 23, 24, 25, 26, 27, 28);
864+
let r = _mm256_permute2f128_si256::<0b0010_0000>(a, b);
865+
let e = _mm256_setr_epi32(11, 12, 13, 14, 21, 22, 23, 24);
864866
assert_eq_m256i(r, e);
865867

866-
let r = _mm256_permute2f128_si256::<0x44>(a, b);
868+
// Setting bits 3 or 7 (zero-indexed) zeroes the corresponding field.
869+
let r = _mm256_permute2f128_si256::<0b1010_1000>(a, b);
867870
let e = _mm256_setr_epi32(0, 0, 0, 0, 0, 0, 0, 0);
868871
assert_eq_m256i(r, e);
869872
}

src/tools/miri/tests/pass/shims/x86/intrinsics-x86-pause-without-sse2.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,5 @@ use std::arch::x86_64::*;
99

1010
fn main() {
1111
assert!(!is_x86_feature_detected!("sse2"));
12-
13-
unsafe {
14-
// This is a SSE2 intrinsic, but it behaves as a no-op when SSE2
15-
// is not available, so it is always safe to call.
16-
_mm_pause();
17-
}
12+
_mm_pause();
1813
}

0 commit comments

Comments
 (0)