xref: /llvm-project/llvm/test/Transforms/InstCombine/log-to-intrinsic.ll (revision 5184d763c70bf0c64b309262a40d9528a7dc4a2f)
1587f31fbSDavid Green; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
2587f31fbSDavid Green; RUN: opt -S -passes=instcombine < %s | FileCheck %s
3587f31fbSDavid Green
4587f31fbSDavid Greendefine float @test_logf_pos(float %f) {
5587f31fbSDavid Green; CHECK-LABEL: define float @test_logf_pos(
6587f31fbSDavid Green; CHECK-SAME: float [[F:%.*]]) {
7587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
8587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt float [[F]], 0.000000e+00
9587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
10587f31fbSDavid Green; CHECK:       [[IF_END]]:
11*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call float @llvm.log.f32(float [[F]])
12587f31fbSDavid Green; CHECK-NEXT:    ret float [[CALL]]
13587f31fbSDavid Green; CHECK:       [[RETURN]]:
14587f31fbSDavid Green; CHECK-NEXT:    ret float 0.000000e+00
15587f31fbSDavid Green;
16587f31fbSDavid Greenentry:
17587f31fbSDavid Green  %isinf = fcmp ole float %f, 0x0000000000000000
18587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
19587f31fbSDavid Green
20587f31fbSDavid Greenif.end:
21587f31fbSDavid Green  %call = tail call float @logf(float %f)
22587f31fbSDavid Green  ret float %call
23587f31fbSDavid Green
24587f31fbSDavid Greenreturn:
25587f31fbSDavid Green  ret float 0.0
26587f31fbSDavid Green}
27587f31fbSDavid Green
28587f31fbSDavid Greendefine double @test_log_pos(double %f) {
29587f31fbSDavid Green; CHECK-LABEL: define double @test_log_pos(
30587f31fbSDavid Green; CHECK-SAME: double [[F:%.*]]) {
31587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
32587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt double [[F]], 0.000000e+00
33587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
34587f31fbSDavid Green; CHECK:       [[IF_END]]:
35*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call double @llvm.log.f64(double [[F]])
36587f31fbSDavid Green; CHECK-NEXT:    ret double [[CALL]]
37587f31fbSDavid Green; CHECK:       [[RETURN]]:
38587f31fbSDavid Green; CHECK-NEXT:    ret double 0.000000e+00
39587f31fbSDavid Green;
40587f31fbSDavid Greenentry:
41587f31fbSDavid Green  %isinf = fcmp ole double %f, 0x0000000000000000
42587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
43587f31fbSDavid Green
44587f31fbSDavid Greenif.end:
45587f31fbSDavid Green  %call = tail call double @log(double %f)
46587f31fbSDavid Green  ret double %call
47587f31fbSDavid Green
48587f31fbSDavid Greenreturn:
49587f31fbSDavid Green  ret double 0.0
50587f31fbSDavid Green}
51587f31fbSDavid Green
52587f31fbSDavid Greendefine fp128 @test_logl_pos(fp128 %f) {
53587f31fbSDavid Green; CHECK-LABEL: define fp128 @test_logl_pos(
54587f31fbSDavid Green; CHECK-SAME: fp128 [[F:%.*]]) {
55587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
56587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt fp128 [[F]], 0xL00000000000000000000000000000000
57587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
58587f31fbSDavid Green; CHECK:       [[IF_END]]:
59*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call fp128 @llvm.log.f128(fp128 [[F]])
60587f31fbSDavid Green; CHECK-NEXT:    ret fp128 [[CALL]]
61587f31fbSDavid Green; CHECK:       [[RETURN]]:
62587f31fbSDavid Green; CHECK-NEXT:    ret fp128 0xL00000000000000000000000000000000
63587f31fbSDavid Green;
64587f31fbSDavid Greenentry:
65587f31fbSDavid Green  %isinf = fcmp ole fp128 %f, 0xL00000000000000000000000000000000
66587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
67587f31fbSDavid Green
68587f31fbSDavid Greenif.end:
69587f31fbSDavid Green  %call = tail call fp128 @logl(fp128 %f)
70587f31fbSDavid Green  ret fp128 %call
71587f31fbSDavid Green
72587f31fbSDavid Greenreturn:
73587f31fbSDavid Green  ret fp128 0xL00000000000000000000000000000000
74587f31fbSDavid Green}
75587f31fbSDavid Green
76587f31fbSDavid Greendefine float @test_log10f_pos(float %f) {
77587f31fbSDavid Green; CHECK-LABEL: define float @test_log10f_pos(
78587f31fbSDavid Green; CHECK-SAME: float [[F:%.*]]) {
79587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
80587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt float [[F]], 0.000000e+00
81587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
82587f31fbSDavid Green; CHECK:       [[IF_END]]:
83*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call float @llvm.log10.f32(float [[F]])
84587f31fbSDavid Green; CHECK-NEXT:    ret float [[CALL]]
85587f31fbSDavid Green; CHECK:       [[RETURN]]:
86587f31fbSDavid Green; CHECK-NEXT:    ret float 0.000000e+00
87587f31fbSDavid Green;
88587f31fbSDavid Greenentry:
89587f31fbSDavid Green  %isinf = fcmp ole float %f, 0x0000000000000000
90587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
91587f31fbSDavid Green
92587f31fbSDavid Greenif.end:
93587f31fbSDavid Green  %call = tail call float @log10f(float %f)
94587f31fbSDavid Green  ret float %call
95587f31fbSDavid Green
96587f31fbSDavid Greenreturn:
97587f31fbSDavid Green  ret float 0.0
98587f31fbSDavid Green}
99587f31fbSDavid Green
100587f31fbSDavid Greendefine double @test_log10_pos(double %f) {
101587f31fbSDavid Green; CHECK-LABEL: define double @test_log10_pos(
102587f31fbSDavid Green; CHECK-SAME: double [[F:%.*]]) {
103587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
104587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt double [[F]], 0.000000e+00
105587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
106587f31fbSDavid Green; CHECK:       [[IF_END]]:
107*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call double @llvm.log10.f64(double [[F]])
108587f31fbSDavid Green; CHECK-NEXT:    ret double [[CALL]]
109587f31fbSDavid Green; CHECK:       [[RETURN]]:
110587f31fbSDavid Green; CHECK-NEXT:    ret double 0.000000e+00
111587f31fbSDavid Green;
112587f31fbSDavid Greenentry:
113587f31fbSDavid Green  %isinf = fcmp ole double %f, 0x0000000000000000
114587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
115587f31fbSDavid Green
116587f31fbSDavid Greenif.end:
117587f31fbSDavid Green  %call = tail call double @log10(double %f)
118587f31fbSDavid Green  ret double %call
119587f31fbSDavid Green
120587f31fbSDavid Greenreturn:
121587f31fbSDavid Green  ret double 0.0
122587f31fbSDavid Green}
123587f31fbSDavid Green
124587f31fbSDavid Greendefine fp128 @test_log10l_pos(fp128 %f) {
125587f31fbSDavid Green; CHECK-LABEL: define fp128 @test_log10l_pos(
126587f31fbSDavid Green; CHECK-SAME: fp128 [[F:%.*]]) {
127587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
128587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt fp128 [[F]], 0xL00000000000000000000000000000000
129587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
130587f31fbSDavid Green; CHECK:       [[IF_END]]:
131*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call fp128 @llvm.log10.f128(fp128 [[F]])
132587f31fbSDavid Green; CHECK-NEXT:    ret fp128 [[CALL]]
133587f31fbSDavid Green; CHECK:       [[RETURN]]:
134587f31fbSDavid Green; CHECK-NEXT:    ret fp128 0xL00000000000000000000000000000000
135587f31fbSDavid Green;
136587f31fbSDavid Greenentry:
137587f31fbSDavid Green  %isinf = fcmp ole fp128 %f, 0xL00000000000000000000000000000000
138587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
139587f31fbSDavid Green
140587f31fbSDavid Greenif.end:
141587f31fbSDavid Green  %call = tail call fp128 @log10l(fp128 %f)
142587f31fbSDavid Green  ret fp128 %call
143587f31fbSDavid Green
144587f31fbSDavid Greenreturn:
145587f31fbSDavid Green  ret fp128 0xL00000000000000000000000000000000
146587f31fbSDavid Green}
147587f31fbSDavid Green
148587f31fbSDavid Greendefine float @test_log2f_pos(float %f) {
149587f31fbSDavid Green; CHECK-LABEL: define float @test_log2f_pos(
150587f31fbSDavid Green; CHECK-SAME: float [[F:%.*]]) {
151587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
152587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt float [[F]], 0.000000e+00
153587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
154587f31fbSDavid Green; CHECK:       [[IF_END]]:
155*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call float @llvm.log2.f32(float [[F]])
156587f31fbSDavid Green; CHECK-NEXT:    ret float [[CALL]]
157587f31fbSDavid Green; CHECK:       [[RETURN]]:
158587f31fbSDavid Green; CHECK-NEXT:    ret float 0.000000e+00
159587f31fbSDavid Green;
160587f31fbSDavid Greenentry:
161587f31fbSDavid Green  %isinf = fcmp ole float %f, 0x0000000000000000
162587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
163587f31fbSDavid Green
164587f31fbSDavid Greenif.end:
165587f31fbSDavid Green  %call = tail call float @log2f(float %f)
166587f31fbSDavid Green  ret float %call
167587f31fbSDavid Green
168587f31fbSDavid Greenreturn:
169587f31fbSDavid Green  ret float 0.0
170587f31fbSDavid Green}
171587f31fbSDavid Green
172587f31fbSDavid Greendefine double @test_log2_pos(double %f) {
173587f31fbSDavid Green; CHECK-LABEL: define double @test_log2_pos(
174587f31fbSDavid Green; CHECK-SAME: double [[F:%.*]]) {
175587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
176587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt double [[F]], 0.000000e+00
177587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
178587f31fbSDavid Green; CHECK:       [[IF_END]]:
179*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call double @llvm.log2.f64(double [[F]])
180587f31fbSDavid Green; CHECK-NEXT:    ret double [[CALL]]
181587f31fbSDavid Green; CHECK:       [[RETURN]]:
182587f31fbSDavid Green; CHECK-NEXT:    ret double 0.000000e+00
183587f31fbSDavid Green;
184587f31fbSDavid Greenentry:
185587f31fbSDavid Green  %isinf = fcmp ole double %f, 0x0000000000000000
186587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
187587f31fbSDavid Green
188587f31fbSDavid Greenif.end:
189587f31fbSDavid Green  %call = tail call double @log2(double %f)
190587f31fbSDavid Green  ret double %call
191587f31fbSDavid Green
192587f31fbSDavid Greenreturn:
193587f31fbSDavid Green  ret double 0.0
194587f31fbSDavid Green}
195587f31fbSDavid Green
196587f31fbSDavid Greendefine fp128 @test_log2l_pos(fp128 %f) {
197587f31fbSDavid Green; CHECK-LABEL: define fp128 @test_log2l_pos(
198587f31fbSDavid Green; CHECK-SAME: fp128 [[F:%.*]]) {
199587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
200587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt fp128 [[F]], 0xL00000000000000000000000000000000
201587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
202587f31fbSDavid Green; CHECK:       [[IF_END]]:
203*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call fp128 @llvm.log2.f128(fp128 [[F]])
204587f31fbSDavid Green; CHECK-NEXT:    ret fp128 [[CALL]]
205587f31fbSDavid Green; CHECK:       [[RETURN]]:
206587f31fbSDavid Green; CHECK-NEXT:    ret fp128 0xL00000000000000000000000000000000
207587f31fbSDavid Green;
208587f31fbSDavid Greenentry:
209587f31fbSDavid Green  %isinf = fcmp ole fp128 %f, 0xL00000000000000000000000000000000
210587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
211587f31fbSDavid Green
212587f31fbSDavid Greenif.end:
213587f31fbSDavid Green  %call = tail call fp128 @log2l(fp128 %f)
214587f31fbSDavid Green  ret fp128 %call
215587f31fbSDavid Green
216587f31fbSDavid Greenreturn:
217587f31fbSDavid Green  ret fp128 0xL00000000000000000000000000000000
218587f31fbSDavid Green}
219587f31fbSDavid Green
220587f31fbSDavid Green
221587f31fbSDavid Greendefine double @test_logb_pos(double %f) {
222587f31fbSDavid Green; CHECK-LABEL: define double @test_logb_pos(
223587f31fbSDavid Green; CHECK-SAME: double [[F:%.*]]) {
224587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
225587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt double [[F]], 0.000000e+00
226587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
227587f31fbSDavid Green; CHECK:       [[IF_END]]:
228587f31fbSDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call double @logb(double [[F]])
229587f31fbSDavid Green; CHECK-NEXT:    ret double [[CALL]]
230587f31fbSDavid Green; CHECK:       [[RETURN]]:
231587f31fbSDavid Green; CHECK-NEXT:    ret double 0.000000e+00
232587f31fbSDavid Green;
233587f31fbSDavid Greenentry:
234587f31fbSDavid Green  %isinf = fcmp ole double %f, 0x0000000000000000
235587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
236587f31fbSDavid Green
237587f31fbSDavid Greenif.end:
238587f31fbSDavid Green  %call = tail call double @logb(double %f)
239587f31fbSDavid Green  ret double %call
240587f31fbSDavid Green
241587f31fbSDavid Greenreturn:
242587f31fbSDavid Green  ret double 0.0
243587f31fbSDavid Green}
244587f31fbSDavid Green
245587f31fbSDavid Greendefine double @test_log1p_pos(double %f) {
246587f31fbSDavid Green; CHECK-LABEL: define double @test_log1p_pos(
247587f31fbSDavid Green; CHECK-SAME: double [[F:%.*]]) {
248587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
249587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt double [[F]], 0.000000e+00
250587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
251587f31fbSDavid Green; CHECK:       [[IF_END]]:
252587f31fbSDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call double @log1p(double [[F]])
253587f31fbSDavid Green; CHECK-NEXT:    ret double [[CALL]]
254587f31fbSDavid Green; CHECK:       [[RETURN]]:
255587f31fbSDavid Green; CHECK-NEXT:    ret double 0.000000e+00
256587f31fbSDavid Green;
257587f31fbSDavid Greenentry:
258587f31fbSDavid Green  %isinf = fcmp ole double %f, 0x0000000000000000
259587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
260587f31fbSDavid Green
261587f31fbSDavid Greenif.end:
262587f31fbSDavid Green  %call = tail call double @log1p(double %f)
263587f31fbSDavid Green  ret double %call
264587f31fbSDavid Green
265587f31fbSDavid Greenreturn:
266587f31fbSDavid Green  ret double 0.0
267587f31fbSDavid Green}
268587f31fbSDavid Green
269587f31fbSDavid Greendefine float @metadata(float %f) {
270587f31fbSDavid Green; CHECK-LABEL: define float @metadata(
271587f31fbSDavid Green; CHECK-SAME: float [[F:%.*]]) {
272587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
273587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt float [[F]], 0.000000e+00
274587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
275587f31fbSDavid Green; CHECK:       [[IF_END]]:
276*5184d763SDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call float @llvm.log.f32(float [[F]]), !fpmath [[META0:![0-9]+]]
277587f31fbSDavid Green; CHECK-NEXT:    ret float [[CALL]]
278587f31fbSDavid Green; CHECK:       [[RETURN]]:
279587f31fbSDavid Green; CHECK-NEXT:    ret float 0.000000e+00
280587f31fbSDavid Green;
281587f31fbSDavid Greenentry:
282587f31fbSDavid Green  %isinf = fcmp ole float %f, 0x0000000000000000
283587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
284587f31fbSDavid Green
285587f31fbSDavid Greenif.end:
286587f31fbSDavid Green  %call = tail call float @logf(float %f), !fpmath !0
287587f31fbSDavid Green  ret float %call
288587f31fbSDavid Green
289587f31fbSDavid Greenreturn:
290587f31fbSDavid Green  ret float 0.0
291587f31fbSDavid Green}
292587f31fbSDavid Green!0 = !{ float 2.5 }
293587f31fbSDavid Green
294587f31fbSDavid Greendefine float @test_logf_pos_denormalpreserve(float %f) "denormal-fp-math"="preserve-sign,preserve-sign"  {
295587f31fbSDavid Green; CHECK-LABEL: define float @test_logf_pos_denormalpreserve(
296587f31fbSDavid Green; CHECK-SAME: float [[F:%.*]]) #[[ATTR0:[0-9]+]] {
297587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
298587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt float [[F]], 0.000000e+00
299587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
300587f31fbSDavid Green; CHECK:       [[IF_END]]:
301587f31fbSDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call float @logf(float [[F]])
302587f31fbSDavid Green; CHECK-NEXT:    ret float [[CALL]]
303587f31fbSDavid Green; CHECK:       [[RETURN]]:
304587f31fbSDavid Green; CHECK-NEXT:    ret float 0.000000e+00
305587f31fbSDavid Green;
306587f31fbSDavid Greenentry:
307587f31fbSDavid Green  %isinf = fcmp ole float %f, 0x0000000000000000
308587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
309587f31fbSDavid Green
310587f31fbSDavid Greenif.end:
311587f31fbSDavid Green  %call = tail call float @logf(float %f)
312587f31fbSDavid Green  ret float %call
313587f31fbSDavid Green
314587f31fbSDavid Greenreturn:
315587f31fbSDavid Green  ret float 0.0
316587f31fbSDavid Green}
317587f31fbSDavid Green
318587f31fbSDavid Greendefine float @test_logf_pos_denormaldynamic(float %f) "denormal-fp-math"="dynamic,dynamic"  {
319587f31fbSDavid Green; CHECK-LABEL: define float @test_logf_pos_denormaldynamic(
320587f31fbSDavid Green; CHECK-SAME: float [[F:%.*]]) #[[ATTR1:[0-9]+]] {
321587f31fbSDavid Green; CHECK-NEXT:  [[ENTRY:.*:]]
322587f31fbSDavid Green; CHECK-NEXT:    [[ISINF:%.*]] = fcmp ugt float [[F]], 0.000000e+00
323587f31fbSDavid Green; CHECK-NEXT:    br i1 [[ISINF]], label %[[IF_END:.*]], label %[[RETURN:.*]]
324587f31fbSDavid Green; CHECK:       [[IF_END]]:
325587f31fbSDavid Green; CHECK-NEXT:    [[CALL:%.*]] = tail call float @logf(float [[F]])
326587f31fbSDavid Green; CHECK-NEXT:    ret float [[CALL]]
327587f31fbSDavid Green; CHECK:       [[RETURN]]:
328587f31fbSDavid Green; CHECK-NEXT:    ret float 0.000000e+00
329587f31fbSDavid Green;
330587f31fbSDavid Greenentry:
331587f31fbSDavid Green  %isinf = fcmp ole float %f, 0x0000000000000000
332587f31fbSDavid Green  br i1 %isinf, label %return, label %if.end
333587f31fbSDavid Green
334587f31fbSDavid Greenif.end:
335587f31fbSDavid Green  %call = tail call float @logf(float %f)
336587f31fbSDavid Green  ret float %call
337587f31fbSDavid Green
338587f31fbSDavid Greenreturn:
339587f31fbSDavid Green  ret float 0.0
340587f31fbSDavid Green}
341587f31fbSDavid Green
342587f31fbSDavid Greendeclare double @log(double)
343587f31fbSDavid Greendeclare float @logf(float)
344587f31fbSDavid Greendeclare fp128 @logl(fp128)
345587f31fbSDavid Greendeclare double @log10(double)
346587f31fbSDavid Greendeclare float @log10f(float)
347587f31fbSDavid Greendeclare fp128 @log10l(fp128)
348587f31fbSDavid Greendeclare double @log2(double)
349587f31fbSDavid Greendeclare float @log2f(float)
350587f31fbSDavid Greendeclare fp128 @log2l(fp128)
351587f31fbSDavid Greendeclare double @logb(double)
352587f31fbSDavid Greendeclare double @log1p(double)
353587f31fbSDavid Green;.
354587f31fbSDavid Green; CHECK: [[META0]] = !{float 2.500000e+00}
355587f31fbSDavid Green;.
356