]> git.proxmox.com Git - rustc.git/blame - src/test/codegen/simd-intrinsic/simd-intrinsic-float-floor.rs
New upstream version 1.53.0+dfsg1
[rustc.git] / src / test / codegen / simd-intrinsic / simd-intrinsic-float-floor.rs
CommitLineData
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)]
10pub struct f32x2(pub f32, pub f32);
11
12#[repr(simd)]
13#[derive(Copy, Clone, PartialEq, Debug)]
14pub struct f32x4(pub f32, pub f32, pub f32, pub f32);
15
16#[repr(simd)]
17#[derive(Copy, Clone, PartialEq, Debug)]
18pub 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)]
23pub 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
28extern "platform-intrinsic" {
29 fn simd_floor<T>(x: T) -> T;
30}
31
32// CHECK-LABEL: @floor_32x2
33#[no_mangle]
34pub 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]
41pub 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]
48pub 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]
55pub 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)]
62pub struct f64x2(pub f64, pub f64);
63
64#[repr(simd)]
65#[derive(Copy, Clone, PartialEq, Debug)]
66pub struct f64x4(pub f64, pub f64, pub f64, pub f64);
67
68#[repr(simd)]
69#[derive(Copy, Clone, PartialEq, Debug)]
70pub 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]
75pub 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]
82pub 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]
89pub unsafe fn floor_64x8(a: f64x8) -> f64x8 {
cdc7bbd5 90 // CHECK: call <8 x double> @llvm.floor.v8f64
94b46f34
XL
91 simd_floor(a)
92}