]> git.lizzy.rs Git - rust.git/blob - src/test/ui/simd/intrinsic/generic-bitmask.rs
Stabilize File::options()
[rust.git] / src / test / ui / simd / intrinsic / generic-bitmask.rs
1 // build-fail
2
3 // Test that the simd_bitmask intrinsic produces ok-ish error
4 // messages when misused.
5
6 #![feature(repr_simd, platform_intrinsics)]
7 #![allow(non_camel_case_types)]
8
9 #[repr(simd)]
10 #[derive(Copy, Clone)]
11 pub struct u32x2([u32; 2]);
12
13 #[repr(simd)]
14 #[derive(Copy, Clone)]
15 pub struct u32x4([u32; 4]);
16
17 #[repr(simd)]
18 #[derive(Copy, Clone)]
19 struct u8x8([u8; 8]);
20
21 #[repr(simd)]
22 #[derive(Copy, Clone)]
23 struct u8x16([u8; 16]);
24
25 #[repr(simd)]
26 #[derive(Copy, Clone)]
27 struct u8x32([u8; 32]);
28
29 #[repr(simd)]
30 #[derive(Copy, Clone)]
31 struct u8x64([u8; 64]);
32
33 extern "platform-intrinsic" {
34     fn simd_bitmask<T, U>(x: T) -> U;
35 }
36
37 fn main() {
38     let m2 = u32x2([0; 2]);
39     let m4 = u32x4([0; 4]);
40     let m8 = u8x8([0; 8]);
41     let m16 = u8x16([0; 16]);
42     let m32 = u8x32([0; 32]);
43     let m64 = u8x64([0; 64]);
44
45     unsafe {
46         let _: u8 = simd_bitmask(m2);
47         let _: u8 = simd_bitmask(m4);
48         let _: u8 = simd_bitmask(m8);
49         let _: u16 = simd_bitmask(m16);
50         let _: u32 = simd_bitmask(m32);
51         let _: u64 = simd_bitmask(m64);
52
53         let _: u16 = simd_bitmask(m2);
54         //~^ ERROR bitmask `u16`, expected `u8`
55
56         let _: u16 = simd_bitmask(m8);
57         //~^ ERROR bitmask `u16`, expected `u8`
58
59         let _: u32 = simd_bitmask(m16);
60         //~^ ERROR bitmask `u32`, expected `u16`
61
62         let _: u64 = simd_bitmask(m32);
63         //~^ ERROR bitmask `u64`, expected `u32`
64
65         let _: u128 = simd_bitmask(m64);
66         //~^ ERROR bitmask `u128`, expected `u64`
67
68    }
69 }