brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.1 KiB · 114d0f5 Raw
136 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -O3 < %s \3; RUN:   -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 | FileCheck %s4; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -O3 < %s \5; RUN:   -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr8 | FileCheck %s --check-prefix=CHECK-P86; RUN: llc -verify-machineinstrs -ppc-asm-full-reg-names -ppc-fma-rp-factor=0.0 -O3 < %s \7; RUN:   -mtriple=powerpc64le-unknown-linux-gnu -mcpu=pwr9 | FileCheck %s --check-prefix=CHECK-FMA8 9@global_val = external global float, align 410 11define float @foo_float(float %0, float %1, float %2, float %3) {12; CHECK-LABEL: foo_float:13; CHECK:       # %bb.0:14; CHECK-NEXT:    addis r3, r2, .LCPI0_0@toc@ha15; CHECK-NEXT:    xsmulsp f1, f2, f116; CHECK-NEXT:    xssubsp f0, f3, f417; CHECK-NEXT:    lfs f2, .LCPI0_0@toc@l(r3)18; CHECK-NEXT:    xsmaddasp f1, f0, f219; CHECK-NEXT:    blr20;21; CHECK-P8-LABEL: foo_float:22; CHECK-P8:       # %bb.0:23; CHECK-P8-NEXT:    addis r3, r2, .LCPI0_0@toc@ha24; CHECK-P8-NEXT:    xsmulsp f1, f2, f125; CHECK-P8-NEXT:    xssubsp f0, f3, f426; CHECK-P8-NEXT:    lfs f2, .LCPI0_0@toc@l(r3)27; CHECK-P8-NEXT:    xsmaddasp f1, f0, f228; CHECK-P8-NEXT:    blr29;30; CHECK-FMA-LABEL: foo_float:31; CHECK-FMA:       # %bb.0:32; CHECK-FMA-NEXT:    addis r3, r2, .LCPI0_0@toc@ha33; CHECK-FMA-NEXT:    xsmulsp f1, f2, f134; CHECK-FMA-NEXT:    lfs f0, .LCPI0_0@toc@l(r3)35; CHECK-FMA-NEXT:    addis r3, r2, .LCPI0_1@toc@ha36; CHECK-FMA-NEXT:    lfs f2, .LCPI0_1@toc@l(r3)37; CHECK-FMA-NEXT:    xsmaddasp f1, f4, f238; CHECK-FMA-NEXT:    xsmaddasp f1, f3, f039; CHECK-FMA-NEXT:    blr40  %5 = fmul contract reassoc nsz float %1, %041  %6 = fsub contract reassoc nsz float %2, %342  %7 = fmul contract reassoc nsz float %6, 0x3DB2533FE000000043  %8 = fadd contract reassoc nsz float %7, %544  ret float %845}46 47define double @foo_double(double %0, double %1, double %2, double %3) {48; CHECK-LABEL: foo_double:49; CHECK:       # %bb.0:50; CHECK-NEXT:    xsmuldp f1, f2, f151; CHECK-NEXT:    xssubdp f0, f3, f452; CHECK-NEXT:    addis r3, r2, .LCPI1_0@toc@ha53; CHECK-NEXT:    lfd f2, .LCPI1_0@toc@l(r3)54; CHECK-NEXT:    xsmaddadp f1, f0, f255; CHECK-NEXT:    blr56;57; CHECK-P8-LABEL: foo_double:58; CHECK-P8:       # %bb.0:59; CHECK-P8-NEXT:    addis r3, r2, .LCPI1_0@toc@ha60; CHECK-P8-NEXT:    xsmuldp f1, f2, f161; CHECK-P8-NEXT:    xssubdp f0, f3, f462; CHECK-P8-NEXT:    lfd f2, .LCPI1_0@toc@l(r3)63; CHECK-P8-NEXT:    xsmaddadp f1, f0, f264; CHECK-P8-NEXT:    blr65;66; CHECK-FMA-LABEL: foo_double:67; CHECK-FMA:       # %bb.0:68; CHECK-FMA-NEXT:    addis r3, r2, .LCPI1_0@toc@ha69; CHECK-FMA-NEXT:    xsmuldp f1, f2, f170; CHECK-FMA-NEXT:    lfd f0, .LCPI1_0@toc@l(r3)71; CHECK-FMA-NEXT:    addis r3, r2, .LCPI1_1@toc@ha72; CHECK-FMA-NEXT:    lfd f2, .LCPI1_1@toc@l(r3)73; CHECK-FMA-NEXT:    xsmaddadp f1, f4, f274; CHECK-FMA-NEXT:    xsmaddadp f1, f3, f075; CHECK-FMA-NEXT:    blr76  %5 = fmul contract reassoc nsz double %1, %077  %6 = fsub contract reassoc nsz double %2, %378  %7 = fmul contract reassoc nsz double %6, 0x3DB2533FE68CADDE79  %8 = fadd contract reassoc nsz double %7, %580  ret double %881}82 83define float @foo_float_reuse_const(float %0, float %1, float %2, float %3) {84; CHECK-LABEL: foo_float_reuse_const:85; CHECK:       # %bb.0:86; CHECK-NEXT:    addis r3, r2, .LCPI2_0@toc@ha87; CHECK-NEXT:    xsmulsp f1, f2, f188; CHECK-NEXT:    xssubsp f0, f3, f489; CHECK-NEXT:    lfs f3, .LCPI2_0@toc@l(r3)90; CHECK-NEXT:    addis r3, r2, .LCPI2_1@toc@ha91; CHECK-NEXT:    xsmaddasp f1, f0, f392; CHECK-NEXT:    lfs f0, .LCPI2_1@toc@l(r3)93; CHECK-NEXT:    addis r3, r2, .LC0@toc@ha94; CHECK-NEXT:    ld r3, .LC0@toc@l(r3)95; CHECK-NEXT:    xsmulsp f0, f2, f096; CHECK-NEXT:    stfs f0, 0(r3)97; CHECK-NEXT:    blr98;99; CHECK-P8-LABEL: foo_float_reuse_const:100; CHECK-P8:       # %bb.0:101; CHECK-P8-NEXT:    addis r3, r2, .LCPI2_0@toc@ha102; CHECK-P8-NEXT:    xsmulsp f1, f2, f1103; CHECK-P8-NEXT:    xssubsp f0, f3, f4104; CHECK-P8-NEXT:    lfs f3, .LCPI2_0@toc@l(r3)105; CHECK-P8-NEXT:    addis r3, r2, .LCPI2_1@toc@ha106; CHECK-P8-NEXT:    xsmaddasp f1, f0, f3107; CHECK-P8-NEXT:    lfs f0, .LCPI2_1@toc@l(r3)108; CHECK-P8-NEXT:    addis r3, r2, .LC0@toc@ha109; CHECK-P8-NEXT:    ld r3, .LC0@toc@l(r3)110; CHECK-P8-NEXT:    xsmulsp f0, f2, f0111; CHECK-P8-NEXT:    stfs f0, 0(r3)112; CHECK-P8-NEXT:    blr113;114; CHECK-FMA-LABEL: foo_float_reuse_const:115; CHECK-FMA:       # %bb.0:116; CHECK-FMA-NEXT:    addis r3, r2, .LCPI2_0@toc@ha117; CHECK-FMA-NEXT:    xsmulsp f1, f2, f1118; CHECK-FMA-NEXT:    lfs f0, .LCPI2_0@toc@l(r3)119; CHECK-FMA-NEXT:    addis r3, r2, .LCPI2_1@toc@ha120; CHECK-FMA-NEXT:    lfs f5, .LCPI2_1@toc@l(r3)121; CHECK-FMA-NEXT:    addis r3, r2, .LC0@toc@ha122; CHECK-FMA-NEXT:    ld r3, .LC0@toc@l(r3)123; CHECK-FMA-NEXT:    xsmaddasp f1, f4, f5124; CHECK-FMA-NEXT:    xsmaddasp f1, f3, f0125; CHECK-FMA-NEXT:    xsmulsp f0, f2, f5126; CHECK-FMA-NEXT:    stfs f0, 0(r3)127; CHECK-FMA-NEXT:    blr128  %5 = fmul contract reassoc nsz float %1, %0129  %6 = fsub contract reassoc nsz float %2, %3130  %7 = fmul contract reassoc nsz float %6, 0x3DB2533FE0000000131  %8 = fadd contract reassoc nsz float %7, %5132  %9 = fmul contract reassoc nsz float %1, 0xBDB2533FE0000000133  store float %9, ptr @global_val, align 4134  ret float %8135}136