4 #![feature(platform_intrinsics)]
5 #![feature(staged_api)]
6 #![stable(feature = "foo", since = "1.33.7")]
7 #![allow(non_camel_case_types)]
9 #[repr(simd)] struct i8x1(i8);
10 #[repr(simd)] struct u16x2(u16, u16);
11 #[repr(simd)] struct f32x4(f32, f32, f32, f32);
13 extern "platform-intrinsic" {
14 #[rustc_const_stable(feature = "foo", since = "1.3.37")]
15 fn simd_insert<T, U>(x: T, idx: u32, val: U) -> T;
16 #[rustc_const_stable(feature = "foo", since = "1.3.37")]
17 fn simd_extract<T, U>(x: T, idx: u32) -> U;
22 const U: i8x1 = i8x1(13);
23 const V: i8x1 = unsafe { simd_insert(U, 0_u32, 42_i8) };
25 const Y0: i8 = unsafe { simd_extract(V, 0) };
30 const U: u16x2 = u16x2(13, 14);
31 const V: u16x2 = unsafe { simd_insert(U, 1_u32, 42_u16) };
34 const Y0: u16 = unsafe { simd_extract(V, 0) };
35 const Y1: u16 = unsafe { simd_extract(V, 1) };
42 const U: f32x4 = f32x4(13., 14., 15., 16.);
43 const V: f32x4 = unsafe { simd_insert(U, 1_u32, 42_f32) };
48 const Y0: f32 = unsafe { simd_extract(V, 0) };
49 const Y1: f32 = unsafe { simd_extract(V, 1) };
50 const Y2: f32 = unsafe { simd_extract(V, 2) };
51 const Y3: f32 = unsafe { simd_extract(V, 3) };