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
4 declare float @acosf (float);
5 declare float @acoshf (float);
6 declare float @asinf (float);
7 declare float @asinhf (float);
8 declare float @atan2f (float, float);
9 declare float @atanf (float);
10 declare float @atanhf (float);
11 declare float @cbrtf (float);
12 declare float @copysignf (float, float);
13 declare float @cosf (float);
14 declare float @coshf (float);
15 declare float @erfcf (float);
16 declare float @erff (float);
17 declare float @expf (float);
18 declare float @expm1f (float);
19 declare float @hypotf (float, float);
20 declare float @lgammaf (float);
21 declare float @log10f (float);
22 declare float @log1pf (float);
23 declare float @logf (float);
24 declare float @powf (float, float);
25 declare float @rintf (float);
26 declare float @sinf (float);
27 declare float @sinhf (float);
28 declare float @tanf (float);
29 declare float @tanhf (float);
30 declare double @acos (double);
31 declare double @acosh (double);
32 declare double @anint (double);
33 declare double @asin (double);
34 declare double @asinh (double);
35 declare double @atan (double);
36 declare double @atan2 (double, double);
37 declare double @atanh (double);
38 declare double @cbrt (double);
39 declare double @copysign (double, double);
40 declare double @cos (double);
41 declare double @cosh (double);
42 declare double @cosisin (double);
43 declare double @dnint (double);
44 declare double @erf (double);
45 declare double @erfc (double);
46 declare double @exp (double);
47 declare double @expm1 (double);
48 declare double @hypot (double, double);
49 declare double @lgamma (double);
50 declare double @log (double);
51 declare double @log10 (double);
52 declare double @log1p (double);
53 declare double @pow (double, double);
54 declare double @rsqrt (double);
55 declare double @sin (double);
56 declare double @sincos (double);
57 declare double @sinh (double);
58 declare double @sqrt (double);
59 declare double @tan (double);
60 declare double @tanh (double);
61 declare float @__acosf_finite (float);
62 declare float @__acoshf_finite (float);
63 declare float @__asinf_finite (float);
64 declare float @__atan2f_finite (float, float);
65 declare float @__atanhf_finite (float);
66 declare float @__coshf_finite (float);
67 declare float @__expf_finite (float);
68 declare float @__logf_finite (float);
69 declare float @__log10f_finite (float);
70 declare float @__powf_finite (float, float);
71 declare float @__sinhf_finite (float);
72 declare double @__acos_finite (double);
73 declare double @__acosh_finite (double);
74 declare double @__asin_finite (double);
75 declare double @__atan2_finite (double, double);
76 declare double @__atanh_finite (double);
77 declare double @__cosh_finite (double);
78 declare double @__exp_finite (double);
79 declare double @__log_finite (double);
80 declare double @__log10_finite (double);
81 declare double @__pow_finite (double, double);
82 declare double @__sinh_finite (double);
84 define float @acosf_f32(float %a) #0 {
85 ; CHECK-LABEL: acosf_f32
89 %call = tail call afn float @acosf(float %a)
93 define float @acoshf_f32(float %a) #0 {
94 ; CHECK-LABEL: acoshf_f32
98 %call = tail call afn float @acoshf(float %a)
102 define float @asinf_f32(float %a) #0 {
103 ; CHECK-LABEL: asinf_f32
107 %call = tail call afn float @asinf(float %a)
111 define float @asinhf_f32(float %a) #0 {
112 ; CHECK-LABEL: asinhf_f32
116 %call = tail call afn float @asinhf(float %a)
120 define float @atan2f_f32(float %a, float %b) #0 {
121 ; CHECK-LABEL: atan2f_f32
125 %call = tail call afn float @atan2f(float %a, float %b)
129 define float @atanf_f32(float %a) #0 {
130 ; CHECK-LABEL: atanf_f32
134 %call = tail call afn float @atanf(float %a)
138 define float @atanhf_f32(float %a) #0 {
139 ; CHECK-LABEL: atanhf_f32
143 %call = tail call afn float @atanhf(float %a)
147 define float @cbrtf_f32(float %a) #0 {
148 ; CHECK-LABEL: cbrtf_f32
152 %call = tail call afn float @cbrtf(float %a)
156 define float @copysignf_f32(float %a, float %b) #0 {
157 ; CHECK-LABEL: copysignf_f32
161 %call = tail call afn float @copysignf(float %a, float %b)
165 define float @cosf_f32(float %a) #0 {
166 ; CHECK-LABEL: cosf_f32
170 %call = tail call afn float @cosf(float %a)
174 define float @coshf_f32(float %a) #0 {
175 ; CHECK-LABEL: coshf_f32
179 %call = tail call afn float @coshf(float %a)
183 define float @erfcf_f32(float %a) #0 {
184 ; CHECK-LABEL: erfcf_f32
188 %call = tail call afn float @erfcf(float %a)
192 define float @erff_f32(float %a) #0 {
193 ; CHECK-LABEL: erff_f32
197 %call = tail call afn float @erff(float %a)
201 define float @expf_f32(float %a) #0 {
202 ; CHECK-LABEL: expf_f32
206 %call = tail call afn float @expf(float %a)
210 define float @expm1f_f32(float %a) #0 {
211 ; CHECK-LABEL: expm1f_f32
215 %call = tail call afn float @expm1f(float %a)
219 define float @hypotf_f32(float %a, float %b) #0 {
220 ; CHECK-LABEL: hypotf_f32
224 %call = tail call afn float @hypotf(float %a, float %b)
228 define float @lgammaf_f32(float %a) #0 {
229 ; CHECK-LABEL: lgammaf_f32
230 ; CHECK: __xl_lgammaf
233 %call = tail call afn float @lgammaf(float %a)
237 define float @log10f_f32(float %a) #0 {
238 ; CHECK-LABEL: log10f_f32
242 %call = tail call afn float @log10f(float %a)
246 define float @log1pf_f32(float %a) #0 {
247 ; CHECK-LABEL: log1pf_f32
251 %call = tail call afn float @log1pf(float %a)
255 define float @logf_f32(float %a) #0 {
256 ; CHECK-LABEL: logf_f32
260 %call = tail call afn float @logf(float %a)
264 define float @powf_f32(float %a, float %b) #0 {
265 ; CHECK-LABEL: powf_f32
269 %call = tail call afn float @powf(float %a, float %b)
273 define float @rintf_f32(float %a) #0 {
274 ; CHECK-LABEL: rintf_f32
275 ; CHECK-NOT: __xl_rintf
278 %call = tail call afn float @rintf(float %a)
282 define float @sinf_f32(float %a) #0 {
283 ; CHECK-LABEL: sinf_f32
287 %call = tail call afn float @sinf(float %a)
291 define float @sinhf_f32(float %a) #0 {
292 ; CHECK-LABEL: sinhf_f32
296 %call = tail call afn float @sinhf(float %a)
300 define float @tanf_f32(float %a) #0 {
301 ; CHECK-LABEL: tanf_f32
305 %call = tail call afn float @tanf(float %a)
309 define float @tanhf_f32(float %a) #0 {
310 ; CHECK-LABEL: tanhf_f32
314 %call = tail call afn float @tanhf(float %a)
318 define double @acos_f64(double %a) #0 {
319 ; CHECK-LABEL: acos_f64
323 %call = tail call afn double @acos(double %a)
327 define double @acosh_f64(double %a) #0 {
328 ; CHECK-LABEL: acosh_f64
332 %call = tail call afn double @acosh(double %a)
336 define double @anint_f64(double %a) #0 {
337 ; CHECK-LABEL: anint_f64
338 ; CHECK-NOT: __xl_anint
341 %call = tail call afn double @anint(double %a)
345 define double @asin_f64(double %a) #0 {
346 ; CHECK-LABEL: asin_f64
350 %call = tail call afn double @asin(double %a)
354 define double @asinh_f64(double %a) #0 {
355 ; CHECK-LABEL: asinh_f64
359 %call = tail call afn double @asinh(double %a)
363 define double @atan_f64(double %a) #0 {
364 ; CHECK-LABEL: atan_f64
368 %call = tail call afn double @atan(double %a)
372 define double @atan2_f64(double %a, double %b) #0 {
373 ; CHECK-LABEL: atan2_f64
377 %call = tail call afn double @atan2(double %a, double %b)
381 define double @atanh_f64(double %a) #0 {
382 ; CHECK-LABEL: atanh_f64
386 %call = tail call afn double @atanh(double %a)
390 define double @cbrt_f64(double %a) #0 {
391 ; CHECK-LABEL: cbrt_f64
395 %call = tail call afn double @cbrt(double %a)
399 define double @copysign_f64(double %a, double %b) #0 {
400 ; CHECK-LABEL: copysign_f64
404 %call = tail call afn double @copysign(double %a, double %b)
408 define double @cos_f64(double %a) #0 {
409 ; CHECK-LABEL: cos_f64
413 %call = tail call afn double @cos(double %a)
417 define double @cosh_f64(double %a) #0 {
418 ; CHECK-LABEL: cosh_f64
422 %call = tail call afn double @cosh(double %a)
426 define double @cosisin_f64(double %a) #0 {
427 ; CHECK-LABEL: cosisin_f64
428 ; CHECK-NOT: __xl_cosisin
431 %call = tail call afn double @cosisin(double %a)
435 define double @dnint_f64(double %a) #0 {
436 ; CHECK-LABEL: dnint_f64
437 ; CHECK-NOT: __xl_dnint
440 %call = tail call afn double @dnint(double %a)
444 define double @erf_f64(double %a) #0 {
445 ; CHECK-LABEL: erf_f64
449 %call = tail call afn double @erf(double %a)
453 define double @erfc_f64(double %a) #0 {
454 ; CHECK-LABEL: erfc_f64
458 %call = tail call afn double @erfc(double %a)
462 define double @exp_f64(double %a) #0 {
463 ; CHECK-LABEL: exp_f64
467 %call = tail call afn double @exp(double %a)
471 define double @expm1_f64(double %a) #0 {
472 ; CHECK-LABEL: expm1_f64
476 %call = tail call afn double @expm1(double %a)
480 define double @hypot_f64(double %a, double %b) #0 {
481 ; CHECK-LABEL: hypot_f64
485 %call = tail call afn double @hypot(double %a, double %b)
489 define double @lgamma_f64(double %a) #0 {
490 ; CHECK-LABEL: lgamma_f64
494 %call = tail call afn double @lgamma(double %a)
498 define double @log_f64(double %a) #0 {
499 ; CHECK-LABEL: log_f64
503 %call = tail call afn double @log(double %a)
507 define double @log10_f64(double %a) #0 {
508 ; CHECK-LABEL: log10_f64
512 %call = tail call afn double @log10(double %a)
516 define double @log1p_f64(double %a) #0 {
517 ; CHECK-LABEL: log1p_f64
521 %call = tail call afn double @log1p(double %a)
525 define double @pow_f64(double %a, double %b) #0 {
526 ; CHECK-LABEL: pow_f64
530 %call = tail call afn double @pow(double %a, double %b)
534 define double @rsqrt_f64(double %a) #0 {
535 ; CHECK-LABEL: rsqrt_f64
539 %call = tail call afn double @rsqrt(double %a)
543 define double @sin_f64(double %a) #0 {
544 ; CHECK-LABEL: sin_f64
548 %call = tail call afn double @sin(double %a)
552 define double @sincos_f64(double %a) #0 {
553 ; CHECK-LABEL: sincos_f64
554 ; CHECK-NOT: __xl_sincos
557 %call = tail call afn double @sincos(double %a)
561 define double @sinh_f64(double %a) #0 {
562 ; CHECK-LABEL: sinh_f64
566 %call = tail call afn double @sinh(double %a)
570 define double @sqrt_f64(double %a) #0 {
571 ; CHECK-LABEL: sqrt_f64
575 %call = tail call afn double @sqrt(double %a)
579 define double @tan_f64(double %a) #0 {
580 ; CHECK-LABEL: tan_f64
584 %call = tail call afn double @tan(double %a)
588 define double @tanh_f64(double %a) #0 {
589 ; CHECK-LABEL: tanh_f64
593 %call = tail call afn double @tanh(double %a)
597 define float @__acosf_finite_f32(float %a) #0 {
598 ; CHECK-LABEL: __acosf_finite_f32
602 %call = tail call afn float @__acosf_finite(float %a)
606 define float @__acoshf_finite_f32(float %a) #0 {
607 ; CHECK-LABEL: __acoshf_finite_f32
611 %call = tail call afn float @__acoshf_finite(float %a)
615 define float @__asinf_finite_f32(float %a) #0 {
616 ; CHECK-LABEL: __asinf_finite_f32
620 %call = tail call afn float @__asinf_finite(float %a)
624 define float @__atan2f_finite_f32(float %a, float %b) #0 {
625 ; CHECK-LABEL: __atan2f_finite_f32
629 %call = tail call afn float @__atan2f_finite(float %a, float %b)
633 define float @__atanhf_finite_f32(float %a) #0 {
634 ; CHECK-LABEL: __atanhf_finite_f32
638 %call = tail call afn float @__atanhf_finite(float %a)
642 define float @__coshf_finite_f32(float %a) #0 {
643 ; CHECK-LABEL: __coshf_finite_f32
647 %call = tail call afn float @__coshf_finite(float %a)
650 define float @__expf_finite_f32(float %a) #0 {
651 ; CHECK-LABEL: __expf_finite_f32
655 %call = tail call afn float @__expf_finite(float %a)
658 define float @__logf_finite_f32(float %a) #0 {
659 ; CHECK-LABEL: __logf_finite_f32
663 %call = tail call afn float @__logf_finite(float %a)
666 define float @__log10f_finite_f32(float %a) #0 {
667 ; CHECK-LABEL: __log10f_finite_f32
671 %call = tail call afn float @__log10f_finite(float %a)
674 define float @__powf_finite_f32(float %a, float %b) #0 {
675 ; CHECK-LABEL: __powf_finite_f32
679 %call = tail call afn float @__powf_finite(float %a, float %b)
682 define float @__sinhf_finite_f32(float %a) #0 {
683 ; CHECK-LABEL: __sinhf_finite_f32
687 %call = tail call afn float @__sinhf_finite(float %a)
691 define double @__acos_finite_f64(double %a) #0 {
692 ; CHECK-LABEL: __acos_finite_f64
696 %call = tail call afn double @__acos_finite(double %a)
700 define double @__acosh_finite_f64(double %a) #0 {
701 ; CHECK-LABEL: __acosh_finite_f64
705 %call = tail call afn double @__acosh_finite(double %a)
709 define double @__asin_finite_f64(double %a) #0 {
710 ; CHECK-LABEL: __asin_finite_f64
714 %call = tail call afn double @__asin_finite(double %a)
718 define double @__atan2_finite_f64(double %a, double %b) #0 {
719 ; CHECK-LABEL: __atan2_finite_f64
723 %call = tail call afn double @__atan2_finite(double %a, double %b)
727 define double @__atanh_finite_f64(double %a) #0 {
728 ; CHECK-LABEL: __atanh_finite_f64
732 %call = tail call afn double @__atanh_finite(double %a)
736 define double @__cosh_finite_f64(double %a) #0 {
737 ; CHECK-LABEL: __cosh_finite_f64
741 %call = tail call afn double @__cosh_finite(double %a)
745 define double @__exp_finite_f64(double %a) #0 {
746 ; CHECK-LABEL: __exp_finite_f64
750 %call = tail call afn double @__exp_finite(double %a)
754 define double @__log_finite_f64(double %a) #0 {
755 ; CHECK-LABEL: __log_finite_f64
759 %call = tail call afn double @__log_finite(double %a)
763 define double @__log10_finite_f64(double %a) #0 {
764 ; CHECK-LABEL: __log10_finite_f64
768 %call = tail call afn double @__log10_finite(double %a)
772 define double @__pow_finite_f64(double %a, double %b) #0 {
773 ; CHECK-LABEL: __pow_finite_f64
777 %call = tail call afn double @__pow_finite(double %a, double %b)
781 define double @__sinh_finite_f64(double %a) #0 {
782 ; CHECK-LABEL: __sinh_finite_f64
786 %call = tail call afn double @__sinh_finite(double %a)
790 attributes #0 = { "approx-func-fp-math"="true" }