]> git.proxmox.com Git - rustc.git/blob - src/test/ui/simd/intrinsic/generic-shuffle.rs
New upstream version 1.66.0+dfsg1
[rustc.git] / src / test / ui / simd / intrinsic / generic-shuffle.rs
1 // build-fail
2
3 // Test that the simd_shuffle intrinsic produces ok-ish error
4 // messages when misused.
5
6 #![feature(repr_simd, platform_intrinsics)]
7
8 #[repr(simd)]
9 #[derive(Copy, Clone)]
10 pub struct Simd<T, const N: usize>([T; N]);
11
12 extern "platform-intrinsic" {
13 fn simd_shuffle<T, I, U>(a: T, b: T, i: I) -> U;
14 }
15
16 fn main() {
17 const I: [u32; 2] = [0; 2];
18 const I2: [f32; 2] = [0.; 2];
19 let v = Simd::<u32, 4>([0; 4]);
20
21 unsafe {
22 let _: Simd<u32, 2> = simd_shuffle(v, v, I);
23
24 let _: Simd<u32, 4> = simd_shuffle(v, v, I);
25 //~^ ERROR invalid monomorphization of `simd_shuffle` intrinsic
26
27 let _: Simd<f32, 2> = simd_shuffle(v, v, I);
28 //~^ ERROR invalid monomorphization of `simd_shuffle` intrinsic
29
30 let _: Simd<u32, 2> = simd_shuffle(v, v, I2);
31 //~^ ERROR invalid monomorphization of `simd_shuffle` intrinsic
32 }
33 }