]> git.lizzy.rs Git - rust.git/blob - src/test/ui/simd/shuffle.rs
Auto merge of #95454 - randomicon00:fix95444, r=wesleywiser
[rust.git] / src / test / ui / simd / shuffle.rs
1 //run-pass
2 #![feature(repr_simd, platform_intrinsics)]
3
4 extern "platform-intrinsic" {
5     fn simd_shuffle<T, I, U>(a: T, b: T, i: I) -> U;
6 }
7
8 #[derive(Copy, Clone)]
9 #[repr(simd)]
10 struct Simd<T, const N: usize>([T; N]);
11
12 fn main() {
13     const I1: [u32; 4] = [0, 2, 4, 6];
14     const I2: [u32; 2] = [1, 5];
15     let a = Simd::<u8, 4>([0, 1, 2, 3]);
16     let b = Simd::<u8, 4>([4, 5, 6, 7]);
17     unsafe {
18         let x: Simd<u8, 4> = simd_shuffle(a, b, I1);
19         assert_eq!(x.0, [0, 2, 4, 6]);
20
21         let y: Simd<u8, 2> = simd_shuffle(a, b, I2);
22         assert_eq!(y.0, [1, 5]);
23     }
24 }