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