[Alignment][NFC] migrate DataLayout internal struct to llvm::Align
[llvm-core.git] / test / CodeGen / AArch64 / sincospow-vector-expansion.ll
blobb70f9b98916af52137f58f9a08d5f4ed8c2f6b78
1 ; RUN: llc -o - %s -verify-machineinstrs -mtriple=aarch64-linux-gnu -mattr=+neon | FileCheck %s
2 ; RUN: llc -o - %s -verify-machineinstrs -mtriple=aarch64-linux-gnu \
3 ; RUN:     -mattr=+neon -global-isel -global-isel-abort=2 \
4 ; RUN:     -pass-remarks-missed=gisel* \
5 ; RUN:     2>&1 | FileCheck %s  --check-prefixes=FALLBACK,GISEL
7 ; FALLBACK-NOT: remark{{.*}}test_cos_v2f32
8 define <2 x float> @test_cos_v2f64(<2 x double> %v1) {
9 ; CHECK-LABEL: test_cos_v2f64:
10 ; CHECK: bl cos
11 ; CHECK: bl cos
12 ; GISEL-LABEL: test_cos_v2f64:
13 ; GISEL: bl cos
14 ; GISEL: bl cos
15   %1 = call <2 x double> @llvm.cos.v2f64(<2 x double> %v1)
16   %2 = fptrunc <2 x double> %1 to <2 x float>
17   ret <2 x float> %2
20 ; FALLBACK-NOT: remark{{.*}}test_sin_v2f32
21 define <2 x float> @test_sin_v2f64(<2 x double> %v1) {
22 ; CHECK-LABEL: test_sin_v2f64:
23 ; CHECK: bl sin
24 ; CHECK: bl sin
25 ; GISEL-LABEL: test_sin_v2f64:
26 ; GISEL: bl sin
27 ; GISEL: bl sin
28   %1 = call <2 x double> @llvm.sin.v2f64(<2 x double> %v1)
29   %2 = fptrunc <2 x double> %1 to <2 x float>
30   ret <2 x float> %2
33 define <2 x float> @test_pow_v2f64(<2 x double> %v1, <2 x double> %v2) {
34 ; CHECK-LABEL: test_pow_v2f64:
35 ; CHECK: bl pow
36 ; CHECK: bl pow
37   %1 = call <2 x double> @llvm.pow.v2f64(<2 x double> %v1, <2 x double> %v2)
38   %2 = fptrunc <2 x double> %1 to <2 x float>
39   ret <2 x float> %2
42 declare <2 x double> @llvm.cos.v2f64(<2 x double>)
43 declare <2 x double> @llvm.sin.v2f64(<2 x double>)
44 declare <2 x double> @llvm.pow.v2f64(<2 x double>, <2 x double>)
46 ; FALLBACK-NOT: remark{{.*}}test_cos_v2f32
47 define <2 x float> @test_cos_v2f32(<2 x float> %v1) {
48 ; CHECK-LABEL: test_cos_v2f32:
49 ; CHECK: bl cos
50 ; CHECK: bl cos
51 ; GISEL-LABEL: test_cos_v2f32:
52 ; GISEL: bl cos
53 ; GISEL: bl cos
54   %1 = call <2 x float> @llvm.cos.v2f32(<2 x float> %v1)
55   ret <2 x float> %1
58 ; FALLBACK-NOT: remark{{.*}}test_sin_v2f32
59 define <2 x float> @test_sin_v2f32(<2 x float> %v1) {
60 ; CHECK-LABEL: test_sin_v2f32:
61 ; CHECK: bl sin
62 ; CHECK: bl sin
63 ; GISEL-LABEL: test_sin_v2f32:
64 ; GISEL: bl sin
65 ; GISEL: bl sin
66   %1 = call <2 x float> @llvm.sin.v2f32(<2 x float> %v1)
67   ret <2 x float> %1
70 define <2 x float> @test_pow_v2f32(<2 x float> %v1, <2 x float> %v2) {
71 ; CHECK-LABEL: test_pow_v2f32:
72 ; CHECK: bl pow
73 ; CHECK: bl pow
74   %1 = call <2 x float> @llvm.pow.v2f32(<2 x float> %v1, <2 x float> %v2)
75   ret <2 x float> %1
78 declare <2 x float> @llvm.cos.v2f32(<2 x float>)
79 declare <2 x float> @llvm.sin.v2f32(<2 x float>)
80 declare <2 x float> @llvm.pow.v2f32(<2 x float>, <2 x float>)
82 ; FALLBACK-NOT: remark{{.*}}test_cos_v4f32
83 define <4 x float> @test_cos_v4f32(<4 x float> %v1) {
84 ; CHECK-LABEL: test_cos_v4f32:
85 ; CHECK: bl cos
86 ; CHECK: bl cos
87 ; CHECK: bl cos
88 ; CHECK: bl cos
89 ; GISEL-LABEL: test_cos_v4f32:
90 ; GISEL: bl cos
91 ; GISEL: bl cos
92 ; GISEL: bl cos
93 ; GISEL: bl cos
94   %1 = call <4 x float> @llvm.cos.v4f32(<4 x float> %v1)
95   ret <4 x float> %1
98 ; FALLBACK-NOT: remark{{.*}}test_sin_v4f32
99 define <4 x float> @test_sin_v4f32(<4 x float> %v1) {
100 ; CHECK-LABEL: test_sin_v4f32:
101 ; CHECK: bl sin
102 ; CHECK: bl sin
103 ; CHECK: bl sin
104 ; CHECK: bl sin
105 ; GISEL-LABEL: test_sin_v4f32:
106 ; GISEL: bl sin
107 ; GISEL: bl sin
108 ; GISEL: bl sin
109 ; GISEL: bl sin
110   %1 = call <4 x float> @llvm.sin.v4f32(<4 x float> %v1)
111   ret <4 x float> %1
114 define <4 x float> @test_pow_v4f32(<4 x float> %v1, <4 x float> %v2) {
115 ; CHECK-LABEL: test_pow_v4f32:
116 ; CHECK: bl pow
117 ; CHECK: bl pow
118 ; CHECK: bl pow
119 ; CHECK: bl pow
120   %1 = call <4 x float> @llvm.pow.v4f32(<4 x float> %v1, <4 x float> %v2)
121   ret <4 x float> %1
124 declare <4 x float> @llvm.cos.v4f32(<4 x float>)
125 declare <4 x float> @llvm.sin.v4f32(<4 x float>)
126 declare <4 x float> @llvm.pow.v4f32(<4 x float>, <4 x float>)