]> git.proxmox.com Git - rustc.git/blob - src/test/codegen/simd-intrinsic/simd-intrinsic-float-powi.rs
New upstream version 1.40.0+dfsg1
[rustc.git] / src / test / codegen / simd-intrinsic / simd-intrinsic-float-powi.rs
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_fpowi<T>(x: T, b: i32) -> T;
30 }
31
32 // CHECK-LABEL: @fpowi_32x2
33 #[no_mangle]
34 pub unsafe fn fpowi_32x2(a: f32x2, b: i32) -> f32x2 {
35 // CHECK: call fast <2 x float> @llvm.powi.v2f32
36 simd_fpowi(a, b)
37 }
38
39 // CHECK-LABEL: @fpowi_32x4
40 #[no_mangle]
41 pub unsafe fn fpowi_32x4(a: f32x4, b: i32) -> f32x4 {
42 // CHECK: call fast <4 x float> @llvm.powi.v4f32
43 simd_fpowi(a, b)
44 }
45
46 // CHECK-LABEL: @fpowi_32x8
47 #[no_mangle]
48 pub unsafe fn fpowi_32x8(a: f32x8, b: i32) -> f32x8 {
49 // CHECK: call fast <8 x float> @llvm.powi.v8f32
50 simd_fpowi(a, b)
51 }
52
53 // CHECK-LABEL: @fpowi_32x16
54 #[no_mangle]
55 pub unsafe fn fpowi_32x16(a: f32x16, b: i32) -> f32x16 {
56 // CHECK: call fast <16 x float> @llvm.powi.v16f32
57 simd_fpowi(a, b)
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: @fpowi_64x4
74 #[no_mangle]
75 pub unsafe fn fpowi_64x4(a: f64x4, b: i32) -> f64x4 {
76 // CHECK: call fast <4 x double> @llvm.powi.v4f64
77 simd_fpowi(a, b)
78 }
79
80 // CHECK-LABEL: @fpowi_64x2
81 #[no_mangle]
82 pub unsafe fn fpowi_64x2(a: f64x2, b: i32) -> f64x2 {
83 // CHECK: call fast <2 x double> @llvm.powi.v2f64
84 simd_fpowi(a, b)
85 }
86
87 // CHECK-LABEL: @fpowi_64x8
88 #[no_mangle]
89 pub unsafe fn fpowi_64x8(a: f64x8, b: i32) -> f64x8 {
90 // CHECK: call fast <8 x double> @llvm.powi.v8f64
91 simd_fpowi(a, b)
92 }