//@ run-pass //@ ignore-backends: gcc #![feature(repr_simd, core_intrinsics)] #[path = "../../../auxiliary/minisimd.rs"] mod minisimd; use minisimd::*; use std::intrinsics::simd::simd_as; type V = Simd; fn main() { unsafe { let u: V:: = Simd([u32::MIN, u32::MAX]); let i: V = simd_as(u); assert_eq!(i[0], u[0] as i16); assert_eq!(i[1], u[1] as i16); } unsafe { let f: V:: = Simd([f32::MIN, f32::MAX]); let i: V = simd_as(f); assert_eq!(i[0], f[0] as i16); assert_eq!(i[1], f[1] as i16); } unsafe { let f: V:: = Simd([f32::MIN, f32::MAX]); let u: V = simd_as(f); assert_eq!(u[0], f[0] as u8); assert_eq!(u[1], f[1] as u8); } unsafe { let f: V:: = Simd([f64::MIN, f64::MAX]); let i: V = simd_as(f); assert_eq!(i[0], f[0] as isize); assert_eq!(i[1], f[1] as isize); } unsafe { let f: V:: = Simd([f64::MIN, f64::MAX]); let u: V = simd_as(f); assert_eq!(u[0], f[0] as usize); assert_eq!(u[1], f[1] as usize); } }