xref: /llvm-project/llvm/test/CodeGen/PowerPC/lower-intrinsics-nofast-mass.ll (revision 8ce13bc93be423d2a368f804ed18edf21b489c2e)
1; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s
2; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s
3
4declare float @llvm.cos.f32(float)
5declare float @llvm.exp.f32(float)
6declare float @llvm.log10.f32(float)
7declare float @llvm.log.f32(float)
8declare float @llvm.pow.f32(float, float)
9declare float @llvm.rint.f32(float)
10declare float @llvm.sin.f32(float)
11declare double @llvm.cos.f64(double)
12declare double @llvm.exp.f64(double)
13declare double @llvm.log.f64(double)
14declare double @llvm.log10.f64(double)
15declare double @llvm.pow.f64(double, double)
16declare double @llvm.sin.f64(double)
17
18
19; With no fast math flag specified per-function
20define float @cosf_f32_nofast(float %a) {
21; CHECK-LABEL: cosf_f32_nofast
22; CHECK-NOT: bl __xl_cosf
23; CHECK: blr
24entry:
25  %0 = tail call float @llvm.cos.f32(float %a)
26  ret float %0
27}
28
29; With no fast math flag specified per-function
30define float @expf_f32_nofast(float %a) {
31; CHECK-LABEL: expf_f32_nofast
32; CHECK-NOT: bl __xl_expf
33; CHECK: blr
34entry:
35  %0 = tail call float @llvm.exp.f32(float %a)
36  ret float %0
37}
38
39; With no fast math flag specified per-function
40define float @log10f_f32_nofast(float %a) {
41; CHECK-LABEL: log10f_f32_nofast
42; CHECK-NOT: bl __xl_log10f
43; CHECK: blr
44entry:
45  %0 = tail call float @llvm.log10.f32(float %a)
46  ret float %0
47}
48
49; With no fast math flag specified per-function
50define float @logf_f32_nofast(float %a) {
51; CHECK-LABEL: logf_f32_nofast
52; CHECK-NOT: bl __xl_logf
53; CHECK: blr
54entry:
55  %0 = tail call float @llvm.log.f32(float %a)
56  ret float %0
57}
58
59; With no fast math flag specified per-function
60define float @powf_f32_nofast(float %a, float %b) {
61; CHECK-LABEL: powf_f32_nofast
62; CHECK-NOT: bl __xl_powf
63; CHECK: blr
64entry:
65  %0 = tail call float @llvm.pow.f32(float %a, float %b)
66  ret float %0
67}
68
69; With no fast math flag specified per-function
70define float @rintf_f32_nofast(float %a) {
71; CHECK-LABEL: rintf_f32_nofast
72; CHECK-NOT: bl __xl_rintf
73; CHECK: blr
74entry:
75  %0 = tail call float @llvm.rint.f32(float %a)
76  ret float %0
77}
78
79; With no fast math flag specified per-function
80define float @sinf_f32_nofast(float %a) {
81; CHECK-LABEL: sinf_f32_nofast
82; CHECK-NOT: bl __xl_sinf
83; CHECK: blr
84entry:
85  %0 = tail call float @llvm.sin.f32(float %a)
86  ret float %0
87}
88
89; With no fast math flag specified per-function
90define double @cos_f64_nofast(double %a) {
91; CHECK-LABEL: cos_f64_nofast
92; CHECK-NOT: bl __xl_cos
93; CHECK: blr
94entry:
95  %0 = tail call double @llvm.cos.f64(double %a)
96  ret double %0
97}
98
99; With no fast math flag specified per-function
100define double @exp_f64_nofast(double %a) {
101; CHECK-LABEL: exp_f64_nofast
102; CHECK-NOT: bl __xl_exp
103; CHECK: blr
104entry:
105  %0 = tail call double @llvm.exp.f64(double %a)
106  ret double %0
107}
108
109; With no fast math flag specified per-function
110define double @log_f64_nofast(double %a) {
111; CHECK-LABEL: log_f64_nofast
112; CHECK-NOT: bl __xl_log
113; CHECK: blr
114entry:
115  %0 = tail call double @llvm.log.f64(double %a)
116  ret double %0
117}
118
119; With no fast math flag specified per-function
120define double @log10_f64_nofast(double %a) {
121; CHECK-LABEL: log10_f64_nofast
122; CHECK-NOT: bl __xl_log10
123; CHECK: blr
124entry:
125  %0 = tail call double @llvm.log10.f64(double %a)
126  ret double %0
127}
128
129; With no fast math flag specified per-function
130define double @pow_f64_nofast(double %a, double %b) {
131; CHECK-LABEL: pow_f64_nofast
132; CHECK-NOT: bl __xl_pow
133; CHECK: blr
134entry:
135  %0 = tail call double @llvm.pow.f64(double %a, double %b)
136  ret double %0
137}
138
139; With no fast math flag specified per-function
140define double @sin_f64_nofast(double %a) {
141; CHECK-LABEL: sin_f64_nofast
142; CHECK-NOT: bl __xl_sin
143; CHECK: blr
144entry:
145  %0 = tail call double @llvm.sin.f64(double %a)
146  ret double %0
147}
148