[OpenACC] Enable 'attach' clause for combined constructs
[llvm-project.git] / llvm / test / CodeGen / PowerPC / lower-scalar-mass-afn.ll
blob018fbe99ce49905b95af2d0311bb7ae3457575fc
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
86 ; CHECK: __xl_acosf
87 ; CHECK: blr
88 entry:
89   %call = tail call afn float @acosf(float %a)
90   ret float %call
93 define float @acoshf_f32(float %a) #0 {
94 ; CHECK-LABEL: acoshf_f32
95 ; CHECK: __xl_acoshf
96 ; CHECK: blr
97 entry:
98   %call = tail call afn float @acoshf(float %a)
99   ret float %call
102 define float @asinf_f32(float %a) #0 {
103 ; CHECK-LABEL: asinf_f32
104 ; CHECK: __xl_asinf
105 ; CHECK: blr
106 entry:
107   %call = tail call afn float @asinf(float %a)
108   ret float %call
111 define float @asinhf_f32(float %a) #0 {
112 ; CHECK-LABEL: asinhf_f32
113 ; CHECK: __xl_asinhf
114 ; CHECK: blr
115 entry:
116   %call = tail call afn float @asinhf(float %a)
117   ret float %call
120 define float @atan2f_f32(float %a, float %b) #0 {
121 ; CHECK-LABEL: atan2f_f32
122 ; CHECK: __xl_atan2f
123 ; CHECK: blr
124 entry:
125   %call = tail call afn float @atan2f(float %a, float %b)
126   ret float %call
129 define float @atanf_f32(float %a) #0 {
130 ; CHECK-LABEL: atanf_f32
131 ; CHECK: __xl_atanf
132 ; CHECK: blr
133 entry:
134   %call = tail call afn float @atanf(float %a)
135   ret float %call
138 define float @atanhf_f32(float %a) #0 {
139 ; CHECK-LABEL: atanhf_f32
140 ; CHECK: __xl_atanhf
141 ; CHECK: blr
142 entry:
143   %call = tail call afn float @atanhf(float %a)
144   ret float %call
147 define float @cbrtf_f32(float %a) #0 {
148 ; CHECK-LABEL: cbrtf_f32
149 ; CHECK: __xl_cbrtf
150 ; CHECK: blr
151 entry:
152   %call = tail call afn float @cbrtf(float %a)
153   ret float %call
156 define float @copysignf_f32(float %a, float %b) #0 {
157 ; CHECK-LABEL: copysignf_f32
158 ; CHECK: copysignf
159 ; CHECK: blr
160 entry:
161   %call = tail call afn float @copysignf(float %a, float %b)
162   ret float %call
165 define float @cosf_f32(float %a) #0 {
166 ; CHECK-LABEL: cosf_f32
167 ; CHECK: __xl_cosf
168 ; CHECK: blr
169 entry:
170   %call = tail call afn float @cosf(float %a)
171   ret float %call
174 define float @coshf_f32(float %a) #0 {
175 ; CHECK-LABEL: coshf_f32
176 ; CHECK: __xl_coshf
177 ; CHECK: blr
178 entry:
179   %call = tail call afn float @coshf(float %a)
180   ret float %call
183 define float @erfcf_f32(float %a) #0 {
184 ; CHECK-LABEL: erfcf_f32
185 ; CHECK: __xl_erfcf
186 ; CHECK: blr
187 entry:
188   %call = tail call afn float @erfcf(float %a)
189   ret float %call
192 define float @erff_f32(float %a) #0 {
193 ; CHECK-LABEL: erff_f32
194 ; CHECK: __xl_erff
195 ; CHECK: blr
196 entry:
197   %call = tail call afn float @erff(float %a)
198   ret float %call
201 define float @expf_f32(float %a) #0 {
202 ; CHECK-LABEL: expf_f32
203 ; CHECK: __xl_expf
204 ; CHECK: blr
205 entry:
206   %call = tail call afn float @expf(float %a)
207   ret float %call
210 define float @expm1f_f32(float %a) #0 {
211 ; CHECK-LABEL: expm1f_f32
212 ; CHECK: __xl_expm1f
213 ; CHECK: blr
214 entry:
215   %call = tail call afn float @expm1f(float %a)
216   ret float %call
219 define float @hypotf_f32(float %a, float %b) #0 {
220 ; CHECK-LABEL: hypotf_f32
221 ; CHECK: __xl_hypotf
222 ; CHECK: blr
223 entry:
224   %call = tail call afn float @hypotf(float %a, float %b)
225   ret float %call
228 define float @lgammaf_f32(float %a) #0 {
229 ; CHECK-LABEL: lgammaf_f32
230 ; CHECK: __xl_lgammaf
231 ; CHECK: blr
232 entry:
233   %call = tail call afn float @lgammaf(float %a)
234   ret float %call
237 define float @log10f_f32(float %a) #0 {
238 ; CHECK-LABEL: log10f_f32
239 ; CHECK: __xl_log10f
240 ; CHECK: blr
241 entry:
242   %call = tail call afn float @log10f(float %a)
243   ret float %call
246 define float @log1pf_f32(float %a) #0 {
247 ; CHECK-LABEL: log1pf_f32
248 ; CHECK: __xl_log1pf
249 ; CHECK: blr
250 entry:
251   %call = tail call afn float @log1pf(float %a)
252   ret float %call
255 define float @logf_f32(float %a) #0 {
256 ; CHECK-LABEL: logf_f32
257 ; CHECK: __xl_logf
258 ; CHECK: blr
259 entry:
260   %call = tail call afn float @logf(float %a)
261   ret float %call
264 define float @powf_f32(float %a, float %b) #0 {
265 ; CHECK-LABEL: powf_f32
266 ; CHECK: __xl_powf
267 ; CHECK: blr
268 entry:
269   %call = tail call afn float @powf(float %a, float %b)
270   ret float %call
273 define float @rintf_f32(float %a) #0 {
274 ; CHECK-LABEL: rintf_f32
275 ; CHECK-NOT: __xl_rintf
276 ; CHECK: blr
277 entry:
278   %call = tail call afn float @rintf(float %a)
279   ret float %call
282 define float @sinf_f32(float %a) #0 {
283 ; CHECK-LABEL: sinf_f32
284 ; CHECK: __xl_sinf
285 ; CHECK: blr
286 entry:
287   %call = tail call afn float @sinf(float %a)
288   ret float %call
291 define float @sinhf_f32(float %a) #0 {
292 ; CHECK-LABEL: sinhf_f32
293 ; CHECK: __xl_sinhf
294 ; CHECK: blr
295 entry:
296   %call = tail call afn float @sinhf(float %a)
297   ret float %call
300 define float @tanf_f32(float %a) #0 {
301 ; CHECK-LABEL: tanf_f32
302 ; CHECK: __xl_tanf
303 ; CHECK: blr
304 entry:
305   %call = tail call afn float @tanf(float %a)
306   ret float %call
309 define float @tanhf_f32(float %a) #0 {
310 ; CHECK-LABEL: tanhf_f32
311 ; CHECK: __xl_tanhf
312 ; CHECK: blr
313 entry:
314   %call = tail call afn float @tanhf(float %a)
315   ret float %call
318 define double @acos_f64(double %a) #0 {
319 ; CHECK-LABEL: acos_f64
320 ; CHECK: __xl_acos
321 ; CHECK: blr
322 entry:
323   %call = tail call afn double @acos(double %a)
324   ret double %call
327 define double @acosh_f64(double %a) #0 {
328 ; CHECK-LABEL: acosh_f64
329 ; CHECK: __xl_acosh
330 ; CHECK: blr
331 entry:
332   %call = tail call afn double @acosh(double %a)
333   ret double %call
336 define double @anint_f64(double %a) #0 {
337 ; CHECK-LABEL: anint_f64
338 ; CHECK-NOT: __xl_anint
339 ; CHECK: blr
340 entry:
341   %call = tail call afn double @anint(double %a)
342   ret double %call
345 define double @asin_f64(double %a) #0 {
346 ; CHECK-LABEL: asin_f64
347 ; CHECK: __xl_asin
348 ; CHECK: blr
349 entry:
350   %call = tail call afn double @asin(double %a)
351   ret double %call
354 define double @asinh_f64(double %a) #0 {
355 ; CHECK-LABEL: asinh_f64
356 ; CHECK: __xl_asinh
357 ; CHECK: blr
358 entry:
359   %call = tail call afn double @asinh(double %a)
360   ret double %call
363 define double @atan_f64(double %a) #0 {
364 ; CHECK-LABEL: atan_f64
365 ; CHECK: __xl_atan
366 ; CHECK: blr
367 entry:
368   %call = tail call afn double @atan(double %a)
369   ret double %call
372 define double @atan2_f64(double %a, double %b) #0 {
373 ; CHECK-LABEL: atan2_f64
374 ; CHECK: __xl_atan2
375 ; CHECK: blr
376 entry:
377   %call = tail call afn double @atan2(double %a, double %b)
378   ret double %call
381 define double @atanh_f64(double %a) #0 {
382 ; CHECK-LABEL: atanh_f64
383 ; CHECK: __xl_atanh
384 ; CHECK: blr
385 entry:
386   %call = tail call afn double @atanh(double %a)
387   ret double %call
390 define double @cbrt_f64(double %a) #0 {
391 ; CHECK-LABEL: cbrt_f64
392 ; CHECK: __xl_cbrt
393 ; CHECK: blr
394 entry:
395   %call = tail call afn double @cbrt(double %a)
396   ret double %call
399 define double @copysign_f64(double %a, double %b) #0 {
400 ; CHECK-LABEL: copysign_f64
401 ; CHECK: copysign
402 ; CHECK: blr
403 entry:
404   %call = tail call afn double @copysign(double %a, double %b)
405   ret double %call
408 define double @cos_f64(double %a) #0 {
409 ; CHECK-LABEL: cos_f64
410 ; CHECK: __xl_cos
411 ; CHECK: blr
412 entry:
413   %call = tail call afn double @cos(double %a)
414   ret double %call
417 define double @cosh_f64(double %a) #0 {
418 ; CHECK-LABEL: cosh_f64
419 ; CHECK: __xl_cosh
420 ; CHECK: blr
421 entry:
422   %call = tail call afn double @cosh(double %a)
423   ret double %call
426 define double @cosisin_f64(double %a) #0 {
427 ; CHECK-LABEL: cosisin_f64
428 ; CHECK-NOT: __xl_cosisin
429 ; CHECK: blr
430 entry:
431   %call = tail call afn double @cosisin(double %a)
432   ret double %call
435 define double @dnint_f64(double %a) #0 {
436 ; CHECK-LABEL: dnint_f64
437 ; CHECK-NOT: __xl_dnint
438 ; CHECK: blr
439 entry:
440   %call = tail call afn double @dnint(double %a)
441   ret double %call
444 define double @erf_f64(double %a) #0 {
445 ; CHECK-LABEL: erf_f64
446 ; CHECK: __xl_erf
447 ; CHECK: blr
448 entry:
449   %call = tail call afn double @erf(double %a)
450   ret double %call
453 define double @erfc_f64(double %a) #0 {
454 ; CHECK-LABEL: erfc_f64
455 ; CHECK: __xl_erfc
456 ; CHECK: blr
457 entry:
458   %call = tail call afn double @erfc(double %a)
459   ret double %call
462 define double @exp_f64(double %a) #0 {
463 ; CHECK-LABEL: exp_f64
464 ; CHECK: __xl_exp
465 ; CHECK: blr
466 entry:
467   %call = tail call afn double @exp(double %a)
468   ret double %call
471 define double @expm1_f64(double %a) #0 {
472 ; CHECK-LABEL: expm1_f64
473 ; CHECK: __xl_expm1
474 ; CHECK: blr
475 entry:
476   %call = tail call afn double @expm1(double %a)
477   ret double %call
480 define double @hypot_f64(double %a, double %b) #0 {
481 ; CHECK-LABEL: hypot_f64
482 ; CHECK: __xl_hypot
483 ; CHECK: blr
484 entry:
485   %call = tail call afn double @hypot(double %a, double %b)
486   ret double %call
489 define double @lgamma_f64(double %a) #0 {
490 ; CHECK-LABEL: lgamma_f64
491 ; CHECK: __xl_lgamma
492 ; CHECK: blr
493 entry:
494   %call = tail call afn double @lgamma(double %a)
495   ret double %call
498 define double @log_f64(double %a) #0 {
499 ; CHECK-LABEL: log_f64
500 ; CHECK: __xl_log
501 ; CHECK: blr
502 entry:
503   %call = tail call afn double @log(double %a)
504   ret double %call
507 define double @log10_f64(double %a) #0 {
508 ; CHECK-LABEL: log10_f64
509 ; CHECK: __xl_log10
510 ; CHECK: blr
511 entry:
512   %call = tail call afn double @log10(double %a)
513   ret double %call
516 define double @log1p_f64(double %a) #0 {
517 ; CHECK-LABEL: log1p_f64
518 ; CHECK: __xl_log1p
519 ; CHECK: blr
520 entry:
521   %call = tail call afn double @log1p(double %a)
522   ret double %call
525 define double @pow_f64(double %a, double %b) #0 {
526 ; CHECK-LABEL: pow_f64
527 ; CHECK: __xl_pow
528 ; CHECK: blr
529 entry:
530   %call = tail call afn double @pow(double %a, double %b)
531   ret double %call
534 define double @rsqrt_f64(double %a) #0 {
535 ; CHECK-LABEL: rsqrt_f64
536 ; CHECK: __xl_rsqrt
537 ; CHECK: blr
538 entry:
539   %call = tail call afn double @rsqrt(double %a)
540   ret double %call
543 define double @sin_f64(double %a) #0 {
544 ; CHECK-LABEL: sin_f64
545 ; CHECK: __xl_sin
546 ; CHECK: blr
547 entry:
548   %call = tail call afn double @sin(double %a)
549   ret double %call
552 define double @sincos_f64(double %a) #0 {
553 ; CHECK-LABEL: sincos_f64
554 ; CHECK-NOT: __xl_sincos
555 ; CHECK: blr
556 entry:
557   %call = tail call afn double @sincos(double %a)
558   ret double %call
561 define double @sinh_f64(double %a) #0 {
562 ; CHECK-LABEL: sinh_f64
563 ; CHECK: __xl_sinh
564 ; CHECK: blr
565 entry:
566   %call = tail call afn double @sinh(double %a)
567   ret double %call
570 define double @sqrt_f64(double %a) #0 {
571 ; CHECK-LABEL: sqrt_f64
572 ; CHECK: __xl_sqrt
573 ; CHECK: blr
574 entry:
575   %call = tail call afn double @sqrt(double %a)
576   ret double %call
579 define double @tan_f64(double %a) #0 {
580 ; CHECK-LABEL: tan_f64
581 ; CHECK: __xl_tan
582 ; CHECK: blr
583 entry:
584   %call = tail call afn double @tan(double %a)
585   ret double %call
588 define double @tanh_f64(double %a) #0 {
589 ; CHECK-LABEL: tanh_f64
590 ; CHECK: __xl_tanh
591 ; CHECK: blr
592 entry:
593   %call = tail call afn double @tanh(double %a)
594   ret double %call
597 define float @__acosf_finite_f32(float %a) #0 {
598 ; CHECK-LABEL: __acosf_finite_f32
599 ; CHECK: __xl_acosf
600 ; CHECK: blr
601 entry:
602   %call = tail call afn float @__acosf_finite(float %a)
603   ret float %call
606 define float @__acoshf_finite_f32(float %a) #0 {
607 ; CHECK-LABEL: __acoshf_finite_f32
608 ; CHECK: __xl_acoshf
609 ; CHECK: blr
610 entry:
611   %call = tail call afn float @__acoshf_finite(float %a)
612   ret float %call
615 define float @__asinf_finite_f32(float %a) #0 {
616 ; CHECK-LABEL: __asinf_finite_f32
617 ; CHECK: __xl_asinf
618 ; CHECK: blr
619 entry:
620   %call = tail call afn float @__asinf_finite(float %a)
621   ret float %call
624 define float @__atan2f_finite_f32(float %a, float %b) #0 {
625 ; CHECK-LABEL: __atan2f_finite_f32
626 ; CHECK: __xl_atan2f
627 ; CHECK: blr
628 entry:
629   %call = tail call afn float @__atan2f_finite(float %a, float %b)
630   ret float %call
633 define float @__atanhf_finite_f32(float %a) #0 {
634 ; CHECK-LABEL: __atanhf_finite_f32
635 ; CHECK: __xl_atanhf
636 ; CHECK: blr
637 entry:
638   %call = tail call afn float @__atanhf_finite(float %a)
639   ret float %call
642 define float @__coshf_finite_f32(float %a) #0 {
643 ; CHECK-LABEL: __coshf_finite_f32
644 ; CHECK: __xl_coshf
645 ; CHECK: blr
646 entry:
647   %call = tail call afn float @__coshf_finite(float %a)
648   ret float %call
650 define float @__expf_finite_f32(float %a) #0 {
651 ; CHECK-LABEL: __expf_finite_f32
652 ; CHECK: __xl_expf
653 ; CHECK: blr
654 entry:
655   %call = tail call afn float @__expf_finite(float %a)
656   ret float %call
658 define float @__logf_finite_f32(float %a) #0 {
659 ; CHECK-LABEL: __logf_finite_f32
660 ; CHECK: __xl_logf
661 ; CHECK: blr
662 entry:
663   %call = tail call afn float @__logf_finite(float %a)
664   ret float %call
666 define float @__log10f_finite_f32(float %a) #0 {
667 ; CHECK-LABEL: __log10f_finite_f32
668 ; CHECK: __xl_log10f
669 ; CHECK: blr
670 entry:
671   %call = tail call afn float @__log10f_finite(float %a)
672   ret float %call
674 define float @__powf_finite_f32(float %a, float %b) #0 {
675 ; CHECK-LABEL: __powf_finite_f32
676 ; CHECK: __xl_powf
677 ; CHECK: blr
678 entry:
679   %call = tail call afn float @__powf_finite(float %a, float %b)
680   ret float %call
682 define float @__sinhf_finite_f32(float %a) #0 {
683 ; CHECK-LABEL: __sinhf_finite_f32
684 ; CHECK: __xl_sinhf
685 ; CHECK: blr
686 entry:
687   %call = tail call afn float @__sinhf_finite(float %a)
688   ret float %call
691 define double @__acos_finite_f64(double %a) #0 {
692 ; CHECK-LABEL: __acos_finite_f64
693 ; CHECK: __xl_acos
694 ; CHECK: blr
695 entry:
696   %call = tail call afn double @__acos_finite(double %a)
697   ret double %call
700 define double @__acosh_finite_f64(double %a) #0 {
701 ; CHECK-LABEL: __acosh_finite_f64
702 ; CHECK: __xl_acosh
703 ; CHECK: blr
704 entry:
705   %call = tail call afn double @__acosh_finite(double %a)
706   ret double %call
709 define double @__asin_finite_f64(double %a) #0 {
710 ; CHECK-LABEL: __asin_finite_f64
711 ; CHECK: __xl_asin
712 ; CHECK: blr
713 entry:
714   %call = tail call afn double @__asin_finite(double %a)
715   ret double %call
718 define double @__atan2_finite_f64(double %a, double %b) #0 {
719 ; CHECK-LABEL: __atan2_finite_f64
720 ; CHECK: __xl_atan2
721 ; CHECK: blr
722 entry:
723   %call = tail call afn double @__atan2_finite(double %a, double %b)
724   ret double %call
727 define double @__atanh_finite_f64(double %a) #0 {
728 ; CHECK-LABEL: __atanh_finite_f64
729 ; CHECK: __xl_atanh
730 ; CHECK: blr
731 entry:
732   %call = tail call afn double @__atanh_finite(double %a)
733   ret double %call
736 define double @__cosh_finite_f64(double %a) #0 {
737 ; CHECK-LABEL: __cosh_finite_f64
738 ; CHECK: __xl_cosh
739 ; CHECK: blr
740 entry:
741   %call = tail call afn double @__cosh_finite(double %a)
742   ret double %call
745 define double @__exp_finite_f64(double %a) #0 {
746 ; CHECK-LABEL: __exp_finite_f64
747 ; CHECK: __xl_exp
748 ; CHECK: blr
749 entry:
750   %call = tail call afn double @__exp_finite(double %a)
751   ret double %call
754 define double @__log_finite_f64(double %a) #0 {
755 ; CHECK-LABEL: __log_finite_f64
756 ; CHECK: __xl_log
757 ; CHECK: blr
758 entry:
759   %call = tail call afn double @__log_finite(double %a)
760   ret double %call
763 define double @__log10_finite_f64(double %a) #0 {
764 ; CHECK-LABEL: __log10_finite_f64
765 ; CHECK: __xl_log10
766 ; CHECK: blr
767 entry:
768   %call = tail call afn double @__log10_finite(double %a)
769   ret double %call
772 define double @__pow_finite_f64(double %a, double %b) #0 {
773 ; CHECK-LABEL: __pow_finite_f64
774 ; CHECK: __xl_pow
775 ; CHECK: blr
776 entry:
777   %call = tail call afn double @__pow_finite(double %a, double %b)
778   ret double %call
781 define double @__sinh_finite_f64(double %a) #0 {
782 ; CHECK-LABEL: __sinh_finite_f64
783 ; CHECK: __xl_sinh
784 ; CHECK: blr
785 entry:
786   %call = tail call afn double @__sinh_finite(double %a)
787   ret double %call
790 attributes #0 = { "approx-func-fp-math"="true" }