794 lines · plain
1; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc64le-unknown-linux-gnu < %s | FileCheck %s2; RUN: llc -enable-ppc-gen-scalar-mass -O3 -mtriple=powerpc-ibm-aix-xcoff < %s | FileCheck %s3 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);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) {85; CHECK-LABEL: acosf_f3286; CHECK: __xl_acosf_finite87; CHECK: blr88entry:89 %call = tail call nnan ninf afn nsz float @acosf(float %a)90 ret float %call91}92 93define float @acoshf_f32(float %a) {94; CHECK-LABEL: acoshf_f3295; CHECK: __xl_acoshf_finite96; CHECK: blr97entry:98 %call = tail call nnan ninf afn nsz float @acoshf(float %a)99 ret float %call100}101 102define float @asinf_f32(float %a) {103; CHECK-LABEL: asinf_f32104; CHECK: __xl_asinf_finite105; CHECK: blr106entry:107 %call = tail call nnan ninf afn nsz float @asinf(float %a)108 ret float %call109}110 111define float @asinhf_f32(float %a) {112; CHECK-LABEL: asinhf_f32113; CHECK: __xl_asinhf_finite114; CHECK: blr115entry:116 %call = tail call nnan ninf afn nsz float @asinhf(float %a)117 ret float %call118}119 120define float @atan2f_f32(float %a, float %b) {121; CHECK-LABEL: atan2f_f32122; CHECK: __xl_atan2f_finite123; CHECK: blr124entry:125 %call = tail call nnan ninf afn nsz float @atan2f(float %a, float %b)126 ret float %call127}128 129define float @atanf_f32(float %a) {130; CHECK-LABEL: atanf_f32131; CHECK: __xl_atanf_finite132; CHECK: blr133entry:134 %call = tail call nnan ninf afn nsz float @atanf(float %a)135 ret float %call136}137 138define float @atanhf_f32(float %a) {139; CHECK-LABEL: atanhf_f32140; CHECK: __xl_atanhf_finite141; CHECK: blr142entry:143 %call = tail call nnan ninf afn nsz float @atanhf(float %a)144 ret float %call145}146 147define float @cbrtf_f32(float %a) {148; CHECK-LABEL: cbrtf_f32149; CHECK: __xl_cbrtf_finite150; CHECK: blr151entry:152 %call = tail call nnan ninf afn nsz float @cbrtf(float %a)153 ret float %call154}155 156define float @copysignf_f32(float %a, float %b) {157; CHECK-LABEL: copysignf_f32158; CHECK: copysignf159; CHECK: blr160entry:161 %call = tail call nnan ninf afn nsz float @copysignf(float %a, float %b)162 ret float %call163}164 165define float @cosf_f32(float %a) {166; CHECK-LABEL: cosf_f32167; CHECK: __xl_cosf_finite168; CHECK: blr169entry:170 %call = tail call nnan ninf afn nsz float @cosf(float %a)171 ret float %call172}173 174define float @coshf_f32(float %a) {175; CHECK-LABEL: coshf_f32176; CHECK: __xl_coshf_finite177; CHECK: blr178entry:179 %call = tail call nnan ninf afn nsz float @coshf(float %a)180 ret float %call181}182 183define float @erfcf_f32(float %a) {184; CHECK-LABEL: erfcf_f32185; CHECK: __xl_erfcf_finite186; CHECK: blr187entry:188 %call = tail call nnan ninf afn nsz float @erfcf(float %a)189 ret float %call190}191 192define float @erff_f32(float %a) {193; CHECK-LABEL: erff_f32194; CHECK: __xl_erff_finite195; CHECK: blr196entry:197 %call = tail call nnan ninf afn nsz float @erff(float %a)198 ret float %call199}200 201define float @expf_f32(float %a) {202; CHECK-LABEL: expf_f32203; CHECK: __xl_expf_finite204; CHECK: blr205entry:206 %call = tail call nnan ninf afn nsz float @expf(float %a)207 ret float %call208}209 210define float @expm1f_f32(float %a) {211; CHECK-LABEL: expm1f_f32212; CHECK: __xl_expm1f_finite213; CHECK: blr214entry:215 %call = tail call nnan ninf afn nsz float @expm1f(float %a)216 ret float %call217}218 219define float @hypotf_f32(float %a, float %b) {220; CHECK-LABEL: hypotf_f32221; CHECK: __xl_hypotf_finite222; CHECK: blr223entry:224 %call = tail call nnan ninf afn nsz float @hypotf(float %a, float %b)225 ret float %call226}227 228define float @lgammaf_f32(float %a) {229; CHECK-LABEL: lgammaf_f32230; CHECK: __xl_lgammaf_finite231; CHECK: blr232entry:233 %call = tail call nnan ninf afn nsz float @lgammaf(float %a)234 ret float %call235}236 237define float @log10f_f32(float %a) {238; CHECK-LABEL: log10f_f32239; CHECK: __xl_log10f_finite240; CHECK: blr241entry:242 %call = tail call nnan ninf afn nsz float @log10f(float %a)243 ret float %call244}245 246define float @log1pf_f32(float %a) {247; CHECK-LABEL: log1pf_f32248; CHECK: __xl_log1pf_finite249; CHECK: blr250entry:251 %call = tail call nnan ninf afn nsz float @log1pf(float %a)252 ret float %call253}254 255define float @logf_f32(float %a) {256; CHECK-LABEL: logf_f32257; CHECK: __xl_logf_finite258; CHECK: blr259entry:260 %call = tail call nnan ninf afn nsz float @logf(float %a)261 ret float %call262}263 264define float @powf_f32(float %a, float %b) {265; CHECK-LABEL: powf_f32266; CHECK: __xl_powf_finite267; CHECK: blr268entry:269 %call = tail call nnan ninf afn nsz float @powf(float %a, float %b)270 ret float %call271}272 273define float @rintf_f32(float %a) {274; CHECK-LABEL: rintf_f32275; CHECK-NOT: __xl_rintf_finite276; CHECK: blr277entry:278 %call = tail call nnan ninf afn nsz float @rintf(float %a)279 ret float %call280}281 282define float @sinf_f32(float %a) {283; CHECK-LABEL: sinf_f32284; CHECK: __xl_sinf_finite285; CHECK: blr286entry:287 %call = tail call nnan ninf afn nsz float @sinf(float %a)288 ret float %call289}290 291define float @sinhf_f32(float %a) {292; CHECK-LABEL: sinhf_f32293; CHECK: __xl_sinhf_finite294; CHECK: blr295entry:296 %call = tail call nnan ninf afn nsz float @sinhf(float %a)297 ret float %call298}299 300define float @tanf_f32(float %a) {301; CHECK-LABEL: tanf_f32302; CHECK: __xl_tanf_finite303; CHECK: blr304entry:305 %call = tail call nnan ninf afn nsz float @tanf(float %a)306 ret float %call307}308 309define float @tanhf_f32(float %a) {310; CHECK-LABEL: tanhf_f32311; CHECK: __xl_tanhf_finite312; CHECK: blr313entry:314 %call = tail call nnan ninf afn nsz float @tanhf(float %a)315 ret float %call316}317 318define double @acos_f64(double %a) {319; CHECK-LABEL: acos_f64320; CHECK: __xl_acos_finite321; CHECK: blr322entry:323 %call = tail call nnan ninf afn nsz double @acos(double %a)324 ret double %call325}326 327define double @acosh_f64(double %a) {328; CHECK-LABEL: acosh_f64329; CHECK: __xl_acosh_finite330; CHECK: blr331entry:332 %call = tail call nnan ninf afn nsz double @acosh(double %a)333 ret double %call334}335 336define double @anint_f64(double %a) {337; CHECK-LABEL: anint_f64338; CHECK-NOT: __xl_anint_finite339; CHECK: blr340entry:341 %call = tail call nnan ninf afn nsz double @anint(double %a)342 ret double %call343}344 345define double @asin_f64(double %a) {346; CHECK-LABEL: asin_f64347; CHECK: __xl_asin_finite348; CHECK: blr349entry:350 %call = tail call nnan ninf afn nsz double @asin(double %a)351 ret double %call352}353 354define double @asinh_f64(double %a) {355; CHECK-LABEL: asinh_f64356; CHECK: __xl_asinh_finite357; CHECK: blr358entry:359 %call = tail call nnan ninf afn nsz double @asinh(double %a)360 ret double %call361}362 363define double @atan_f64(double %a) {364; CHECK-LABEL: atan_f64365; CHECK: __xl_atan_finite366; CHECK: blr367entry:368 %call = tail call nnan ninf afn nsz double @atan(double %a)369 ret double %call370}371 372define double @atan2_f64(double %a) {373; CHECK-LABEL: atan2_f64374; CHECK: __xl_atan2_finite375; CHECK: blr376entry:377 %call = tail call nnan ninf afn nsz double @atan2(double %a)378 ret double %call379}380 381define double @atanh_f64(double %a) {382; CHECK-LABEL: atanh_f64383; CHECK: __xl_atanh_finite384; CHECK: blr385entry:386 %call = tail call nnan ninf afn nsz double @atanh(double %a)387 ret double %call388}389 390define double @cbrt_f64(double %a) {391; CHECK-LABEL: cbrt_f64392; CHECK: __xl_cbrt_finite393; CHECK: blr394entry:395 %call = tail call nnan ninf afn nsz double @cbrt(double %a)396 ret double %call397}398 399define double @copysign_f64(double %a, double %b) {400; CHECK-LABEL: copysign_f64401; CHECK: copysign402; CHECK: blr403entry:404 %call = tail call nnan ninf afn nsz double @copysign(double %a, double %b)405 ret double %call406}407 408define double @cos_f64(double %a) {409; CHECK-LABEL: cos_f64410; CHECK: __xl_cos_finite411; CHECK: blr412entry:413 %call = tail call nnan ninf afn nsz double @cos(double %a)414 ret double %call415}416 417define double @cosh_f64(double %a) {418; CHECK-LABEL: cosh_f64419; CHECK: __xl_cosh_finite420; CHECK: blr421entry:422 %call = tail call nnan ninf afn nsz double @cosh(double %a)423 ret double %call424}425 426define double @cosisin_f64(double %a) {427; CHECK-LABEL: cosisin_f64428; CHECK-NOT: __xl_cosisin_finite429; CHECK: blr430entry:431 %call = tail call nnan ninf afn nsz double @cosisin(double %a)432 ret double %call433}434 435define double @dnint_f64(double %a) {436; CHECK-LABEL: dnint_f64437; CHECK-NOT: __xl_dnint_finite438; CHECK: blr439entry:440 %call = tail call nnan ninf afn nsz double @dnint(double %a)441 ret double %call442}443 444define double @erf_f64(double %a) {445; CHECK-LABEL: erf_f64446; CHECK: __xl_erf_finite447; CHECK: blr448entry:449 %call = tail call nnan ninf afn nsz double @erf(double %a)450 ret double %call451}452 453define double @erfc_f64(double %a) {454; CHECK-LABEL: erfc_f64455; CHECK: __xl_erfc_finite456; CHECK: blr457entry:458 %call = tail call nnan ninf afn nsz double @erfc(double %a)459 ret double %call460}461 462define double @exp_f64(double %a) {463; CHECK-LABEL: exp_f64464; CHECK: __xl_exp_finite465; CHECK: blr466entry:467 %call = tail call nnan ninf afn nsz double @exp(double %a)468 ret double %call469}470 471define double @expm1_f64(double %a) {472; CHECK-LABEL: expm1_f64473; CHECK: __xl_expm1_finite474; CHECK: blr475entry:476 %call = tail call nnan ninf afn nsz double @expm1(double %a)477 ret double %call478}479 480define double @hypot_f64(double %a, double %b) {481; CHECK-LABEL: hypot_f64482; CHECK: __xl_hypot_finite483; CHECK: blr484entry:485 %call = tail call nnan ninf afn nsz double @hypot(double %a, double %b)486 ret double %call487}488 489define double @lgamma_f64(double %a) {490; CHECK-LABEL: lgamma_f64491; CHECK: __xl_lgamma_finite492; CHECK: blr493entry:494 %call = tail call nnan ninf afn nsz double @lgamma(double %a)495 ret double %call496}497 498define double @log_f64(double %a) {499; CHECK-LABEL: log_f64500; CHECK: __xl_log_finite501; CHECK: blr502entry:503 %call = tail call nnan ninf afn nsz double @log(double %a)504 ret double %call505}506 507define double @log10_f64(double %a) {508; CHECK-LABEL: log10_f64509; CHECK: __xl_log10_finite510; CHECK: blr511entry:512 %call = tail call nnan ninf afn nsz double @log10(double %a)513 ret double %call514}515 516define double @log1p_f64(double %a) {517; CHECK-LABEL: log1p_f64518; CHECK: __xl_log1p_finite519; CHECK: blr520entry:521 %call = tail call nnan ninf afn nsz double @log1p(double %a)522 ret double %call523}524 525define double @pow_f64(double %a, double %b) {526; CHECK-LABEL: pow_f64527; CHECK: __xl_pow_finite528; CHECK: blr529entry:530 %call = tail call nnan ninf afn nsz double @pow(double %a, double %b)531 ret double %call532}533 534define double @rsqrt_f64(double %a) {535; CHECK-LABEL: rsqrt_f64536; CHECK: __xl_rsqrt_finite537; CHECK: blr538entry:539 %call = tail call nnan ninf afn nsz double @rsqrt(double %a)540 ret double %call541}542 543define double @sin_f64(double %a) {544; CHECK-LABEL: sin_f64545; CHECK: __xl_sin_finite546; CHECK: blr547entry:548 %call = tail call nnan ninf afn nsz double @sin(double %a)549 ret double %call550}551 552define double @sincos_f64(double %a) {553; CHECK-LABEL: sincos_f64554; CHECK-NOT: __xl_sincos_finite555; CHECK: blr556entry:557 %call = tail call nnan ninf afn nsz double @sincos(double %a)558 ret double %call559}560 561define double @sinh_f64(double %a) {562; CHECK-LABEL: sinh_f64563; CHECK: __xl_sinh_finite564; CHECK: blr565entry:566 %call = tail call nnan ninf afn nsz double @sinh(double %a)567 ret double %call568}569 570define double @sqrt_f64(double %a) {571; CHECK-LABEL: sqrt_f64572; CHECK: __xl_sqrt_finite573; CHECK: blr574entry:575 %call = tail call nnan ninf afn nsz double @sqrt(double %a)576 ret double %call577}578 579define double @tan_f64(double %a) {580; CHECK-LABEL: tan_f64581; CHECK: __xl_tan_finite582; CHECK: blr583entry:584 %call = tail call nnan ninf afn nsz double @tan(double %a)585 ret double %call586}587 588define double @tanh_f64(double %a) {589; CHECK-LABEL: tanh_f64590; CHECK: __xl_tanh_finite591; CHECK: blr592entry:593 %call = tail call nnan ninf afn nsz double @tanh(double %a)594 ret double %call595}596 597define float @__acosf_finite_f32(float %a) {598; CHECK-LABEL: __acosf_finite_f32599; CHECK: __xl_acosf_finite600; CHECK: blr601entry:602 %call = tail call nnan ninf afn nsz float @__acosf_finite(float %a)603 ret float %call604}605 606define float @__acoshf_finite_f32(float %a) {607; CHECK-LABEL: __acoshf_finite_f32608; CHECK: __xl_acoshf_finite609; CHECK: blr610entry:611 %call = tail call nnan ninf afn nsz float @__acoshf_finite(float %a)612 ret float %call613}614 615define float @__asinf_finite_f32(float %a) {616; CHECK-LABEL: __asinf_finite_f32617; CHECK: __xl_asinf_finite618; CHECK: blr619entry:620 %call = tail call nnan ninf afn nsz float @__asinf_finite(float %a)621 ret float %call622}623 624define float @__atan2f_finite_f32(float %a, float %b) {625; CHECK-LABEL: __atan2f_finite_f32626; CHECK: __xl_atan2f_finite627; CHECK: blr628entry:629 %call = tail call nnan ninf afn nsz float @__atan2f_finite(float %a, float %b)630 ret float %call631}632 633define float @__atanhf_finite_f32(float %a) {634; CHECK-LABEL: __atanhf_finite_f32635; CHECK: __xl_atanhf_finite636; CHECK: blr637entry:638 %call = tail call nnan ninf afn nsz float @__atanhf_finite(float %a)639 ret float %call640}641 642define float @__coshf_finite_f32(float %a) {643; CHECK-LABEL: __coshf_finite_f32644; CHECK: __xl_coshf_finite645; CHECK: blr646entry:647 %call = tail call nnan ninf afn nsz float @__coshf_finite(float %a)648 ret float %call649}650 651define float @__expf_finite_f32(float %a) {652; CHECK-LABEL: __expf_finite_f32653; CHECK: __xl_expf_finite654; CHECK: blr655entry:656 %call = tail call nnan ninf afn nsz float @__expf_finite(float %a)657 ret float %call658}659 660define float @__logf_finite_f32(float %a) {661; CHECK-LABEL: __logf_finite_f32662; CHECK: __xl_logf_finite663; CHECK: blr664entry:665 %call = tail call nnan ninf afn nsz float @__logf_finite(float %a)666 ret float %call667}668 669define float @__log10f_finite_f32(float %a) {670; CHECK-LABEL: __log10f_finite_f32671; CHECK: __xl_log10f_finite672; CHECK: blr673entry:674 %call = tail call nnan ninf afn nsz float @__log10f_finite(float %a)675 ret float %call676}677 678define float @__powf_finite_f32(float %a, float %b) {679; CHECK-LABEL: __powf_finite_f32680; CHECK: __xl_powf_finite681; CHECK: blr682entry:683 %call = tail call nnan ninf afn nsz float @__powf_finite(float %a, float %b)684 ret float %call685}686 687define float @__sinhf_finite_f32(float %a) {688; CHECK-LABEL: __sinhf_finite_f32689; CHECK: __xl_sinhf_finite690; CHECK: blr691entry:692 %call = tail call nnan ninf afn nsz float @__sinhf_finite(float %a)693 ret float %call694}695 696define double @__acos_finite_f64(double %a) {697; CHECK-LABEL: __acos_finite_f64698; CHECK: __xl_acos_finite699; CHECK: blr700entry:701 %call = tail call nnan ninf afn nsz double @__acos_finite(double %a)702 ret double %call703}704 705define double @__acosh_finite_f64(double %a) {706; CHECK-LABEL: __acosh_finite_f64707; CHECK: __xl_acosh_finite708; CHECK: blr709entry:710 %call = tail call nnan ninf afn nsz double @__acosh_finite(double %a)711 ret double %call712}713 714define double @__asin_finite_f64(double %a) {715; CHECK-LABEL: __asin_finite_f64716; CHECK: __xl_asin_finite717; CHECK: blr718entry:719 %call = tail call nnan ninf afn nsz double @__asin_finite(double %a)720 ret double %call721}722 723define double @__atan2_finite_f64(double %a, double %b) {724; CHECK-LABEL: __atan2_finite_f64725; CHECK: __xl_atan2_finite726; CHECK: blr727entry:728 %call = tail call nnan ninf afn nsz double @__atan2_finite(double %a, double %b)729 ret double %call730}731 732define double @__atanh_finite_f64(double %a) {733; CHECK-LABEL: __atanh_finite_f64734; CHECK: __xl_atanh_finite735; CHECK: blr736entry:737 %call = tail call nnan ninf afn nsz double @__atanh_finite(double %a)738 ret double %call739}740 741define double @__cosh_finite_f64(double %a) {742; CHECK-LABEL: __cosh_finite_f64743; CHECK: __xl_cosh_finite744; CHECK: blr745entry:746 %call = tail call nnan ninf afn nsz double @__cosh_finite(double %a)747 ret double %call748}749 750define double @__exp_finite_f64(double %a) {751; CHECK-LABEL: __exp_finite_f64752; CHECK: __xl_exp_finite753; CHECK: blr754entry:755 %call = tail call nnan ninf afn nsz double @__exp_finite(double %a)756 ret double %call757}758 759define double @__log_finite_f64(double %a) {760; CHECK-LABEL: __log_finite_f64761; CHECK: __xl_log_finite762; CHECK: blr763entry:764 %call = tail call nnan ninf afn nsz double @__log_finite(double %a)765 ret double %call766}767 768define double @__log10_finite_f64(double %a) {769; CHECK-LABEL: __log10_finite_f64770; CHECK: __xl_log10_finite771; CHECK: blr772entry:773 %call = tail call nnan ninf afn nsz double @__log10_finite(double %a)774 ret double %call775}776 777define double @__pow_finite_f64(double %a, double %b) {778; CHECK-LABEL: __pow_finite_f64779; CHECK: __xl_pow_finite780; CHECK: blr781entry:782 %call = tail call nnan ninf afn nsz double @__pow_finite(double %a, double %b)783 ret double %call784}785 786define double @__sinh_finite_f64(double %a) {787; CHECK-LABEL: __sinh_finite_f64788; CHECK: __xl_sinh_finite789; CHECK: blr790entry:791 %call = tail call nnan ninf afn nsz double @__sinh_finite(double %a)792 ret double %call793}794