//@ build-fail // Test that the simd_bitmask intrinsic produces ok-ish error // messages when misused. #![feature(repr_simd, intrinsics)] #![allow(non_camel_case_types)] #[repr(simd)] #[derive(Copy, Clone)] pub struct u32x2([u32; 2]); #[repr(simd)] #[derive(Copy, Clone)] pub struct u32x4([u32; 4]); #[repr(simd)] #[derive(Copy, Clone)] struct u8x8([u8; 8]); #[repr(simd)] #[derive(Copy, Clone)] struct u8x16([u8; 16]); #[repr(simd)] #[derive(Copy, Clone)] struct u8x32([u8; 32]); #[repr(simd)] #[derive(Copy, Clone)] struct u8x64([u8; 64]); extern "rust-intrinsic" { fn simd_bitmask(x: T) -> U; } fn main() { let m2 = u32x2([0; 2]); let m4 = u32x4([0; 4]); let m8 = u8x8([0; 8]); let m16 = u8x16([0; 16]); let m32 = u8x32([0; 32]); let m64 = u8x64([0; 64]); unsafe { let _: u8 = simd_bitmask(m2); let _: u8 = simd_bitmask(m4); let _: u8 = simd_bitmask(m8); let _: u16 = simd_bitmask(m16); let _: u32 = simd_bitmask(m32); let _: u64 = simd_bitmask(m64); let _: u16 = simd_bitmask(m2); //~^ ERROR invalid monomorphization of `simd_bitmask` intrinsic let _: u16 = simd_bitmask(m8); //~^ ERROR invalid monomorphization of `simd_bitmask` intrinsic let _: u32 = simd_bitmask(m16); //~^ ERROR invalid monomorphization of `simd_bitmask` intrinsic let _: u64 = simd_bitmask(m32); //~^ ERROR invalid monomorphization of `simd_bitmask` intrinsic let _: u128 = simd_bitmask(m64); //~^ ERROR invalid monomorphization of `simd_bitmask` intrinsic } }