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 ; CHECK: ret
102   %0 = call double @llvm.pow.f64(double 1.500000e+00, double 3.000000e+00)
103   ret double %0
104 }
105 declare double @llvm.pow.f64(double, double) nounwind readonly
106
107 define double @test_acos() nounwind uwtable ssp {
108 entry:
109 ; CHECK-LABEL: @test_acos(
110 ; CHECK-NOT: call
111 ; CHECK: ret
112   %0 = call double @acos(double 3.000000e+00)
113   ret double %0
114 }
115
116 define double @test_asin() nounwind uwtable ssp {
117 entry:
118 ; CHECK-LABEL: @test_asin(
119 ; CHECK-NOT: call
120 ; CHECK: ret
121   %0 = call double @asin(double 3.000000e+00)
122   ret double %0
123 }
124
125 define double @test_atan() nounwind uwtable ssp {
126 entry:
127 ; CHECK-LABEL: @test_atan(
128 ; CHECK-NOT: call
129 ; CHECK: ret
130   %0 = call double @atan(double 3.000000e+00)
131   ret double %0
132 }
133
134 define double @test_atan2() nounwind uwtable ssp {
135 entry:
136 ; CHECK-LABEL: @test_atan2(
137 ; CHECK-NOT: call
138 ; CHECK: ret
139   %0 = call double @atan2(double 3.000000e+00, double 4.000000e+00)
140   ret double %0
141 }
142
143 define double @test_ceil() nounwind uwtable ssp {
144 entry:
145 ; CHECK-LABEL: @test_ceil(
146 ; CHECK-NOT: call
147 ; CHECK: ret
148   %0 = call double @ceil(double 3.000000e+00)
149   ret double %0
150 }
151
152 define double @test_cos() nounwind uwtable ssp {
153 entry:
154 ; CHECK-LABEL: @test_cos(
155 ; CHECK-NOT: call
156 ; CHECK: ret
157   %0 = call double @cos(double 3.000000e+00)
158   ret double %0
159 }
160
161 define double @test_cosh() nounwind uwtable ssp {
162 entry:
163 ; CHECK-LABEL: @test_cosh(
164 ; CHECK-NOT: call
165 ; CHECK: ret
166   %0 = call double @cosh(double 3.000000e+00)
167   ret double %0
168 }
169
170 define double @test_exp() nounwind uwtable ssp {
171 entry:
172 ; CHECK-LABEL: @test_exp(
173 ; CHECK-NOT: call
174 ; CHECK: ret
175   %0 = call double @exp(double 3.000000e+00)
176   ret double %0
177 }
178
179 define double @test_exp2() nounwind uwtable ssp {
180 entry:
181 ; CHECK-LABEL: @test_exp2(
182 ; CHECK-NOT: call
183 ; CHECK: ret
184   %0 = call double @exp2(double 3.000000e+00)
185   ret double %0
186 }
187
188 define double @test_fabs() nounwind uwtable ssp {
189 entry:
190 ; CHECK-LABEL: @test_fabs(
191 ; CHECK-NOT: call
192 ; CHECK: ret
193   %0 = call double @fabs(double 3.000000e+00)
194   ret double %0
195 }
196
197 define double @test_floor() nounwind uwtable ssp {
198 entry:
199 ; CHECK-LABEL: @test_floor(
200 ; CHECK-NOT: call
201 ; CHECK: ret
202   %0 = call double @floor(double 3.000000e+00)
203   ret double %0
204 }
205
206 define double @test_fmod() nounwind uwtable ssp {
207 entry:
208 ; CHECK-LABEL: @test_fmod(
209 ; CHECK-NOT: call
210 ; CHECK: ret
211   %0 = call double @fmod(double 3.000000e+00, double 4.000000e+00)
212   ret double %0
213 }
214
215 define double @test_log() nounwind uwtable ssp {
216 entry:
217 ; CHECK-LABEL: @test_log(
218 ; CHECK-NOT: call
219 ; CHECK: ret
220   %0 = call double @log(double 3.000000e+00)
221   ret double %0
222 }
223
224 define double @test_log10() nounwind uwtable ssp {
225 entry:
226 ; CHECK-LABEL: @test_log10(
227 ; CHECK-NOT: call
228 ; CHECK: ret
229   %0 = call double @log10(double 3.000000e+00)
230   ret double %0
231 }
232
233 define double @test_pow() nounwind uwtable ssp {
234 entry:
235 ; CHECK-LABEL: @test_pow(
236 ; CHECK-NOT: call
237 ; CHECK: ret
238   %0 = call double @pow(double 3.000000e+00, double 4.000000e+00)
239   ret double %0
240 }
241
242 define double @test_sin() nounwind uwtable ssp {
243 entry:
244 ; CHECK-LABEL: @test_sin(
245 ; CHECK-NOT: call
246 ; CHECK: ret
247   %0 = call double @sin(double 3.000000e+00)
248   ret double %0
249 }
250
251 define double @test_sinh() nounwind uwtable ssp {
252 entry:
253 ; CHECK-LABEL: @test_sinh(
254 ; CHECK-NOT: call
255 ; CHECK: ret
256   %0 = call double @sinh(double 3.000000e+00)
257   ret double %0
258 }
259
260 define double @test_sqrt() nounwind uwtable ssp {
261 entry:
262 ; CHECK-LABEL: @test_sqrt(
263 ; CHECK-NOT: call
264 ; CHECK: ret
265   %0 = call double @sqrt(double 3.000000e+00)
266   ret double %0
267 }
268
269 define double @test_tan() nounwind uwtable ssp {
270 entry:
271 ; CHECK-LABEL: @test_tan(
272 ; CHECK-NOT: call
273 ; CHECK: ret
274   %0 = call double @tan(double 3.000000e+00)
275   ret double %0
276 }
277
278 define double @test_tanh() nounwind uwtable ssp {
279 entry:
280 ; CHECK-LABEL: @test_tanh(
281 ; CHECK-NOT: call
282 ; CHECK: ret
283   %0 = call double @tanh(double 3.000000e+00)
284   ret double %0
285 }
286
287 define float @test_acosf() nounwind uwtable ssp {
288 entry:
289 ; CHECK-LABEL: @test_acosf(
290 ; CHECK-NOT: call
291 ; CHECK: ret
292   %0 = call float @acosf(float 3.000000e+00)
293   ret float %0
294 }
295
296 define float @test_asinf() nounwind uwtable ssp {
297 entry:
298 ; CHECK-LABEL: @test_asinf(
299 ; CHECK-NOT: call
300 ; CHECK: ret
301   %0 = call float @asinf(float 3.000000e+00)
302   ret float %0
303 }
304
305 define float @test_atanf() nounwind uwtable ssp {
306 entry:
307 ; CHECK-LABEL: @test_atanf(
308 ; CHECK-NOT: call
309 ; CHECK: ret
310   %0 = call float @atanf(float 3.000000e+00)
311   ret float %0
312 }
313
314 define float @test_atan2f() nounwind uwtable ssp {
315 entry:
316 ; CHECK-LABEL: @test_atan2f(
317 ; CHECK-NOT: call
318 ; CHECK: ret
319   %0 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
320   ret float %0
321 }
322
323 define float @test_ceilf() nounwind uwtable ssp {
324 entry:
325 ; CHECK-LABEL: @test_ceilf(
326 ; CHECK-NOT: call
327 ; CHECK: ret
328   %0 = call float @ceilf(float 3.000000e+00)
329   ret float %0
330 }
331
332 define float @test_cosf() nounwind uwtable ssp {
333 entry:
334 ; CHECK-LABEL: @test_cosf(
335 ; CHECK-NOT: call
336 ; CHECK: ret
337   %0 = call float @cosf(float 3.000000e+00)
338   ret float %0
339 }
340
341 define float @test_coshf() nounwind uwtable ssp {
342 entry:
343 ; CHECK-LABEL: @test_coshf(
344 ; CHECK-NOT: call
345 ; CHECK: ret
346   %0 = call float @coshf(float 3.000000e+00)
347   ret float %0
348 }
349
350 define float @test_expf() nounwind uwtable ssp {
351 entry:
352 ; CHECK-LABEL: @test_expf(
353 ; CHECK-NOT: call
354 ; CHECK: ret
355   %0 = call float @expf(float 3.000000e+00)
356   ret float %0
357 }
358
359 define float @test_exp2f() nounwind uwtable ssp {
360 entry:
361 ; CHECK-LABEL: @test_exp2f(
362 ; CHECK-NOT: call
363 ; CHECK: ret
364   %0 = call float @exp2f(float 3.000000e+00)
365   ret float %0
366 }
367
368 define float @test_fabsf() nounwind uwtable ssp {
369 entry:
370 ; CHECK-LABEL: @test_fabsf(
371 ; CHECK-NOT: call
372 ; CHECK: ret
373   %0 = call float @fabsf(float 3.000000e+00)
374   ret float %0
375 }
376
377 define float @test_floorf() nounwind uwtable ssp {
378 entry:
379 ; CHECK-LABEL: @test_floorf(
380 ; CHECK-NOT: call
381 ; CHECK: ret
382   %0 = call float @floorf(float 3.000000e+00)
383   ret float %0
384 }
385
386 define float @test_fmodf() nounwind uwtable ssp {
387 entry:
388 ; CHECK-LABEL: @test_fmodf(
389 ; CHECK-NOT: call
390 ; CHECK: ret
391   %0 = call float @fmodf(float 3.000000e+00, float 4.000000e+00)
392   ret float %0
393 }
394
395 define float @test_logf() nounwind uwtable ssp {
396 entry:
397 ; CHECK-LABEL: @test_logf(
398 ; CHECK-NOT: call
399 ; CHECK: ret
400   %0 = call float @logf(float 3.000000e+00)
401   ret float %0
402 }
403
404 define float @test_log10f() nounwind uwtable ssp {
405 entry:
406 ; CHECK-LABEL: @test_log10f(
407 ; CHECK-NOT: call
408 ; CHECK: ret
409   %0 = call float @log10f(float 3.000000e+00)
410   ret float %0
411 }
412
413 define float @test_powf() nounwind uwtable ssp {
414 entry:
415 ; CHECK-LABEL: @test_powf(
416 ; CHECK-NOT: call
417 ; CHECK: ret
418   %0 = call float @powf(float 3.000000e+00, float 4.000000e+00)
419   ret float %0
420 }
421
422 define float @test_sinf() nounwind uwtable ssp {
423 entry:
424 ; CHECK-LABEL: @test_sinf(
425 ; CHECK-NOT: call
426 ; CHECK: ret
427   %0 = call float @sinf(float 3.000000e+00)
428   ret float %0
429 }
430
431 define float @test_sinhf() nounwind uwtable ssp {
432 entry:
433 ; CHECK-LABEL: @test_sinhf(
434 ; CHECK-NOT: call
435 ; CHECK: ret
436   %0 = call float @sinhf(float 3.000000e+00)
437   ret float %0
438 }
439
440 define float @test_sqrtf() nounwind uwtable ssp {
441 entry:
442 ; CHECK-LABEL: @test_sqrtf(
443 ; CHECK-NOT: call
444 ; CHECK: ret
445   %0 = call float @sqrtf(float 3.000000e+00)
446   ret float %0
447 }
448
449 define float @test_tanf() nounwind uwtable ssp {
450 entry:
451 ; CHECK-LABEL: @test_tanf(
452 ; CHECK-NOT: call
453 ; CHECK: ret
454   %0 = call float @tanf(float 3.000000e+00)
455   ret float %0
456 }
457
458 define float @test_tanhf() nounwind uwtable ssp {
459 entry:
460 ; CHECK-LABEL: @test_tanhf(
461 ; CHECK-NOT: call
462 ; CHECK: ret
463   %0 = call float @tanhf(float 3.000000e+00)
464   ret float %0
465 }
466
467 ; Shouldn't fold because of -fno-builtin
468 define double @acos_() nounwind uwtable ssp {
469 ; FNOBUILTIN-LABEL: @acos_(
470 ; FNOBUILTIN: %1 = call double @acos(double 3.000000e+00)
471   %1 = call double @acos(double 3.000000e+00)
472   ret double %1
473 }
474
475 ; Shouldn't fold because of -fno-builtin
476 define double @asin_() nounwind uwtable ssp {
477 ; FNOBUILTIN-LABEL: @asin_(
478 ; FNOBUILTIN: %1 = call double @asin(double 3.000000e+00)
479   %1 = call double @asin(double 3.000000e+00)
480   ret double %1
481 }
482
483 ; Shouldn't fold because of -fno-builtin
484 define double @atan_() nounwind uwtable ssp {
485 ; FNOBUILTIN-LABEL: @atan_(
486 ; FNOBUILTIN: %1 = call double @atan(double 3.000000e+00)
487   %1 = call double @atan(double 3.000000e+00)
488   ret double %1
489 }
490
491 ; Shouldn't fold because of -fno-builtin
492 define double @atan2_() nounwind uwtable ssp {
493 ; FNOBUILTIN-LABEL: @atan2_(
494 ; FNOBUILTIN: %1 = call double @atan2(double 3.000000e+00, double 4.000000e+00)
495   %1 = call double @atan2(double 3.000000e+00, double 4.000000e+00)
496   ret double %1
497 }
498
499 ; Shouldn't fold because of -fno-builtin
500 define double @ceil_() nounwind uwtable ssp {
501 ; FNOBUILTIN-LABEL: @ceil_(
502 ; FNOBUILTIN: %1 = call double @ceil(double 3.000000e+00)
503   %1 = call double @ceil(double 3.000000e+00)
504   ret double %1
505 }
506
507 ; Shouldn't fold because of -fno-builtin
508 define double @cos_() nounwind uwtable ssp {
509 ; FNOBUILTIN-LABEL: @cos_(
510 ; FNOBUILTIN: %1 = call double @cos(double 3.000000e+00)
511   %1 = call double @cos(double 3.000000e+00)
512   ret double %1
513 }
514
515 ; Shouldn't fold because of -fno-builtin
516 define double @cosh_() nounwind uwtable ssp {
517 ; FNOBUILTIN-LABEL: @cosh_(
518 ; FNOBUILTIN: %1 = call double @cosh(double 3.000000e+00)
519   %1 = call double @cosh(double 3.000000e+00)
520   ret double %1
521 }
522
523 ; Shouldn't fold because of -fno-builtin
524 define double @exp_() nounwind uwtable ssp {
525 ; FNOBUILTIN-LABEL: @exp_(
526 ; FNOBUILTIN: %1 = call double @exp(double 3.000000e+00)
527   %1 = call double @exp(double 3.000000e+00)
528   ret double %1
529 }
530
531 ; Shouldn't fold because of -fno-builtin
532 define double @exp2_() nounwind uwtable ssp {
533 ; FNOBUILTIN-LABEL: @exp2_(
534 ; FNOBUILTIN: %1 = call double @exp2(double 3.000000e+00)
535   %1 = call double @exp2(double 3.000000e+00)
536   ret double %1
537 }
538
539 ; Shouldn't fold because of -fno-builtin
540 define double @fabs_() nounwind uwtable ssp {
541 ; FNOBUILTIN-LABEL: @fabs_(
542 ; FNOBUILTIN: %1 = call double @fabs(double 3.000000e+00)
543   %1 = call double @fabs(double 3.000000e+00)
544   ret double %1
545 }
546
547 ; Shouldn't fold because of -fno-builtin
548 define double @floor_() nounwind uwtable ssp {
549 ; FNOBUILTIN-LABEL: @floor_(
550 ; FNOBUILTIN: %1 = call double @floor(double 3.000000e+00)
551   %1 = call double @floor(double 3.000000e+00)
552   ret double %1
553 }
554
555 ; Shouldn't fold because of -fno-builtin
556 define double @fmod_() nounwind uwtable ssp {
557 ; FNOBUILTIN-LABEL: @fmod_(
558 ; FNOBUILTIN: %1 = call double @fmod(double 3.000000e+00, double 4.000000e+00)
559   %1 = call double @fmod(double 3.000000e+00, double 4.000000e+00)
560   ret double %1
561 }
562
563 ; Shouldn't fold because of -fno-builtin
564 define double @log_() nounwind uwtable ssp {
565 ; FNOBUILTIN-LABEL: @log_(
566 ; FNOBUILTIN: %1 = call double @log(double 3.000000e+00)
567   %1 = call double @log(double 3.000000e+00)
568   ret double %1
569 }
570
571 ; Shouldn't fold because of -fno-builtin
572 define double @log10_() nounwind uwtable ssp {
573 ; FNOBUILTIN-LABEL: @log10_(
574 ; FNOBUILTIN: %1 = call double @log10(double 3.000000e+00)
575   %1 = call double @log10(double 3.000000e+00)
576   ret double %1
577 }
578
579 ; Shouldn't fold because of -fno-builtin
580 define double @pow_() nounwind uwtable ssp {
581 ; FNOBUILTIN-LABEL: @pow_(
582 ; FNOBUILTIN: %1 = call double @pow(double 3.000000e+00, double 4.000000e+00)
583   %1 = call double @pow(double 3.000000e+00, double 4.000000e+00)
584   ret double %1
585 }
586
587 ; Shouldn't fold because of -fno-builtin
588 define double @sin_() nounwind uwtable ssp {
589 ; FNOBUILTIN-LABEL: @sin_(
590 ; FNOBUILTIN: %1 = call double @sin(double 3.000000e+00)
591   %1 = call double @sin(double 3.000000e+00)
592   ret double %1
593 }
594
595 ; Shouldn't fold because of -fno-builtin
596 define double @sinh_() nounwind uwtable ssp {
597 ; FNOBUILTIN-LABEL: @sinh_(
598 ; FNOBUILTIN: %1 = call double @sinh(double 3.000000e+00)
599   %1 = call double @sinh(double 3.000000e+00)
600   ret double %1
601 }
602
603 ; Shouldn't fold because of -fno-builtin
604 define double @sqrt_() nounwind uwtable ssp {
605 ; FNOBUILTIN-LABEL: @sqrt_(
606 ; FNOBUILTIN: %1 = call double @sqrt(double 3.000000e+00)
607   %1 = call double @sqrt(double 3.000000e+00)
608   ret double %1
609 }
610
611 ; Shouldn't fold because of -fno-builtin
612 define double @tan_() nounwind uwtable ssp {
613 ; FNOBUILTIN-LABEL: @tan_(
614 ; FNOBUILTIN: %1 = call double @tan(double 3.000000e+00)
615   %1 = call double @tan(double 3.000000e+00)
616   ret double %1
617 }
618
619 ; Shouldn't fold because of -fno-builtin
620 define double @tanh_() nounwind uwtable ssp {
621 ; FNOBUILTIN-LABEL: @tanh_(
622 ; FNOBUILTIN: %1 = call double @tanh(double 3.000000e+00)
623   %1 = call double @tanh(double 3.000000e+00)
624   ret double %1
625 }
626
627 ; Shouldn't fold because of -fno-builtin
628 define float @acosf_() nounwind uwtable ssp {
629 ; FNOBUILTIN-LABEL: @acosf_(
630 ; FNOBUILTIN: %1 = call float @acosf(float 3.000000e+00)
631   %1 = call float @acosf(float 3.000000e+00)
632   ret float %1
633 }
634
635 ; Shouldn't fold because of -fno-builtin
636 define float @asinf_() nounwind uwtable ssp {
637 ; FNOBUILTIN-LABEL: @asinf_(
638 ; FNOBUILTIN: %1 = call float @asinf(float 3.000000e+00)
639   %1 = call float @asinf(float 3.000000e+00)
640   ret float %1
641 }
642
643 ; Shouldn't fold because of -fno-builtin
644 define float @atanf_() nounwind uwtable ssp {
645 ; FNOBUILTIN-LABEL: @atanf_(
646 ; FNOBUILTIN: %1 = call float @atanf(float 3.000000e+00)
647   %1 = call float @atanf(float 3.000000e+00)
648   ret float %1
649 }
650
651 ; Shouldn't fold because of -fno-builtin
652 define float @atan2f_() nounwind uwtable ssp {
653 ; FNOBUILTIN-LABEL: @atan2f_(
654 ; FNOBUILTIN: %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
655   %1 = call float @atan2f(float 3.000000e+00, float 4.000000e+00)
656   ret float %1
657 }
658
659 ; Shouldn't fold because of -fno-builtin
660 define float @ceilf_() nounwind uwtable ssp {
661 ; FNOBUILTIN-LABEL: @ceilf_(
662 ; FNOBUILTIN: %1 = call float @ceilf(float 3.000000e+00)
663   %1 = call float @ceilf(float 3.000000e+00)
664   ret float %1
665 }
666
667 ; Shouldn't fold because of -fno-builtin
668 define float @cosf_() nounwind uwtable ssp {
669 ; FNOBUILTIN-LABEL: @cosf_(
670 ; FNOBUILTIN: %1 = call float @cosf(float 3.000000e+00)
671   %1 = call float @cosf(float 3.000000e+00)
672   ret float %1
673 }
674
675 ; Shouldn't fold because of -fno-builtin
676 define float @coshf_() nounwind uwtable ssp {
677 ; FNOBUILTIN-LABEL: @coshf_(
678 ; FNOBUILTIN: %1 = call float @coshf(float 3.000000e+00)
679   %1 = call float @coshf(float 3.000000e+00)
680   ret float %1
681 }
682
683 ; Shouldn't fold because of -fno-builtin
684 define float @expf_() nounwind uwtable ssp {
685 ; FNOBUILTIN-LABEL: @expf_(
686 ; FNOBUILTIN: %1 = call float @expf(float 3.000000e+00)
687   %1 = call float @expf(float 3.000000e+00)
688   ret float %1
689 }
690
691 ; Shouldn't fold because of -fno-builtin
692 define float @exp2f_() nounwind uwtable ssp {
693 ; FNOBUILTIN-LABEL: @exp2f_(
694 ; FNOBUILTIN: %1 = call float @exp2f(float 3.000000e+00)
695   %1 = call float @exp2f(float 3.000000e+00)
696   ret float %1
697 }
698
699 ; Shouldn't fold because of -fno-builtin
700 define float @fabsf_() nounwind uwtable ssp {
701 ; FNOBUILTIN-LABEL: @fabsf_(
702 ; FNOBUILTIN: %1 = call float @fabsf(float 3.000000e+00)
703   %1 = call float @fabsf(float 3.000000e+00)
704   ret float %1
705 }
706
707 ; Shouldn't fold because of -fno-builtin
708 define float @floorf_() nounwind uwtable ssp {
709 ; FNOBUILTIN-LABEL: @floorf_(
710 ; FNOBUILTIN: %1 = call float @floorf(float 3.000000e+00)
711   %1 = call float @floorf(float 3.000000e+00)
712   ret float %1
713 }
714
715 ; Shouldn't fold because of -fno-builtin
716 define float @fmodf_() nounwind uwtable ssp {
717 ; FNOBUILTIN-LABEL: @fmodf_(
718 ; FNOBUILTIN: %1 = call float @fmodf(float 3.000000e+00, float 4.000000e+00)
719   %1 = call float @fmodf(float 3.000000e+00, float 4.000000e+00)
720   ret float %1
721 }
722
723 ; Shouldn't fold because of -fno-builtin
724 define float @logf_() nounwind uwtable ssp {
725 ; FNOBUILTIN-LABEL: @logf_(
726 ; FNOBUILTIN: %1 = call float @logf(float 3.000000e+00)
727   %1 = call float @logf(float 3.000000e+00)
728   ret float %1
729 }
730
731 ; Shouldn't fold because of -fno-builtin
732 define float @log10f_() nounwind uwtable ssp {
733 ; FNOBUILTIN-LABEL: @log10f_(
734 ; FNOBUILTIN: %1 = call float @log10f(float 3.000000e+00)
735   %1 = call float @log10f(float 3.000000e+00)
736   ret float %1
737 }
738
739 ; Shouldn't fold because of -fno-builtin
740 define float @powf_() nounwind uwtable ssp {
741 ; FNOBUILTIN-LABEL: @powf_(
742 ; FNOBUILTIN: %1 = call float @powf(float 3.000000e+00, float 4.000000e+00)
743   %1 = call float @powf(float 3.000000e+00, float 4.000000e+00)
744   ret float %1
745 }
746
747 ; Shouldn't fold because of -fno-builtin
748 define float @sinf_() nounwind uwtable ssp {
749 ; FNOBUILTIN-LABEL: @sinf_(
750 ; FNOBUILTIN: %1 = call float @sinf(float 3.000000e+00)
751   %1 = call float @sinf(float 3.000000e+00)
752   ret float %1
753 }
754
755 ; Shouldn't fold because of -fno-builtin
756 define float @sinhf_() nounwind uwtable ssp {
757 ; FNOBUILTIN-LABEL: @sinhf_(
758 ; FNOBUILTIN: %1 = call float @sinhf(float 3.000000e+00)
759   %1 = call float @sinhf(float 3.000000e+00)
760   ret float %1
761 }
762
763 ; Shouldn't fold because of -fno-builtin
764 define float @sqrtf_() nounwind uwtable ssp {
765 ; FNOBUILTIN-LABEL: @sqrtf_(
766 ; FNOBUILTIN: %1 = call float @sqrtf(float 3.000000e+00)
767   %1 = call float @sqrtf(float 3.000000e+00)
768   ret float %1
769 }
770
771 ; Shouldn't fold because of -fno-builtin
772 define float @tanf_() nounwind uwtable ssp {
773 ; FNOBUILTIN-LABEL: @tanf_(
774 ; FNOBUILTIN: %1 = call float @tanf(float 3.000000e+00)
775   %1 = call float @tanf(float 3.000000e+00)
776   ret float %1
777 }
778
779 ; Shouldn't fold because of -fno-builtin
780 define float @tanhf_() nounwind uwtable ssp {
781 ; FNOBUILTIN-LABEL: @tanhf_(
782 ; FNOBUILTIN: %1 = call float @tanhf(float 3.000000e+00)
783   %1 = call float @tanhf(float 3.000000e+00)
784   ret float %1
785 }