2 // compile-flags: -C no-prepopulate-passes
6 #![allow(non_camel_case_types)]
7 #![feature(repr_simd, platform_intrinsics, min_const_generics)]
10 #[derive(Copy, Clone)]
11 pub struct S<const N: usize>([f32; N]);
14 #[derive(Copy, Clone)]
15 pub struct T([f32; 4]);
18 #[derive(Copy, Clone)]
19 pub struct U(f32, f32, f32, f32);
21 // CHECK-LABEL: @build_array_s
23 pub fn build_array_s(x: [f32; 4]) -> S<4> {
24 // CHECK: call void @llvm.memcpy.{{.+}}({{.*}}, i{{[0-9]+}} 16, i1 false)
25 // CHECK: call void @llvm.memcpy.{{.+}}({{.*}}, i{{[0-9]+}} 16, i1 false)
29 // CHECK-LABEL: @build_array_t
31 pub fn build_array_t(x: [f32; 4]) -> T {
32 // CHECK: call void @llvm.memcpy.{{.+}}({{.*}}, i{{[0-9]+}} 16, i1 false)
33 // CHECK: call void @llvm.memcpy.{{.+}}({{.*}}, i{{[0-9]+}} 16, i1 false)
37 // CHECK-LABEL: @build_array_u
39 pub fn build_array_u(x: [f32; 4]) -> U {
40 // CHECK: call void @llvm.memcpy.{{.+}}({{.*}}, i{{[0-9]+}} 16, i1 false)
41 // CHECK: call void @llvm.memcpy.{{.+}}({{.*}}, i{{[0-9]+}} 16, i1 false)
42 unsafe { std::mem::transmute(x) }