xref: /llvm-project/llvm/test/CodeGen/PowerPC/lower-scalar-mass-afn.ll (revision 8ce13bc93be423d2a368f804ed18edf21b489c2e)
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
3
4declare float @acosf (float);
5declare float @acoshf (float);
6declare float @asinf (float);
7declare float @asinhf (float);
8declare float @atan2f (float, float);
9declare float @atanf (float);
10declare float @atanhf (float);
11declare float @cbrtf (float);
12declare float @copysignf (float, float);
13declare float @cosf (float);
14declare float @coshf (float);
15declare float @erfcf (float);
16declare float @erff (float);
17declare float @expf (float);
18declare float @expm1f (float);
19declare float @hypotf (float, float);
20declare float @lgammaf (float);
21declare float @log10f (float);
22declare float @log1pf (float);
23declare float @logf (float);
24declare float @powf (float, float);
25declare float @rintf (float);
26declare float @sinf (float);
27declare float @sinhf (float);
28declare float @tanf (float);
29declare float @tanhf (float);
30declare double @acos (double);
31declare double @acosh (double);
32declare double @anint (double);
33declare double @asin (double);
34declare double @asinh (double);
35declare double @atan (double);
36declare double @atan2 (double, double);
37declare double @atanh (double);
38declare double @cbrt (double);
39declare double @copysign (double, double);
40declare double @cos (double);
41declare double @cosh (double);
42declare double @cosisin (double);
43declare double @dnint (double);
44declare double @erf (double);
45declare double @erfc (double);
46declare double @exp (double);
47declare double @expm1 (double);
48declare double @hypot (double, double);
49declare double @lgamma (double);
50declare double @log (double);
51declare double @log10 (double);
52declare double @log1p (double);
53declare double @pow (double, double);
54declare double @rsqrt (double);
55declare double @sin (double);
56declare double @sincos (double);
57declare double @sinh (double);
58declare double @sqrt (double);
59declare double @tan (double);
60declare double @tanh (double);
61declare float @__acosf_finite (float);
62declare float @__acoshf_finite (float);
63declare float @__asinf_finite (float);
64declare float @__atan2f_finite (float, float);
65declare float @__atanhf_finite (float);
66declare float @__coshf_finite (float);
67declare float @__expf_finite (float);
68declare float @__logf_finite (float);
69declare float @__log10f_finite (float);
70declare float @__powf_finite (float, float);
71declare float @__sinhf_finite (float);
72declare double @__acos_finite (double);
73declare double @__acosh_finite (double);
74declare double @__asin_finite (double);
75declare double @__atan2_finite (double, double);
76declare double @__atanh_finite (double);
77declare double @__cosh_finite (double);
78declare double @__exp_finite (double);
79declare double @__log_finite (double);
80declare double @__log10_finite (double);
81declare double @__pow_finite (double, double);
82declare double @__sinh_finite (double);
83
84define float @acosf_f32(float %a) #0 {
85; CHECK-LABEL: acosf_f32
86; CHECK: __xl_acosf
87; CHECK: blr
88entry:
89  %call = tail call afn float @acosf(float %a)
90  ret float %call
91}
92
93define float @acoshf_f32(float %a) #0 {
94; CHECK-LABEL: acoshf_f32
95; CHECK: __xl_acoshf
96; CHECK: blr
97entry:
98  %call = tail call afn float @acoshf(float %a)
99  ret float %call
100}
101
102define float @asinf_f32(float %a) #0 {
103; CHECK-LABEL: asinf_f32
104; CHECK: __xl_asinf
105; CHECK: blr
106entry:
107  %call = tail call afn float @asinf(float %a)
108  ret float %call
109}
110
111define float @asinhf_f32(float %a) #0 {
112; CHECK-LABEL: asinhf_f32
113; CHECK: __xl_asinhf
114; CHECK: blr
115entry:
116  %call = tail call afn float @asinhf(float %a)
117  ret float %call
118}
119
120define float @atan2f_f32(float %a, float %b) #0 {
121; CHECK-LABEL: atan2f_f32
122; CHECK: __xl_atan2f
123; CHECK: blr
124entry:
125  %call = tail call afn float @atan2f(float %a, float %b)
126  ret float %call
127}
128
129define float @atanf_f32(float %a) #0 {
130; CHECK-LABEL: atanf_f32
131; CHECK: __xl_atanf
132; CHECK: blr
133entry:
134  %call = tail call afn float @atanf(float %a)
135  ret float %call
136}
137
138define float @atanhf_f32(float %a) #0 {
139; CHECK-LABEL: atanhf_f32
140; CHECK: __xl_atanhf
141; CHECK: blr
142entry:
143  %call = tail call afn float @atanhf(float %a)
144  ret float %call
145}
146
147define float @cbrtf_f32(float %a) #0 {
148; CHECK-LABEL: cbrtf_f32
149; CHECK: __xl_cbrtf
150; CHECK: blr
151entry:
152  %call = tail call afn float @cbrtf(float %a)
153  ret float %call
154}
155
156define float @copysignf_f32(float %a, float %b) #0 {
157; CHECK-LABEL: copysignf_f32
158; CHECK: copysignf
159; CHECK: blr
160entry:
161  %call = tail call afn float @copysignf(float %a, float %b)
162  ret float %call
163}
164
165define float @cosf_f32(float %a) #0 {
166; CHECK-LABEL: cosf_f32
167; CHECK: __xl_cosf
168; CHECK: blr
169entry:
170  %call = tail call afn float @cosf(float %a)
171  ret float %call
172}
173
174define float @coshf_f32(float %a) #0 {
175; CHECK-LABEL: coshf_f32
176; CHECK: __xl_coshf
177; CHECK: blr
178entry:
179  %call = tail call afn float @coshf(float %a)
180  ret float %call
181}
182
183define float @erfcf_f32(float %a) #0 {
184; CHECK-LABEL: erfcf_f32
185; CHECK: __xl_erfcf
186; CHECK: blr
187entry:
188  %call = tail call afn float @erfcf(float %a)
189  ret float %call
190}
191
192define float @erff_f32(float %a) #0 {
193; CHECK-LABEL: erff_f32
194; CHECK: __xl_erff
195; CHECK: blr
196entry:
197  %call = tail call afn float @erff(float %a)
198  ret float %call
199}
200
201define float @expf_f32(float %a) #0 {
202; CHECK-LABEL: expf_f32
203; CHECK: __xl_expf
204; CHECK: blr
205entry:
206  %call = tail call afn float @expf(float %a)
207  ret float %call
208}
209
210define float @expm1f_f32(float %a) #0 {
211; CHECK-LABEL: expm1f_f32
212; CHECK: __xl_expm1f
213; CHECK: blr
214entry:
215  %call = tail call afn float @expm1f(float %a)
216  ret float %call
217}
218
219define float @hypotf_f32(float %a, float %b) #0 {
220; CHECK-LABEL: hypotf_f32
221; CHECK: __xl_hypotf
222; CHECK: blr
223entry:
224  %call = tail call afn float @hypotf(float %a, float %b)
225  ret float %call
226}
227
228define float @lgammaf_f32(float %a) #0 {
229; CHECK-LABEL: lgammaf_f32
230; CHECK: __xl_lgammaf
231; CHECK: blr
232entry:
233  %call = tail call afn float @lgammaf(float %a)
234  ret float %call
235}
236
237define float @log10f_f32(float %a) #0 {
238; CHECK-LABEL: log10f_f32
239; CHECK: __xl_log10f
240; CHECK: blr
241entry:
242  %call = tail call afn float @log10f(float %a)
243  ret float %call
244}
245
246define float @log1pf_f32(float %a) #0 {
247; CHECK-LABEL: log1pf_f32
248; CHECK: __xl_log1pf
249; CHECK: blr
250entry:
251  %call = tail call afn float @log1pf(float %a)
252  ret float %call
253}
254
255define float @logf_f32(float %a) #0 {
256; CHECK-LABEL: logf_f32
257; CHECK: __xl_logf
258; CHECK: blr
259entry:
260  %call = tail call afn float @logf(float %a)
261  ret float %call
262}
263
264define float @powf_f32(float %a, float %b) #0 {
265; CHECK-LABEL: powf_f32
266; CHECK: __xl_powf
267; CHECK: blr
268entry:
269  %call = tail call afn float @powf(float %a, float %b)
270  ret float %call
271}
272
273define float @rintf_f32(float %a) #0 {
274; CHECK-LABEL: rintf_f32
275; CHECK-NOT: __xl_rintf
276; CHECK: blr
277entry:
278  %call = tail call afn float @rintf(float %a)
279  ret float %call
280}
281
282define float @sinf_f32(float %a) #0 {
283; CHECK-LABEL: sinf_f32
284; CHECK: __xl_sinf
285; CHECK: blr
286entry:
287  %call = tail call afn float @sinf(float %a)
288  ret float %call
289}
290
291define float @sinhf_f32(float %a) #0 {
292; CHECK-LABEL: sinhf_f32
293; CHECK: __xl_sinhf
294; CHECK: blr
295entry:
296  %call = tail call afn float @sinhf(float %a)
297  ret float %call
298}
299
300define float @tanf_f32(float %a) #0 {
301; CHECK-LABEL: tanf_f32
302; CHECK: __xl_tanf
303; CHECK: blr
304entry:
305  %call = tail call afn float @tanf(float %a)
306  ret float %call
307}
308
309define float @tanhf_f32(float %a) #0 {
310; CHECK-LABEL: tanhf_f32
311; CHECK: __xl_tanhf
312; CHECK: blr
313entry:
314  %call = tail call afn float @tanhf(float %a)
315  ret float %call
316}
317
318define double @acos_f64(double %a) #0 {
319; CHECK-LABEL: acos_f64
320; CHECK: __xl_acos
321; CHECK: blr
322entry:
323  %call = tail call afn double @acos(double %a)
324  ret double %call
325}
326
327define double @acosh_f64(double %a) #0 {
328; CHECK-LABEL: acosh_f64
329; CHECK: __xl_acosh
330; CHECK: blr
331entry:
332  %call = tail call afn double @acosh(double %a)
333  ret double %call
334}
335
336define double @anint_f64(double %a) #0 {
337; CHECK-LABEL: anint_f64
338; CHECK-NOT: __xl_anint
339; CHECK: blr
340entry:
341  %call = tail call afn double @anint(double %a)
342  ret double %call
343}
344
345define double @asin_f64(double %a) #0 {
346; CHECK-LABEL: asin_f64
347; CHECK: __xl_asin
348; CHECK: blr
349entry:
350  %call = tail call afn double @asin(double %a)
351  ret double %call
352}
353
354define double @asinh_f64(double %a) #0 {
355; CHECK-LABEL: asinh_f64
356; CHECK: __xl_asinh
357; CHECK: blr
358entry:
359  %call = tail call afn double @asinh(double %a)
360  ret double %call
361}
362
363define double @atan_f64(double %a) #0 {
364; CHECK-LABEL: atan_f64
365; CHECK: __xl_atan
366; CHECK: blr
367entry:
368  %call = tail call afn double @atan(double %a)
369  ret double %call
370}
371
372define double @atan2_f64(double %a, double %b) #0 {
373; CHECK-LABEL: atan2_f64
374; CHECK: __xl_atan2
375; CHECK: blr
376entry:
377  %call = tail call afn double @atan2(double %a, double %b)
378  ret double %call
379}
380
381define double @atanh_f64(double %a) #0 {
382; CHECK-LABEL: atanh_f64
383; CHECK: __xl_atanh
384; CHECK: blr
385entry:
386  %call = tail call afn double @atanh(double %a)
387  ret double %call
388}
389
390define double @cbrt_f64(double %a) #0 {
391; CHECK-LABEL: cbrt_f64
392; CHECK: __xl_cbrt
393; CHECK: blr
394entry:
395  %call = tail call afn double @cbrt(double %a)
396  ret double %call
397}
398
399define double @copysign_f64(double %a, double %b) #0 {
400; CHECK-LABEL: copysign_f64
401; CHECK: copysign
402; CHECK: blr
403entry:
404  %call = tail call afn double @copysign(double %a, double %b)
405  ret double %call
406}
407
408define double @cos_f64(double %a) #0 {
409; CHECK-LABEL: cos_f64
410; CHECK: __xl_cos
411; CHECK: blr
412entry:
413  %call = tail call afn double @cos(double %a)
414  ret double %call
415}
416
417define double @cosh_f64(double %a) #0 {
418; CHECK-LABEL: cosh_f64
419; CHECK: __xl_cosh
420; CHECK: blr
421entry:
422  %call = tail call afn double @cosh(double %a)
423  ret double %call
424}
425
426define double @cosisin_f64(double %a) #0 {
427; CHECK-LABEL: cosisin_f64
428; CHECK-NOT: __xl_cosisin
429; CHECK: blr
430entry:
431  %call = tail call afn double @cosisin(double %a)
432  ret double %call
433}
434
435define double @dnint_f64(double %a) #0 {
436; CHECK-LABEL: dnint_f64
437; CHECK-NOT: __xl_dnint
438; CHECK: blr
439entry:
440  %call = tail call afn double @dnint(double %a)
441  ret double %call
442}
443
444define double @erf_f64(double %a) #0 {
445; CHECK-LABEL: erf_f64
446; CHECK: __xl_erf
447; CHECK: blr
448entry:
449  %call = tail call afn double @erf(double %a)
450  ret double %call
451}
452
453define double @erfc_f64(double %a) #0 {
454; CHECK-LABEL: erfc_f64
455; CHECK: __xl_erfc
456; CHECK: blr
457entry:
458  %call = tail call afn double @erfc(double %a)
459  ret double %call
460}
461
462define double @exp_f64(double %a) #0 {
463; CHECK-LABEL: exp_f64
464; CHECK: __xl_exp
465; CHECK: blr
466entry:
467  %call = tail call afn double @exp(double %a)
468  ret double %call
469}
470
471define double @expm1_f64(double %a) #0 {
472; CHECK-LABEL: expm1_f64
473; CHECK: __xl_expm1
474; CHECK: blr
475entry:
476  %call = tail call afn double @expm1(double %a)
477  ret double %call
478}
479
480define double @hypot_f64(double %a, double %b) #0 {
481; CHECK-LABEL: hypot_f64
482; CHECK: __xl_hypot
483; CHECK: blr
484entry:
485  %call = tail call afn double @hypot(double %a, double %b)
486  ret double %call
487}
488
489define double @lgamma_f64(double %a) #0 {
490; CHECK-LABEL: lgamma_f64
491; CHECK: __xl_lgamma
492; CHECK: blr
493entry:
494  %call = tail call afn double @lgamma(double %a)
495  ret double %call
496}
497
498define double @log_f64(double %a) #0 {
499; CHECK-LABEL: log_f64
500; CHECK: __xl_log
501; CHECK: blr
502entry:
503  %call = tail call afn double @log(double %a)
504  ret double %call
505}
506
507define double @log10_f64(double %a) #0 {
508; CHECK-LABEL: log10_f64
509; CHECK: __xl_log10
510; CHECK: blr
511entry:
512  %call = tail call afn double @log10(double %a)
513  ret double %call
514}
515
516define double @log1p_f64(double %a) #0 {
517; CHECK-LABEL: log1p_f64
518; CHECK: __xl_log1p
519; CHECK: blr
520entry:
521  %call = tail call afn double @log1p(double %a)
522  ret double %call
523}
524
525define double @pow_f64(double %a, double %b) #0 {
526; CHECK-LABEL: pow_f64
527; CHECK: __xl_pow
528; CHECK: blr
529entry:
530  %call = tail call afn double @pow(double %a, double %b)
531  ret double %call
532}
533
534define double @rsqrt_f64(double %a) #0 {
535; CHECK-LABEL: rsqrt_f64
536; CHECK: __xl_rsqrt
537; CHECK: blr
538entry:
539  %call = tail call afn double @rsqrt(double %a)
540  ret double %call
541}
542
543define double @sin_f64(double %a) #0 {
544; CHECK-LABEL: sin_f64
545; CHECK: __xl_sin
546; CHECK: blr
547entry:
548  %call = tail call afn double @sin(double %a)
549  ret double %call
550}
551
552define double @sincos_f64(double %a) #0 {
553; CHECK-LABEL: sincos_f64
554; CHECK-NOT: __xl_sincos
555; CHECK: blr
556entry:
557  %call = tail call afn double @sincos(double %a)
558  ret double %call
559}
560
561define double @sinh_f64(double %a) #0 {
562; CHECK-LABEL: sinh_f64
563; CHECK: __xl_sinh
564; CHECK: blr
565entry:
566  %call = tail call afn double @sinh(double %a)
567  ret double %call
568}
569
570define double @sqrt_f64(double %a) #0 {
571; CHECK-LABEL: sqrt_f64
572; CHECK: __xl_sqrt
573; CHECK: blr
574entry:
575  %call = tail call afn double @sqrt(double %a)
576  ret double %call
577}
578
579define double @tan_f64(double %a) #0 {
580; CHECK-LABEL: tan_f64
581; CHECK: __xl_tan
582; CHECK: blr
583entry:
584  %call = tail call afn double @tan(double %a)
585  ret double %call
586}
587
588define double @tanh_f64(double %a) #0 {
589; CHECK-LABEL: tanh_f64
590; CHECK: __xl_tanh
591; CHECK: blr
592entry:
593  %call = tail call afn double @tanh(double %a)
594  ret double %call
595}
596
597define float @__acosf_finite_f32(float %a) #0 {
598; CHECK-LABEL: __acosf_finite_f32
599; CHECK: __xl_acosf
600; CHECK: blr
601entry:
602  %call = tail call afn float @__acosf_finite(float %a)
603  ret float %call
604}
605
606define float @__acoshf_finite_f32(float %a) #0 {
607; CHECK-LABEL: __acoshf_finite_f32
608; CHECK: __xl_acoshf
609; CHECK: blr
610entry:
611  %call = tail call afn float @__acoshf_finite(float %a)
612  ret float %call
613}
614
615define float @__asinf_finite_f32(float %a) #0 {
616; CHECK-LABEL: __asinf_finite_f32
617; CHECK: __xl_asinf
618; CHECK: blr
619entry:
620  %call = tail call afn float @__asinf_finite(float %a)
621  ret float %call
622}
623
624define float @__atan2f_finite_f32(float %a, float %b) #0 {
625; CHECK-LABEL: __atan2f_finite_f32
626; CHECK: __xl_atan2f
627; CHECK: blr
628entry:
629  %call = tail call afn float @__atan2f_finite(float %a, float %b)
630  ret float %call
631}
632
633define float @__atanhf_finite_f32(float %a) #0 {
634; CHECK-LABEL: __atanhf_finite_f32
635; CHECK: __xl_atanhf
636; CHECK: blr
637entry:
638  %call = tail call afn float @__atanhf_finite(float %a)
639  ret float %call
640}
641
642define float @__coshf_finite_f32(float %a) #0 {
643; CHECK-LABEL: __coshf_finite_f32
644; CHECK: __xl_coshf
645; CHECK: blr
646entry:
647  %call = tail call afn float @__coshf_finite(float %a)
648  ret float %call
649}
650define float @__expf_finite_f32(float %a) #0 {
651; CHECK-LABEL: __expf_finite_f32
652; CHECK: __xl_expf
653; CHECK: blr
654entry:
655  %call = tail call afn float @__expf_finite(float %a)
656  ret float %call
657}
658define float @__logf_finite_f32(float %a) #0 {
659; CHECK-LABEL: __logf_finite_f32
660; CHECK: __xl_logf
661; CHECK: blr
662entry:
663  %call = tail call afn float @__logf_finite(float %a)
664  ret float %call
665}
666define float @__log10f_finite_f32(float %a) #0 {
667; CHECK-LABEL: __log10f_finite_f32
668; CHECK: __xl_log10f
669; CHECK: blr
670entry:
671  %call = tail call afn float @__log10f_finite(float %a)
672  ret float %call
673}
674define float @__powf_finite_f32(float %a, float %b) #0 {
675; CHECK-LABEL: __powf_finite_f32
676; CHECK: __xl_powf
677; CHECK: blr
678entry:
679  %call = tail call afn float @__powf_finite(float %a, float %b)
680  ret float %call
681}
682define float @__sinhf_finite_f32(float %a) #0 {
683; CHECK-LABEL: __sinhf_finite_f32
684; CHECK: __xl_sinhf
685; CHECK: blr
686entry:
687  %call = tail call afn float @__sinhf_finite(float %a)
688  ret float %call
689}
690
691define double @__acos_finite_f64(double %a) #0 {
692; CHECK-LABEL: __acos_finite_f64
693; CHECK: __xl_acos
694; CHECK: blr
695entry:
696  %call = tail call afn double @__acos_finite(double %a)
697  ret double %call
698}
699
700define double @__acosh_finite_f64(double %a) #0 {
701; CHECK-LABEL: __acosh_finite_f64
702; CHECK: __xl_acosh
703; CHECK: blr
704entry:
705  %call = tail call afn double @__acosh_finite(double %a)
706  ret double %call
707}
708
709define double @__asin_finite_f64(double %a) #0 {
710; CHECK-LABEL: __asin_finite_f64
711; CHECK: __xl_asin
712; CHECK: blr
713entry:
714  %call = tail call afn double @__asin_finite(double %a)
715  ret double %call
716}
717
718define double @__atan2_finite_f64(double %a, double %b) #0 {
719; CHECK-LABEL: __atan2_finite_f64
720; CHECK: __xl_atan2
721; CHECK: blr
722entry:
723  %call = tail call afn double @__atan2_finite(double %a, double %b)
724  ret double %call
725}
726
727define double @__atanh_finite_f64(double %a) #0 {
728; CHECK-LABEL: __atanh_finite_f64
729; CHECK: __xl_atanh
730; CHECK: blr
731entry:
732  %call = tail call afn double @__atanh_finite(double %a)
733  ret double %call
734}
735
736define double @__cosh_finite_f64(double %a) #0 {
737; CHECK-LABEL: __cosh_finite_f64
738; CHECK: __xl_cosh
739; CHECK: blr
740entry:
741  %call = tail call afn double @__cosh_finite(double %a)
742  ret double %call
743}
744
745define double @__exp_finite_f64(double %a) #0 {
746; CHECK-LABEL: __exp_finite_f64
747; CHECK: __xl_exp
748; CHECK: blr
749entry:
750  %call = tail call afn double @__exp_finite(double %a)
751  ret double %call
752}
753
754define double @__log_finite_f64(double %a) #0 {
755; CHECK-LABEL: __log_finite_f64
756; CHECK: __xl_log
757; CHECK: blr
758entry:
759  %call = tail call afn double @__log_finite(double %a)
760  ret double %call
761}
762
763define double @__log10_finite_f64(double %a) #0 {
764; CHECK-LABEL: __log10_finite_f64
765; CHECK: __xl_log10
766; CHECK: blr
767entry:
768  %call = tail call afn double @__log10_finite(double %a)
769  ret double %call
770}
771
772define double @__pow_finite_f64(double %a, double %b) #0 {
773; CHECK-LABEL: __pow_finite_f64
774; CHECK: __xl_pow
775; CHECK: blr
776entry:
777  %call = tail call afn double @__pow_finite(double %a, double %b)
778  ret double %call
779}
780
781define double @__sinh_finite_f64(double %a) #0 {
782; CHECK-LABEL: __sinh_finite_f64
783; CHECK: __xl_sinh
784; CHECK: blr
785entry:
786  %call = tail call afn double @__sinh_finite(double %a)
787  ret double %call
788}
789
790attributes #0 = { "approx-func-fp-math"="true" }
791