diff options
| author | Ralf Jung <post@ralfj.de> | 2023-09-30 23:29:17 +0200 |
|---|---|---|
| committer | Ralf Jung <post@ralfj.de> | 2023-09-30 23:29:17 +0200 |
| commit | 9a86bba8310595bc5ae3369a23dca3eddf3141b7 (patch) | |
| tree | 026895155c4ae8c52ce226e03e6980d6199815ed /src/tools/miri/tests/pass | |
| parent | d62833861500038cdceb3259fece79d9a9b67e9f (diff) | |
| parent | bb6c66be3793ac5c738eeac91ecdc4b99388d0b4 (diff) | |
| download | rust-9a86bba8310595bc5ae3369a23dca3eddf3141b7.tar.gz rust-9a86bba8310595bc5ae3369a23dca3eddf3141b7.zip | |
Merge from rustc
Diffstat (limited to 'src/tools/miri/tests/pass')
| -rw-r--r-- | src/tools/miri/tests/pass/portable-simd.rs | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/tools/miri/tests/pass/portable-simd.rs b/src/tools/miri/tests/pass/portable-simd.rs index ee67a65a4f9..c1f5618c163 100644 --- a/src/tools/miri/tests/pass/portable-simd.rs +++ b/src/tools/miri/tests/pass/portable-simd.rs @@ -1,5 +1,6 @@ //@compile-flags: -Zmiri-strict-provenance -#![feature(portable_simd, platform_intrinsics)] +#![feature(portable_simd, platform_intrinsics, adt_const_params, inline_const)] +#![allow(incomplete_features)] use std::simd::*; extern "platform-intrinsic" { @@ -390,6 +391,8 @@ fn simd_intrinsics() { fn simd_reduce_any<T>(x: T) -> bool; fn simd_reduce_all<T>(x: T) -> bool; fn simd_select<M, T>(m: M, yes: T, no: T) -> T; + fn simd_shuffle_generic<T, U, const IDX: &'static [u32]>(x: T, y: T) -> U; + fn simd_shuffle<T, IDX, U>(x: T, y: T, idx: IDX) -> U; } unsafe { // Make sure simd_eq returns all-1 for `true` @@ -413,6 +416,22 @@ fn simd_intrinsics() { simd_select(i8x4::from_array([0, -1, -1, 0]), b, a), i32x4::from_array([10, 2, 10, 10]) ); + assert_eq!( + simd_shuffle_generic::<_, i32x4, {&[3, 1, 0, 2]}>(a, b), + a, + ); + assert_eq!( + simd_shuffle::<_, _, i32x4>(a, b, const {[3, 1, 0, 2]}), + a, + ); + assert_eq!( + simd_shuffle_generic::<_, i32x4, {&[7, 5, 4, 6]}>(a, b), + i32x4::from_array([4, 2, 1, 10]), + ); + assert_eq!( + simd_shuffle::<_, _, i32x4>(a, b, const {[7, 5, 4, 6]}), + i32x4::from_array([4, 2, 1, 10]), + ); } } |
