]>
Commit | Line | Data |
---|---|---|
94b46f34 XL |
1 | // compile-flags: -C no-prepopulate-passes |
2 | ||
3 | #![crate_type = "lib"] | |
4 | ||
5 | #![feature(repr_simd, platform_intrinsics)] | |
6 | #![allow(non_camel_case_types)] | |
7 | ||
8 | #[repr(simd)] | |
9 | #[derive(Copy, Clone, PartialEq, Debug)] | |
10 | pub struct f32x2(pub f32, pub f32); | |
11 | ||
12 | #[repr(simd)] | |
13 | #[derive(Copy, Clone, PartialEq, Debug)] | |
14 | pub struct f32x4(pub f32, pub f32, pub f32, pub f32); | |
15 | ||
16 | #[repr(simd)] | |
17 | #[derive(Copy, Clone, PartialEq, Debug)] | |
18 | pub struct f32x8(pub f32, pub f32, pub f32, pub f32, | |
19 | pub f32, pub f32, pub f32, pub f32); | |
20 | ||
21 | #[repr(simd)] | |
22 | #[derive(Copy, Clone, PartialEq, Debug)] | |
23 | pub struct f32x16(pub f32, pub f32, pub f32, pub f32, | |
24 | pub f32, pub f32, pub f32, pub f32, | |
25 | pub f32, pub f32, pub f32, pub f32, | |
26 | pub f32, pub f32, pub f32, pub f32); | |
27 | ||
28 | extern "platform-intrinsic" { | |
29 | fn simd_floor<T>(x: T) -> T; | |
30 | } | |
31 | ||
32 | // CHECK-LABEL: @floor_32x2 | |
33 | #[no_mangle] | |
34 | pub unsafe fn floor_32x2(a: f32x2) -> f32x2 { | |
cdc7bbd5 | 35 | // CHECK: call <2 x float> @llvm.floor.v2f32 |
94b46f34 XL |
36 | simd_floor(a) |
37 | } | |
38 | ||
39 | // CHECK-LABEL: @floor_32x4 | |
40 | #[no_mangle] | |
41 | pub unsafe fn floor_32x4(a: f32x4) -> f32x4 { | |
cdc7bbd5 | 42 | // CHECK: call <4 x float> @llvm.floor.v4f32 |
94b46f34 XL |
43 | simd_floor(a) |
44 | } | |
45 | ||
46 | // CHECK-LABEL: @floor_32x8 | |
47 | #[no_mangle] | |
48 | pub unsafe fn floor_32x8(a: f32x8) -> f32x8 { | |
cdc7bbd5 | 49 | // CHECK: call <8 x float> @llvm.floor.v8f32 |
94b46f34 XL |
50 | simd_floor(a) |
51 | } | |
52 | ||
53 | // CHECK-LABEL: @floor_32x16 | |
54 | #[no_mangle] | |
55 | pub unsafe fn floor_32x16(a: f32x16) -> f32x16 { | |
cdc7bbd5 | 56 | // CHECK: call <16 x float> @llvm.floor.v16f32 |
94b46f34 XL |
57 | simd_floor(a) |
58 | } | |
59 | ||
60 | #[repr(simd)] | |
61 | #[derive(Copy, Clone, PartialEq, Debug)] | |
62 | pub struct f64x2(pub f64, pub f64); | |
63 | ||
64 | #[repr(simd)] | |
65 | #[derive(Copy, Clone, PartialEq, Debug)] | |
66 | pub struct f64x4(pub f64, pub f64, pub f64, pub f64); | |
67 | ||
68 | #[repr(simd)] | |
69 | #[derive(Copy, Clone, PartialEq, Debug)] | |
70 | pub struct f64x8(pub f64, pub f64, pub f64, pub f64, | |
71 | pub f64, pub f64, pub f64, pub f64); | |
72 | ||
73 | // CHECK-LABEL: @floor_64x4 | |
74 | #[no_mangle] | |
75 | pub unsafe fn floor_64x4(a: f64x4) -> f64x4 { | |
cdc7bbd5 | 76 | // CHECK: call <4 x double> @llvm.floor.v4f64 |
94b46f34 XL |
77 | simd_floor(a) |
78 | } | |
79 | ||
80 | // CHECK-LABEL: @floor_64x2 | |
81 | #[no_mangle] | |
82 | pub unsafe fn floor_64x2(a: f64x2) -> f64x2 { | |
cdc7bbd5 | 83 | // CHECK: call <2 x double> @llvm.floor.v2f64 |
94b46f34 XL |
84 | simd_floor(a) |
85 | } | |
86 | ||
87 | // CHECK-LABEL: @floor_64x8 | |
88 | #[no_mangle] | |
89 | pub unsafe fn floor_64x8(a: f64x8) -> f64x8 { | |
cdc7bbd5 | 90 | // CHECK: call <8 x double> @llvm.floor.v8f64 |
94b46f34 XL |
91 | simd_floor(a) |
92 | } |