xref: /llvm-project/llvm/test/Transforms/EarlyCSE/math-1.ll (revision ac696ac4530fb3df626195e94e83649bf7114754)
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2; RUN: opt -passes=early-cse -earlycse-debug-hash -S -o - %s | FileCheck %s
3
4declare double @acos(double) #0
5define double @f_acos() {
6; CHECK-LABEL: @f_acos(
7; CHECK-NEXT:    ret double 0.000000e+00
8;
9  %res = tail call fast double @acos(double 1.0)
10  ret double %res
11}
12
13declare float @asinf(float) #0
14define float @f_asinf() {
15; CHECK-LABEL: @f_asinf(
16; CHECK-NEXT:    ret float 0x3FF921FB{{.+}}
17;
18  %res = tail call fast float @asinf(float 1.0)
19  ret float %res
20}
21
22declare double @atan(double) #0
23define double @f_atan() {
24; CHECK-LABEL: @f_atan(
25; CHECK-NEXT:    ret double 0x3FE921FB
26;
27  %res = tail call fast double @atan(double 1.0)
28  ret double %res
29}
30
31declare float @cosf(float) #0
32define float @f_cosf() {
33; CHECK-LABEL: @f_cosf(
34; CHECK-NEXT:    ret float 0x3FE14A2{{.+}}
35;
36  %res = tail call fast float @cosf(float 1.0)
37  ret float %res
38}
39
40declare float @llvm.cos.f32(float)
41define float @i_cosf() {
42; CHECK-LABEL: @i_cosf(
43; CHECK-NEXT:    ret float 0x3FE14A2
44;
45  %res = tail call fast float @llvm.cos.f32(float 1.0)
46  ret float %res
47}
48
49declare double @cosh(double) #0
50define double @f_cosh() {
51; CHECK-LABEL: @f_cosh(
52; CHECK-NEXT:    ret double 0x3FF8B075{{.+}}
53;
54  %res = tail call fast double @cosh(double 1.0)
55  ret double %res
56}
57
58declare float @expf(float) #0
59define float @f_expf() {
60; CHECK-LABEL: @f_expf(
61; CHECK-NEXT:    ret float 0x4005BF0A{{.+}}
62;
63  %res = tail call fast float @expf(float 1.0)
64  ret float %res
65}
66
67declare float @llvm.exp.f32(float)
68define float @i_expf() {
69; CHECK-LABEL: @i_expf(
70; CHECK-NEXT:    ret float 0x4005BF0A{{.+}}
71;
72  %res = tail call fast float @llvm.exp.f32(float 1.0)
73  ret float %res
74}
75
76declare double @exp2(double) #0
77define double @f_exp2() {
78; CHECK-LABEL: @f_exp2(
79; CHECK-NEXT:    ret double 2.000000e+00
80;
81  %res = tail call fast double @exp2(double 1.0)
82  ret double %res
83}
84
85declare double @llvm.exp2.f64(double)
86define double @i_exp2() {
87; CHECK-LABEL: @i_exp2(
88; CHECK-NEXT:    ret double 2.000000e+00
89;
90  %res = tail call fast double @llvm.exp2.f64(double 1.0)
91  ret double %res
92}
93
94; FIXME: exp10() is not widely supported.
95declare float @exp10f(float) #0
96define float @f_exp10f() {
97; CHECK-LABEL: @f_exp10f(
98; CHECK-NEXT:    [[RES:%.*]] = tail call float @exp10f(float 1.000000e+00)
99; CHECK-NEXT:    ret float [[RES]]
100;
101  %res = tail call float @exp10f(float 1.0)
102  ret float %res
103}
104
105declare double @log(double) #0
106define double @f_log() {
107; CHECK-LABEL: @f_log(
108; CHECK-NEXT:    ret double 0.000000e+00
109;
110  %res = tail call fast double @log(double 1.0)
111  ret double %res
112}
113
114declare double @llvm.log.f64(double)
115define double @i_log() {
116; CHECK-LABEL: @i_log(
117; CHECK-NEXT:    ret double 0.000000e+00
118;
119  %res = tail call fast double @llvm.log.f64(double 1.0)
120  ret double %res
121}
122
123declare float @log2f(float) #0
124define float @f_log2f() {
125; CHECK-LABEL: @f_log2f(
126; CHECK-NEXT:    ret float 0.000000e+00
127;
128  %res = tail call fast float @log2f(float 1.0)
129  ret float %res
130}
131
132declare float @llvm.log2.f32(float)
133define float @i_log2f() {
134; CHECK-LABEL: @i_log2f(
135; CHECK-NEXT:    ret float 0.000000e+00
136;
137  %res = tail call fast float @llvm.log2.f32(float 1.0)
138  ret float %res
139}
140
141declare double @log10(double) #0
142define double @f_log10() {
143; CHECK-LABEL: @f_log10(
144; CHECK-NEXT:    ret double 0.000000e+00
145;
146  %res = tail call fast double @log10(double 1.0)
147  ret double %res
148}
149
150declare float @sinf(float) #0
151define float @f_sinf() {
152; CHECK-LABEL: @f_sinf(
153; CHECK-NEXT:    ret float 0x3FEAED54{{.+}}
154;
155  %res = tail call fast float @sinf(float 1.0)
156  ret float %res
157}
158
159declare double @sinh(double) #0
160define double @f_sinh() {
161; CHECK-LABEL: @f_sinh(
162; CHECK-NEXT:    ret double 0x3FF2CD9F{{.+}}
163;
164  %res = tail call fast double @sinh(double 1.0)
165  ret double %res
166}
167
168declare float @sqrtf(float) #0
169define float @f_sqrtf() {
170; CHECK-LABEL: @f_sqrtf(
171; CHECK-NEXT:    ret float 1.000000e+00
172;
173  %res = tail call fast float @sqrtf(float 1.0)
174  ret float %res
175}
176
177declare double @tan(double) #0
178define double @f_tan() {
179; CHECK-LABEL: @f_tan(
180; CHECK-NEXT:    ret double 0x3FF8EB24{{.+}}
181;
182  %res = tail call fast double @tan(double 1.0)
183  ret double %res
184}
185
186declare float @tanhf(float) #0
187define float @f_tanhf() {
188; CHECK-LABEL: @f_tanhf(
189; CHECK-NEXT:    [[RES:%.*]] = tail call fast float @tanhf(float 1.000000e+00)
190; CHECK-NEXT:    ret float 0x3FE85EFA{{.+}}
191;
192  %res = tail call fast float @tanhf(float 1.0)
193  ret float %res
194}
195
196attributes #0 = { nofree nounwind willreturn }
197