Enable constant propagation for more math functions
[oota-llvm.git] / test / Transforms / ConstProp / calls.ll
1 ; RUN: opt < %s -constprop -S | FileCheck %s
2 ; RUN: opt < %s -constprop -disable-simplify-libcalls -S | FileCheck %s --check-prefix=FNOBUILTIN
3
4 declare double @acos(double)
5 declare double @asin(double)
6 declare double @atan(double)
7 declare double @atan2(double, double)
8 declare double @ceil(double)
9 declare double @cos(double)
10 declare double @cosh(double)
11 declare double @exp(double)
12 declare double @exp2(double)
13 declare double @fabs(double)
14 declare double @floor(double)
15 declare double @fmod(double, double)
16 declare double @log(double)
17 declare double @log10(double)
18 declare double @pow(double, double)
19 declare double @sin(double)
20 declare double @sinh(double)
21 declare double @sqrt(double)
22 declare double @tan(double)
23 declare double @tanh(double)
24
25 declare float @acosf(float)
26 declare float @asinf(float)
27 declare float @atanf(float)
28 declare float @atan2f(float, float)
29 declare float @ceilf(float)
30 declare float @cosf(float)
31 declare float @coshf(float)
32 declare float @expf(float)
33 declare float @exp2f(float)
34 declare float @fabsf(float)
35 declare float @floorf(float)
36 declare float @fmodf(float, float)
37 declare float @logf(float)
38 declare float @log10f(float)
39 declare float @powf(float, float)
40 declare float @sinf(float)
41 declare float @sinhf(float)
42 declare float @sqrtf(float)
43 declare float @tanf(float)
44 declare float @tanhf(float)
45
46 define double @T() {
47 ; CHECK-LABEL: @T(
48 ; CHECK-NOT: call
49 ; CHECK: ret
50   %A = call double @cos(double 0.000000e+00)
51   %B = call double @sin(double 0.000000e+00)
52   %a = fadd double %A, %B
53   %C = call double @tan(double 0.000000e+00)
54   %b = fadd double %a, %C
55   %D = call double @sqrt(double 4.000000e+00)
56   %c = fadd double %b, %D
57
58   ; PR9315
59   %E = call double @exp2(double 4.0)
60   %d = fadd double %c, %E 
61   ret double %d
62 }
63
64 define i1 @test_sse_cvt() nounwind readnone {
65 ; CHECK-LABEL: @test_sse_cvt(
66 ; CHECK-NOT: call
67 ; CHECK: ret i1 true
68 entry:
69   %i0 = tail call i32 @llvm.x86.sse.cvtss2si(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
70   %i1 = tail call i32 @llvm.x86.sse.cvttss2si(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
71   %i2 = tail call i64 @llvm.x86.sse.cvtss2si64(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
72   %i3 = tail call i64 @llvm.x86.sse.cvttss2si64(<4 x float> <float 1.75, float undef, float undef, float undef>) nounwind
73   %i4 = call i32 @llvm.x86.sse2.cvtsd2si(<2 x double> <double 1.75, double undef>) nounwind
74   %i5 = call i32 @llvm.x86.sse2.cvttsd2si(<2 x double> <double 1.75, double undef>) nounwind
75   %i6 = call i64 @llvm.x86.sse2.cvtsd2si64(<2 x double> <double 1.75, double undef>) nounwind
76   %i7 = call i64 @llvm.x86.sse2.cvttsd2si64(<2 x double> <double 1.75, double undef>) nounwind
77   %sum11 = add i32 %i0, %i1
78   %sum12 = add i32 %i4, %i5
79   %sum1 = add i32 %sum11, %sum12
80   %sum21 = add i64 %i2, %i3
81   %sum22 = add i64 %i6, %i7
82   %sum2 = add i64 %sum21, %sum22
83   %sum1.sext = sext i32 %sum1 to i64
84   %b = icmp eq i64 %sum1.sext, %sum2
85   ret i1 %b
86 }
87
88 declare i32 @llvm.x86.sse.cvtss2si(<4 x float>) nounwind readnone
89 declare i32 @llvm.x86.sse.cvttss2si(<4 x float>) nounwind readnone
90 declare i64 @llvm.x86.sse.cvtss2si64(<4 x float>) nounwind readnone
91 declare i64 @llvm.x86.sse.cvttss2si64(<4 x float>) nounwind readnone
92 declare i32 @llvm.x86.sse2.cvtsd2si(<2 x double>) nounwind readnone
93 declare i32 @llvm.x86.sse2.cvttsd2si(<2 x double>) nounwind readnone
94 declare i64 @llvm.x86.sse2.cvtsd2si64(<2 x double>) nounwind readnone
95 declare i64 @llvm.x86.sse2.cvttsd2si64(<2 x double>) nounwind readnone
96
97 define double @test_intrinsic_pow() nounwind uwtable ssp {
98 entry:
99 ; CHECK-LABEL: @test_intrinsic_pow(
100 ; CHECK-NOT: call
101   %0 = call double @llvm.pow.f64(double 1.500000e+00, double 3.000000e+00)
102   ret double %0
103 }
104 declare double @llvm.pow.f64(double, double) nounwind readonly
105
106 define double @test_acos() nounwind uwtable ssp {
107 entry:
108 ; CHECK-LABEL: @test_acos(
109 ; CHECK-NOT: call
110   %0 = call double @acos(double 3.000000e+00)
111   ret double %0
112 }
113
114 define double @test_asin() nounwind uwtable ssp {
115 entry:
116 ; CHECK-LABEL: @test_asin(
117 ; CHECK-NOT: call
118   %0 = call double @asin(double 3.000000e+00)
119   ret double %0
120 }
121
122 define double @test_atan() nounwind uwtable ssp {
123 entry:
124 ; CHECK-LABEL: @test_atan(
125 ; CHECK-NOT: call
126   %0 = call double @atan(double 3.000000e+00)
127   ret double %0
128 }
129
130 define double @test_atan2() nounwind uwtable ssp {
131 entry:
132 ; CHECK-LABEL: @test_atan2(
133 ; CHECK-NOT: call
134   %0 = call double @atan2(double 3.000000e+00, double 4.000000e+00)
135   ret double %0
136 }
137
138 define double @test_ceil() nounwind uwtable ssp {
139 entry:
140 ; CHECK-LABEL: @test_ceil(
141 ; CHECK-NOT: call
142   %0 = call double @ceil(double 3.000000e+00)
143   ret double %0
144 }
145
146 define double @test_cos() nounwind uwtable ssp {
147 entry:
148 ; CHECK-LABEL: @test_cos(
149 ; CHECK-NOT: call
150   %0 = call double @cos(double 3.000000e+00)
151   ret double %0
152 }
153
154 define double @test_cosh() nounwind uwtable ssp {
155 entry:
156 ; CHECK-LABEL: @test_cosh(
157 ; CHECK-NOT: call
158   %0 = call double @cosh(double 3.000000e+00)
159   ret double %0
160 }
161
162 define double @test_exp() nounwind uwtable ssp {
163 entry:
164 ; CHECK-LABEL: @test_exp(
165 ; CHECK-NOT: call
166   %0 = call double @exp(double 3.000000e+00)
167   ret double %0
168 }
169
170 define double @test_exp2() nounwind uwtable ssp {
171 entry:
172 ; CHECK-LABEL: @test_exp2(
173 ; CHECK-NOT: call
174   %0 = call double @exp2(double 3.000000e+00)
175   ret double %0
176 }
177
178 define double @test_fabs() nounwind uwtable ssp {
179 entry:
180 ; CHECK-LABEL: @test_fabs(
181 ; CHECK-NOT: call
182   %0 = call double @fabs(double 3.000000e+00)
183   ret double %0
184 }
185
186 define double @test_floor() nounwind uwtable ssp {
187 entry:
188 ; CHECK-LABEL: @test_floor(
189 ; CHECK-NOT: call
190   %0 = call double @floor(double 3.000000e+00)
191   ret double %0
192 }
193
194 define double @test_fmod() nounwind uwtable ssp {
195 entry:
196 ; CHECK-LABEL: @test_fmod(
197 ; CHECK-NOT: call
198   %0 = call double @fmod(double 3.000000e+00, double 4.000000e+00)
199   ret double %0
200 }
201
202 define double @test_log() nounwind uwtable ssp {
203 entry:
204 ; CHECK-LABEL: @test_log(
205 ; CHECK-NOT: call
206   %0 = call double @log(double 3.000000e+00)
207   ret double %0
208 }
209
210 define double @test_log10() nounwind uwtable ssp {
211 entry:
212 ; CHECK-LABEL: @test_log10(
213 ; CHECK-NOT: call
214   %0 = call double @log10(double 3.000000e+00)
215   ret double %0
216 }
217
218 define double @test_pow() nounwind uwtable ssp {
219 entry:
220 ; CHECK-LABEL: @test_pow(
221 ; CHECK-NOT: call
222   %0 = call double @pow(double 3.000000e+00, double 4.000000e+00)
223   ret double %0
224 }
225
226 define double @test_sin() nounwind uwtable ssp {
227 entry:
228 ; CHECK-LABEL: @test_sin(
229 ; CHECK-NOT: call
230   %0 = call double @sin(double 3.000000e+00)
231   ret double %0
232 }
233
234 define double @test_sinh() nounwind uwtable ssp {
235 entry:
236 ; CHECK-LABEL: @test_sinh(
237 ; CHECK-NOT: call
238   %0 = call double @sinh(double 3.000000e+00)
239   ret double %0
240 }
241
242 define double @test_sqrt() nounwind uwtable ssp {
243 entry:
244 ; CHECK-LABEL: @test_sqrt(
245 ; CHECK-NOT: call
246   %0 = call double @sqrt(double 3.000000e+00)
247   ret double %0
248 }
249
250 define double @test_tan() nounwind uwtable ssp {
251 entry:
252 ; CHECK-LABEL: @test_tan(
253 ; CHECK-NOT: call
254   %0 = call double @tan(double 3.000000e+00)
255   ret double %0
256 }
257
258 define double @test_tanh() nounwind uwtable ssp {
259 entry:
260 ; CHECK-LABEL: @test_tanh(
261 ; CHECK-NOT: call
262   %0 = call double @tanh(double 3.000000e+00)
263   ret double %0
264 }
265
266 define float @test_acosf() nounwind uwtable ssp {
267 entry:
268 ; CHECK-LABEL: @test_acosf(
269 ; CHECK-NOT: call
270   %0 = call float @acosf(float 3.000000e+00)
271   ret float %0
272 }
273
274 define float @test_asinf() nounwind uwtable ssp {
275 entry:
276 ; CHECK-LABEL: @test_asinf(
277 ; CHECK-NOT: call
278   %0 = call float @asinf(float 3.000000e+00)
279   ret float %0
280 }
281
282 define float @test_atanf() nounwind uwtable ssp {
283 entry:
284 ; CHECK-LABEL: @test_atanf(
285 ; CHECK-NOT: call
286   %0 = call float @atanf(float 3.000000e+00)
287   ret float %0
288 }
289
290 define float @test_atan2f() nounwind uwtable ssp {
291 entry:
292 ; CHECK-LABEL: @test_atan2f(
293 ; CHECK-NOT: call
294   %0 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
295   ret float %0
296 }
297
298 define float @test_ceilf() nounwind uwtable ssp {
299 entry:
300 ; CHECK-LABEL: @test_ceilf(
301 ; CHECK-NOT: call
302   %0 = call float @ceilf(float 3.000000e+00)
303   ret float %0
304 }
305
306 define float @test_cosf() nounwind uwtable ssp {
307 entry:
308 ; CHECK-LABEL: @test_cosf(
309 ; CHECK-NOT: call
310   %0 = call float @cosf(float 3.000000e+00)
311   ret float %0
312 }
313
314 define float @test_coshf() nounwind uwtable ssp {
315 entry:
316 ; CHECK-LABEL: @test_coshf(
317 ; CHECK-NOT: call
318   %0 = call float @coshf(float 3.000000e+00)
319   ret float %0
320 }
321
322 define float @test_expf() nounwind uwtable ssp {
323 entry:
324 ; CHECK-LABEL: @test_expf(
325 ; CHECK-NOT: call
326   %0 = call float @expf(float 3.000000e+00)
327   ret float %0
328 }
329
330 define float @test_exp2f() nounwind uwtable ssp {
331 entry:
332 ; CHECK-LABEL: @test_exp2f(
333 ; CHECK-NOT: call
334   %0 = call float @exp2f(float 3.000000e+00)
335   ret float %0
336 }
337
338 define float @test_fabsf() nounwind uwtable ssp {
339 entry:
340 ; CHECK-LABEL: @test_fabsf(
341 ; CHECK-NOT: call
342   %0 = call float @fabsf(float 3.000000e+00)
343   ret float %0
344 }
345
346 define float @test_floorf() nounwind uwtable ssp {
347 entry:
348 ; CHECK-LABEL: @test_floorf(
349 ; CHECK-NOT: call
350   %0 = call float @floorf(float 3.000000e+00)
351   ret float %0
352 }
353
354 define float @test_fmodf() nounwind uwtable ssp {
355 entry:
356 ; CHECK-LABEL: @test_fmodf(
357 ; CHECK-NOT: call
358   %0 = call float @fmodf(float 3.000000e+00, float 4.000000e+00)
359   ret float %0
360 }
361
362 define float @test_logf() nounwind uwtable ssp {
363 entry:
364 ; CHECK-LABEL: @test_logf(
365 ; CHECK-NOT: call
366   %0 = call float @logf(float 3.000000e+00)
367   ret float %0
368 }
369
370 define float @test_log10f() nounwind uwtable ssp {
371 entry:
372 ; CHECK-LABEL: @test_log10f(
373 ; CHECK-NOT: call
374   %0 = call float @log10f(float 3.000000e+00)
375   ret float %0
376 }
377
378 define float @test_powf() nounwind uwtable ssp {
379 entry:
380 ; CHECK-LABEL: @test_powf(
381 ; CHECK-NOT: call
382   %0 = call float @powf(float 3.000000e+00, float 4.000000e+00)
383   ret float %0
384 }
385
386 define float @test_sinf() nounwind uwtable ssp {
387 entry:
388 ; CHECK-LABEL: @test_sinf(
389 ; CHECK-NOT: call
390   %0 = call float @sinf(float 3.000000e+00)
391   ret float %0
392 }
393
394 define float @test_sinhf() nounwind uwtable ssp {
395 entry:
396 ; CHECK-LABEL: @test_sinhf(
397 ; CHECK-NOT: call
398   %0 = call float @sinhf(float 3.000000e+00)
399   ret float %0
400 }
401
402 define float @test_sqrtf() nounwind uwtable ssp {
403 entry:
404 ; CHECK-LABEL: @test_sqrtf(
405 ; CHECK-NOT: call
406   %0 = call float @sqrtf(float 3.000000e+00)
407   ret float %0
408 }
409
410 define float @test_tanf() nounwind uwtable ssp {
411 entry:
412 ; CHECK-LABEL: @test_tanf(
413 ; CHECK-NOT: call
414   %0 = call float @tanf(float 3.000000e+00)
415   ret float %0
416 }
417
418 define float @test_tanhf() nounwind uwtable ssp {
419 entry:
420 ; CHECK-LABEL: @test_tanhf(
421 ; CHECK-NOT: call
422   %0 = call float @tanhf(float 3.000000e+00)
423   ret float %0
424 }
425
426 ; Shouldn't fold because of -fno-builtin
427 define double @acos_() nounwind uwtable ssp {
428 ; FNOBUILTIN-LABEL: @acos_(
429 ; FNOBUILTIN: %1 = call double @acos(double 3.000000e+00)
430   %1 = call double @acos(double 3.000000e+00)
431   ret double %1
432 }
433
434 ; Shouldn't fold because of -fno-builtin
435 define double @asin_() nounwind uwtable ssp {
436 ; FNOBUILTIN-LABEL: @asin_(
437 ; FNOBUILTIN: %1 = call double @asin(double 3.000000e+00)
438   %1 = call double @asin(double 3.000000e+00)
439   ret double %1
440 }
441
442 ; Shouldn't fold because of -fno-builtin
443 define double @atan_() nounwind uwtable ssp {
444 ; FNOBUILTIN-LABEL: @atan_(
445 ; FNOBUILTIN: %1 = call double @atan(double 3.000000e+00)
446   %1 = call double @atan(double 3.000000e+00)
447   ret double %1
448 }
449
450 ; Shouldn't fold because of -fno-builtin
451 define double @atan2_() nounwind uwtable ssp {
452 ; FNOBUILTIN-LABEL: @atan2_(
453 ; FNOBUILTIN: %1 = call double @atan2(double 3.000000e+00, double 4.000000e+00)
454   %1 = call double @atan2(double 3.000000e+00, double 4.000000e+00)
455   ret double %1
456 }
457
458 ; Shouldn't fold because of -fno-builtin
459 define double @ceil_() nounwind uwtable ssp {
460 ; FNOBUILTIN-LABEL: @ceil_(
461 ; FNOBUILTIN: %1 = call double @ceil(double 3.000000e+00)
462   %1 = call double @ceil(double 3.000000e+00)
463   ret double %1
464 }
465
466 ; Shouldn't fold because of -fno-builtin
467 define double @cos_() nounwind uwtable ssp {
468 ; FNOBUILTIN-LABEL: @cos_(
469 ; FNOBUILTIN: %1 = call double @cos(double 3.000000e+00)
470   %1 = call double @cos(double 3.000000e+00)
471   ret double %1
472 }
473
474 ; Shouldn't fold because of -fno-builtin
475 define double @cosh_() nounwind uwtable ssp {
476 ; FNOBUILTIN-LABEL: @cosh_(
477 ; FNOBUILTIN: %1 = call double @cosh(double 3.000000e+00)
478   %1 = call double @cosh(double 3.000000e+00)
479   ret double %1
480 }
481
482 ; Shouldn't fold because of -fno-builtin
483 define double @exp_() nounwind uwtable ssp {
484 ; FNOBUILTIN-LABEL: @exp_(
485 ; FNOBUILTIN: %1 = call double @exp(double 3.000000e+00)
486   %1 = call double @exp(double 3.000000e+00)
487   ret double %1
488 }
489
490 ; Shouldn't fold because of -fno-builtin
491 define double @exp2_() nounwind uwtable ssp {
492 ; FNOBUILTIN-LABEL: @exp2_(
493 ; FNOBUILTIN: %1 = call double @exp2(double 3.000000e+00)
494   %1 = call double @exp2(double 3.000000e+00)
495   ret double %1
496 }
497
498 ; Shouldn't fold because of -fno-builtin
499 define double @fabs_() nounwind uwtable ssp {
500 ; FNOBUILTIN-LABEL: @fabs_(
501 ; FNOBUILTIN: %1 = call double @fabs(double 3.000000e+00)
502   %1 = call double @fabs(double 3.000000e+00)
503   ret double %1
504 }
505
506 ; Shouldn't fold because of -fno-builtin
507 define double @floor_() nounwind uwtable ssp {
508 ; FNOBUILTIN-LABEL: @floor_(
509 ; FNOBUILTIN: %1 = call double @floor(double 3.000000e+00)
510   %1 = call double @floor(double 3.000000e+00)
511   ret double %1
512 }
513
514 ; Shouldn't fold because of -fno-builtin
515 define double @fmod_() nounwind uwtable ssp {
516 ; FNOBUILTIN-LABEL: @fmod_(
517 ; FNOBUILTIN: %1 = call double @fmod(double 3.000000e+00, double 4.000000e+00)
518   %1 = call double @fmod(double 3.000000e+00, double 4.000000e+00)
519   ret double %1
520 }
521
522 ; Shouldn't fold because of -fno-builtin
523 define double @log_() nounwind uwtable ssp {
524 ; FNOBUILTIN-LABEL: @log_(
525 ; FNOBUILTIN: %1 = call double @log(double 3.000000e+00)
526   %1 = call double @log(double 3.000000e+00)
527   ret double %1
528 }
529
530 ; Shouldn't fold because of -fno-builtin
531 define double @log10_() nounwind uwtable ssp {
532 ; FNOBUILTIN-LABEL: @log10_(
533 ; FNOBUILTIN: %1 = call double @log10(double 3.000000e+00)
534   %1 = call double @log10(double 3.000000e+00)
535   ret double %1
536 }
537
538 ; Shouldn't fold because of -fno-builtin
539 define double @pow_() nounwind uwtable ssp {
540 ; FNOBUILTIN-LABEL: @pow_(
541 ; FNOBUILTIN: %1 = call double @pow(double 3.000000e+00, double 4.000000e+00)
542   %1 = call double @pow(double 3.000000e+00, double 4.000000e+00)
543   ret double %1
544 }
545
546 ; Shouldn't fold because of -fno-builtin
547 define double @sin_() nounwind uwtable ssp {
548 ; FNOBUILTIN-LABEL: @sin_(
549 ; FNOBUILTIN: %1 = call double @sin(double 3.000000e+00)
550   %1 = call double @sin(double 3.000000e+00)
551   ret double %1
552 }
553
554 ; Shouldn't fold because of -fno-builtin
555 define double @sinh_() nounwind uwtable ssp {
556 ; FNOBUILTIN-LABEL: @sinh_(
557 ; FNOBUILTIN: %1 = call double @sinh(double 3.000000e+00)
558   %1 = call double @sinh(double 3.000000e+00)
559   ret double %1
560 }
561
562 ; Shouldn't fold because of -fno-builtin
563 define double @sqrt_() nounwind uwtable ssp {
564 ; FNOBUILTIN-LABEL: @sqrt_(
565 ; FNOBUILTIN: %1 = call double @sqrt(double 3.000000e+00)
566   %1 = call double @sqrt(double 3.000000e+00)
567   ret double %1
568 }
569
570 ; Shouldn't fold because of -fno-builtin
571 define double @tan_() nounwind uwtable ssp {
572 ; FNOBUILTIN-LABEL: @tan_(
573 ; FNOBUILTIN: %1 = call double @tan(double 3.000000e+00)
574   %1 = call double @tan(double 3.000000e+00)
575   ret double %1
576 }
577
578 ; Shouldn't fold because of -fno-builtin
579 define double @tanh_() nounwind uwtable ssp {
580 ; FNOBUILTIN-LABEL: @tanh_(
581 ; FNOBUILTIN: %1 = call double @tanh(double 3.000000e+00)
582   %1 = call double @tanh(double 3.000000e+00)
583   ret double %1
584 }
585
586 ; Shouldn't fold because of -fno-builtin
587 define float @acosf_() nounwind uwtable ssp {
588 ; FNOBUILTIN-LABEL: @acosf_(
589 ; FNOBUILTIN: %1 = call float @acosf(float 3.000000e+00)
590   %1 = call float @acosf(float 3.000000e+00)
591   ret float %1
592 }
593
594 ; Shouldn't fold because of -fno-builtin
595 define float @asinf_() nounwind uwtable ssp {
596 ; FNOBUILTIN-LABEL: @asinf_(
597 ; FNOBUILTIN: %1 = call float @asinf(float 3.000000e+00)
598   %1 = call float @asinf(float 3.000000e+00)
599   ret float %1
600 }
601
602 ; Shouldn't fold because of -fno-builtin
603 define float @atanf_() nounwind uwtable ssp {
604 ; FNOBUILTIN-LABEL: @atanf_(
605 ; FNOBUILTIN: %1 = call float @atanf(float 3.000000e+00)
606   %1 = call float @atanf(float 3.000000e+00)
607   ret float %1
608 }
609
610 ; Shouldn't fold because of -fno-builtin
611 define float @atan2f_() nounwind uwtable ssp {
612 ; FNOBUILTIN-LABEL: @atan2f_(
613 ; FNOBUILTIN: %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
614   %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
615   ret float %1
616 }
617
618 ; Shouldn't fold because of -fno-builtin
619 define float @ceilf_() nounwind uwtable ssp {
620 ; FNOBUILTIN-LABEL: @ceilf_(
621 ; FNOBUILTIN: %1 = call float @ceilf(float 3.000000e+00)
622   %1 = call float @ceilf(float 3.000000e+00)
623   ret float %1
624 }
625
626 ; Shouldn't fold because of -fno-builtin
627 define float @cosf_() nounwind uwtable ssp {
628 ; FNOBUILTIN-LABEL: @cosf_(
629 ; FNOBUILTIN: %1 = call float @cosf(float 3.000000e+00)
630   %1 = call float @cosf(float 3.000000e+00)
631   ret float %1
632 }
633
634 ; Shouldn't fold because of -fno-builtin
635 define float @coshf_() nounwind uwtable ssp {
636 ; FNOBUILTIN-LABEL: @coshf_(
637 ; FNOBUILTIN: %1 = call float @coshf(float 3.000000e+00)
638   %1 = call float @coshf(float 3.000000e+00)
639   ret float %1
640 }
641
642 ; Shouldn't fold because of -fno-builtin
643 define float @expf_() nounwind uwtable ssp {
644 ; FNOBUILTIN-LABEL: @expf_(
645 ; FNOBUILTIN: %1 = call float @expf(float 3.000000e+00)
646   %1 = call float @expf(float 3.000000e+00)
647   ret float %1
648 }
649
650 ; Shouldn't fold because of -fno-builtin
651 define float @exp2f_() nounwind uwtable ssp {
652 ; FNOBUILTIN-LABEL: @exp2f_(
653 ; FNOBUILTIN: %1 = call float @exp2f(float 3.000000e+00)
654   %1 = call float @exp2f(float 3.000000e+00)
655   ret float %1
656 }
657
658 ; Shouldn't fold because of -fno-builtin
659 define float @fabsf_() nounwind uwtable ssp {
660 ; FNOBUILTIN-LABEL: @fabsf_(
661 ; FNOBUILTIN: %1 = call float @fabsf(float 3.000000e+00)
662   %1 = call float @fabsf(float 3.000000e+00)
663   ret float %1
664 }
665
666 ; Shouldn't fold because of -fno-builtin
667 define float @floorf_() nounwind uwtable ssp {
668 ; FNOBUILTIN-LABEL: @floorf_(
669 ; FNOBUILTIN: %1 = call float @floorf(float 3.000000e+00)
670   %1 = call float @floorf(float 3.000000e+00)
671   ret float %1
672 }
673
674 ; Shouldn't fold because of -fno-builtin
675 define float @fmodf_() nounwind uwtable ssp {
676 ; FNOBUILTIN-LABEL: @fmodf_(
677 ; FNOBUILTIN: %1 = call float @fmodf(float 3.000000e+00, float 4.000000e+00)
678   %1 = call float @fmodf(float 3.000000e+00, float 4.000000e+00)
679   ret float %1
680 }
681
682 ; Shouldn't fold because of -fno-builtin
683 define float @logf_() nounwind uwtable ssp {
684 ; FNOBUILTIN-LABEL: @logf_(
685 ; FNOBUILTIN: %1 = call float @logf(float 3.000000e+00)
686   %1 = call float @logf(float 3.000000e+00)
687   ret float %1
688 }
689
690 ; Shouldn't fold because of -fno-builtin
691 define float @log10f_() nounwind uwtable ssp {
692 ; FNOBUILTIN-LABEL: @log10f_(
693 ; FNOBUILTIN: %1 = call float @log10f(float 3.000000e+00)
694   %1 = call float @log10f(float 3.000000e+00)
695   ret float %1
696 }
697
698 ; Shouldn't fold because of -fno-builtin
699 define float @powf_() nounwind uwtable ssp {
700 ; FNOBUILTIN-LABEL: @powf_(
701 ; FNOBUILTIN: %1 = call float @powf(float 3.000000e+00, float 4.000000e+00)
702   %1 = call float @powf(float 3.000000e+00, float 4.000000e+00)
703   ret float %1
704 }
705
706 ; Shouldn't fold because of -fno-builtin
707 define float @sinf_() nounwind uwtable ssp {
708 ; FNOBUILTIN-LABEL: @sinf_(
709 ; FNOBUILTIN: %1 = call float @sinf(float 3.000000e+00)
710   %1 = call float @sinf(float 3.000000e+00)
711   ret float %1
712 }
713
714 ; Shouldn't fold because of -fno-builtin
715 define float @sinhf_() nounwind uwtable ssp {
716 ; FNOBUILTIN-LABEL: @sinhf_(
717 ; FNOBUILTIN: %1 = call float @sinhf(float 3.000000e+00)
718   %1 = call float @sinhf(float 3.000000e+00)
719   ret float %1
720 }
721
722 ; Shouldn't fold because of -fno-builtin
723 define float @sqrtf_() nounwind uwtable ssp {
724 ; FNOBUILTIN-LABEL: @sqrtf_(
725 ; FNOBUILTIN: %1 = call float @sqrtf(float 3.000000e+00)
726   %1 = call float @sqrtf(float 3.000000e+00)
727   ret float %1
728 }
729
730 ; Shouldn't fold because of -fno-builtin
731 define float @tanf_() nounwind uwtable ssp {
732 ; FNOBUILTIN-LABEL: @tanf_(
733 ; FNOBUILTIN: %1 = call float @tanf(float 3.000000e+00)
734   %1 = call float @tanf(float 3.000000e+00)
735   ret float %1
736 }
737
738 ; Shouldn't fold because of -fno-builtin
739 define float @tanhf_() nounwind uwtable ssp {
740 ; FNOBUILTIN-LABEL: @tanhf_(
741 ; FNOBUILTIN: %1 = call float @tanhf(float 3.000000e+00)
742   %1 = call float @tanhf(float 3.000000e+00)
743   ret float %1
744 }