brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.9 KiB · 252b479 Raw
276 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple=sparc64 --fp-contract=fast -mattr=-ua2007 < %s | FileCheck %s -check-prefix=NO-UA20073; RUN: llc -mtriple=sparc64 --fp-contract=fast -mattr=+ua2007 < %s | FileCheck %s -check-prefix=UA20074 5define float @fmadds(float %a, float %b, float %c) nounwind {6; NO-UA2007-LABEL: fmadds:7; NO-UA2007:       ! %bb.0:8; NO-UA2007-NEXT:    fmuls %f1, %f3, %f09; NO-UA2007-NEXT:    retl10; NO-UA2007-NEXT:    fadds %f0, %f5, %f011;12; UA2007-LABEL: fmadds:13; UA2007:       ! %bb.0:14; UA2007-NEXT:    retl15; UA2007-NEXT:    fmadds %f1, %f3, %f5, %f016  %ret = call float @llvm.fmuladd.f32(float %a, float %b, float %c)17  ret float %ret18}19 20define double @fmaddd(double %a, double %b, double %c) nounwind {21; NO-UA2007-LABEL: fmaddd:22; NO-UA2007:       ! %bb.0:23; NO-UA2007-NEXT:    fmuld %f0, %f2, %f024; NO-UA2007-NEXT:    retl25; NO-UA2007-NEXT:    faddd %f0, %f4, %f026;27; UA2007-LABEL: fmaddd:28; UA2007:       ! %bb.0:29; UA2007-NEXT:    retl30; UA2007-NEXT:    fmaddd %f0, %f2, %f4, %f031  %ret = call double @llvm.fmuladd.f64(double %a, double %b, double %c)32  ret double %ret33}34 35define float @fmsubs(float %a, float %b, float %c) nounwind {36; NO-UA2007-LABEL: fmsubs:37; NO-UA2007:       ! %bb.0:38; NO-UA2007-NEXT:    fmuls %f1, %f3, %f039; NO-UA2007-NEXT:    retl40; NO-UA2007-NEXT:    fsubs %f0, %f5, %f041;42; UA2007-LABEL: fmsubs:43; UA2007:       ! %bb.0:44; UA2007-NEXT:    retl45; UA2007-NEXT:    fmsubs %f1, %f3, %f5, %f046  %neg = fneg float %c47  %ret = call float @llvm.fmuladd.f32(float %a, float %b, float %neg)48  ret float %ret49}50 51define double @fmsubd(double %a, double %b, double %c) nounwind {52; NO-UA2007-LABEL: fmsubd:53; NO-UA2007:       ! %bb.0:54; NO-UA2007-NEXT:    fmuld %f0, %f2, %f055; NO-UA2007-NEXT:    retl56; NO-UA2007-NEXT:    fsubd %f0, %f4, %f057;58; UA2007-LABEL: fmsubd:59; UA2007:       ! %bb.0:60; UA2007-NEXT:    retl61; UA2007-NEXT:    fmsubd %f0, %f2, %f4, %f062  %neg = fneg double %c63  %ret = call double @llvm.fmuladd.f64(double %a, double %b, double %neg)64  ret double %ret65}66 67define float @fnmadds(float %a, float %b, float %c) nounwind {68; NO-UA2007-LABEL: fnmadds:69; NO-UA2007:       ! %bb.0:70; NO-UA2007-NEXT:    fmuls %f1, %f3, %f071; NO-UA2007-NEXT:    fadds %f0, %f5, %f072; NO-UA2007-NEXT:    retl73; NO-UA2007-NEXT:    fnegs %f0, %f074;75; UA2007-LABEL: fnmadds:76; UA2007:       ! %bb.0:77; UA2007-NEXT:    retl78; UA2007-NEXT:    fnmadds %f1, %f3, %f5, %f079  %fma = call float @llvm.fmuladd.f32(float %a, float %b, float %c)80  %ret = fneg float %fma81  ret float %ret82}83 84define double @fnmaddd(double %a, double %b, double %c) nounwind {85; NO-UA2007-LABEL: fnmaddd:86; NO-UA2007:       ! %bb.0:87; NO-UA2007-NEXT:    fmuld %f0, %f2, %f088; NO-UA2007-NEXT:    faddd %f0, %f4, %f089; NO-UA2007-NEXT:    retl90; NO-UA2007-NEXT:    fnegd %f0, %f091;92; UA2007-LABEL: fnmaddd:93; UA2007:       ! %bb.0:94; UA2007-NEXT:    retl95; UA2007-NEXT:    fnmaddd %f0, %f2, %f4, %f096  %fma = call double @llvm.fmuladd.f64(double %a, double %b, double %c)97  %ret = fneg double %fma98  ret double %ret99}100 101define float @fnmsubs(float %a, float %b, float %c) nounwind {102; NO-UA2007-LABEL: fnmsubs:103; NO-UA2007:       ! %bb.0:104; NO-UA2007-NEXT:    fmuls %f1, %f3, %f0105; NO-UA2007-NEXT:    fsubs %f0, %f5, %f0106; NO-UA2007-NEXT:    retl107; NO-UA2007-NEXT:    fnegs %f0, %f0108;109; UA2007-LABEL: fnmsubs:110; UA2007:       ! %bb.0:111; UA2007-NEXT:    retl112; UA2007-NEXT:    fnmsubs %f1, %f3, %f5, %f0113  %neg = fneg float %c114  %fma = call float @llvm.fmuladd.f32(float %a, float %b, float %neg)115  %ret = fneg float %fma116  ret float %ret117}118 119define double @fnmsubd(double %a, double %b, double %c) nounwind {120; NO-UA2007-LABEL: fnmsubd:121; NO-UA2007:       ! %bb.0:122; NO-UA2007-NEXT:    fmuld %f0, %f2, %f0123; NO-UA2007-NEXT:    fsubd %f0, %f4, %f0124; NO-UA2007-NEXT:    retl125; NO-UA2007-NEXT:    fnegd %f0, %f0126;127; UA2007-LABEL: fnmsubd:128; UA2007:       ! %bb.0:129; UA2007-NEXT:    retl130; UA2007-NEXT:    fnmsubd %f0, %f2, %f4, %f0131  %neg = fneg double %c132  %fma = call double @llvm.fmuladd.f64(double %a, double %b, double %neg)133  %ret = fneg double %fma134  ret double %ret135}136 137 138define float @combine_madds(float %a, float %b, float %c) nounwind {139; NO-UA2007-LABEL: combine_madds:140; NO-UA2007:       ! %bb.0:141; NO-UA2007-NEXT:    fmuls %f1, %f3, %f0142; NO-UA2007-NEXT:    retl143; NO-UA2007-NEXT:    fadds %f0, %f5, %f0144;145; UA2007-LABEL: combine_madds:146; UA2007:       ! %bb.0:147; UA2007-NEXT:    retl148; UA2007-NEXT:    fmadds %f1, %f3, %f5, %f0149  %mul = fmul float %a, %b150  %add = fadd float %mul, %c151  ret float %add152}153 154define double @combine_maddd(double %a, double %b, double %c) nounwind {155; NO-UA2007-LABEL: combine_maddd:156; NO-UA2007:       ! %bb.0:157; NO-UA2007-NEXT:    fmuld %f0, %f2, %f0158; NO-UA2007-NEXT:    retl159; NO-UA2007-NEXT:    faddd %f0, %f4, %f0160;161; UA2007-LABEL: combine_maddd:162; UA2007:       ! %bb.0:163; UA2007-NEXT:    retl164; UA2007-NEXT:    fmaddd %f0, %f2, %f4, %f0165  %mul = fmul double %a, %b166  %add = fadd double %mul, %c167  ret double %add168}169 170define float @combine_msubs(float %a, float %b, float %c) nounwind {171; NO-UA2007-LABEL: combine_msubs:172; NO-UA2007:       ! %bb.0:173; NO-UA2007-NEXT:    fmuls %f1, %f3, %f0174; NO-UA2007-NEXT:    retl175; NO-UA2007-NEXT:    fsubs %f0, %f5, %f0176;177; UA2007-LABEL: combine_msubs:178; UA2007:       ! %bb.0:179; UA2007-NEXT:    retl180; UA2007-NEXT:    fmsubs %f1, %f3, %f5, %f0181  %mul = fmul float %a, %b182  %sub = fsub float %mul, %c183  ret float %sub184}185 186define double @combine_msubd(double %a, double %b, double %c) nounwind {187; NO-UA2007-LABEL: combine_msubd:188; NO-UA2007:       ! %bb.0:189; NO-UA2007-NEXT:    fmuld %f0, %f2, %f0190; NO-UA2007-NEXT:    retl191; NO-UA2007-NEXT:    fsubd %f0, %f4, %f0192;193; UA2007-LABEL: combine_msubd:194; UA2007:       ! %bb.0:195; UA2007-NEXT:    retl196; UA2007-NEXT:    fmsubd %f0, %f2, %f4, %f0197  %mul = fmul double %a, %b198  %sub = fsub double %mul, %c199  ret double %sub200}201 202define float @combine_nmadds(float %a, float %b, float %c) nounwind {203; NO-UA2007-LABEL: combine_nmadds:204; NO-UA2007:       ! %bb.0:205; NO-UA2007-NEXT:    fmuls %f1, %f3, %f0206; NO-UA2007-NEXT:    fadds %f0, %f5, %f0207; NO-UA2007-NEXT:    retl208; NO-UA2007-NEXT:    fnegs %f0, %f0209;210; UA2007-LABEL: combine_nmadds:211; UA2007:       ! %bb.0:212; UA2007-NEXT:    retl213; UA2007-NEXT:    fnmadds %f1, %f3, %f5, %f0214  %mul = fmul float %a, %b215  %add = fadd float %mul, %c216  %neg = fneg float %add217  ret float %neg218}219 220define double @combine_nmaddd(double %a, double %b, double %c) nounwind {221; NO-UA2007-LABEL: combine_nmaddd:222; NO-UA2007:       ! %bb.0:223; NO-UA2007-NEXT:    fmuld %f0, %f2, %f0224; NO-UA2007-NEXT:    faddd %f0, %f4, %f0225; NO-UA2007-NEXT:    retl226; NO-UA2007-NEXT:    fnegd %f0, %f0227;228; UA2007-LABEL: combine_nmaddd:229; UA2007:       ! %bb.0:230; UA2007-NEXT:    retl231; UA2007-NEXT:    fnmaddd %f0, %f2, %f4, %f0232  %mul = fmul double %a, %b233  %add = fadd double %mul, %c234  %neg = fneg double %add235  ret double %neg236}237 238define float @combine_nmsubs(float %a, float %b, float %c) nounwind {239; NO-UA2007-LABEL: combine_nmsubs:240; NO-UA2007:       ! %bb.0:241; NO-UA2007-NEXT:    fmuls %f1, %f3, %f0242; NO-UA2007-NEXT:    fsubs %f0, %f5, %f0243; NO-UA2007-NEXT:    retl244; NO-UA2007-NEXT:    fnegs %f0, %f0245;246; UA2007-LABEL: combine_nmsubs:247; UA2007:       ! %bb.0:248; UA2007-NEXT:    retl249; UA2007-NEXT:    fnmsubs %f1, %f3, %f5, %f0250  %mul = fmul float %a, %b251  %sub = fsub float %mul, %c252  %neg = fneg float %sub253  ret float %neg254}255 256define double @combine_nmsubd(double %a, double %b, double %c) nounwind {257; NO-UA2007-LABEL: combine_nmsubd:258; NO-UA2007:       ! %bb.0:259; NO-UA2007-NEXT:    fmuld %f0, %f2, %f0260; NO-UA2007-NEXT:    fsubd %f0, %f4, %f0261; NO-UA2007-NEXT:    retl262; NO-UA2007-NEXT:    fnegd %f0, %f0263;264; UA2007-LABEL: combine_nmsubd:265; UA2007:       ! %bb.0:266; UA2007-NEXT:    retl267; UA2007-NEXT:    fnmsubd %f0, %f2, %f4, %f0268  %mul = fmul double %a, %b269  %sub = fsub double %mul, %c270  %neg = fneg double %sub271  ret double %neg272}273 274declare float @llvm.fmuladd.f32(float, float, float)275declare double @llvm.fmuladd.f64(double, double, double)276