258 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mcpu=pwr9 -verify-machineinstrs -mtriple=powerpc64le-unknown-linux \3; RUN: < %s | FileCheck --check-prefixes=CHECK,CHECK-P9 %s4; RUN: llc -mcpu=pwr8 -verify-machineinstrs -mtriple=powerpc64le-unknown-linux \5; RUN: < %s | FileCheck --check-prefixes=CHECK,CHECK-P8 %s6 7declare ppc_fp128 @llvm.ppc.maxfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ...)8define ppc_fp128 @test_maxfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128 %d) {9; CHECK-LABEL: test_maxfe:10; CHECK: # %bb.0: # %entry11; CHECK-NEXT: fcmpu 0, 6, 412; CHECK-NEXT: fcmpu 1, 5, 313; CHECK-NEXT: crand 20, 6, 114; CHECK-NEXT: cror 20, 5, 2015; CHECK-NEXT: bc 12, 20, .LBB0_216; CHECK-NEXT: # %bb.1: # %entry17; CHECK-NEXT: fmr 6, 418; CHECK-NEXT: .LBB0_2: # %entry19; CHECK-NEXT: fcmpu 0, 6, 220; CHECK-NEXT: bc 12, 20, .LBB0_421; CHECK-NEXT: # %bb.3: # %entry22; CHECK-NEXT: fmr 5, 323; CHECK-NEXT: .LBB0_4: # %entry24; CHECK-NEXT: fcmpu 1, 5, 125; CHECK-NEXT: crand 20, 6, 126; CHECK-NEXT: cror 20, 5, 2027; CHECK-NEXT: bc 12, 20, .LBB0_628; CHECK-NEXT: # %bb.5: # %entry29; CHECK-NEXT: fmr 6, 230; CHECK-NEXT: .LBB0_6: # %entry31; CHECK-NEXT: fcmpu 0, 6, 832; CHECK-NEXT: bc 12, 20, .LBB0_833; CHECK-NEXT: # %bb.7: # %entry34; CHECK-NEXT: fmr 5, 135; CHECK-NEXT: .LBB0_8: # %entry36; CHECK-NEXT: fcmpu 1, 5, 737; CHECK-NEXT: crand 20, 6, 138; CHECK-NEXT: cror 20, 5, 2039; CHECK-NEXT: bc 12, 20, .LBB0_1040; CHECK-NEXT: # %bb.9: # %entry41; CHECK-NEXT: fmr 5, 742; CHECK-NEXT: .LBB0_10: # %entry43; CHECK-NEXT: bc 12, 20, .LBB0_1244; CHECK-NEXT: # %bb.11: # %entry45; CHECK-NEXT: fmr 6, 846; CHECK-NEXT: .LBB0_12: # %entry47; CHECK-NEXT: fmr 1, 548; CHECK-NEXT: fmr 2, 649; CHECK-NEXT: blr50entry:51 %0 = call ppc_fp128 (ppc_fp128, ppc_fp128, ppc_fp128, ...) @llvm.ppc.maxfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128 %d)52 ret ppc_fp128 %053}54 55declare double @llvm.ppc.maxfl(double %a, double %b, double %c, ...)56define double @test_maxfl(double %a, double %b, double %c, double %d) {57; CHECK-P9-LABEL: test_maxfl:58; CHECK-P9: # %bb.0: # %entry59; CHECK-P9-NEXT: xsmaxcdp 0, 3, 260; CHECK-P9-NEXT: xsmaxcdp 0, 0, 161; CHECK-P9-NEXT: xsmaxcdp 1, 0, 462; CHECK-P9-NEXT: blr63;64; CHECK-P8-LABEL: test_maxfl:65; CHECK-P8: # %bb.0: # %entry66; CHECK-P8-NEXT: xscmpudp 0, 3, 267; CHECK-P8-NEXT: ble 0, .LBB1_468; CHECK-P8-NEXT: # %bb.1: # %entry69; CHECK-P8-NEXT: xscmpudp 0, 3, 170; CHECK-P8-NEXT: ble 0, .LBB1_571; CHECK-P8-NEXT: .LBB1_2: # %entry72; CHECK-P8-NEXT: xscmpudp 0, 3, 473; CHECK-P8-NEXT: ble 0, .LBB1_674; CHECK-P8-NEXT: .LBB1_3: # %entry75; CHECK-P8-NEXT: fmr 1, 376; CHECK-P8-NEXT: blr77; CHECK-P8-NEXT: .LBB1_4: # %entry78; CHECK-P8-NEXT: fmr 3, 279; CHECK-P8-NEXT: xscmpudp 0, 3, 180; CHECK-P8-NEXT: bgt 0, .LBB1_281; CHECK-P8-NEXT: .LBB1_5: # %entry82; CHECK-P8-NEXT: fmr 3, 183; CHECK-P8-NEXT: xscmpudp 0, 3, 484; CHECK-P8-NEXT: bgt 0, .LBB1_385; CHECK-P8-NEXT: .LBB1_6: # %entry86; CHECK-P8-NEXT: fmr 3, 487; CHECK-P8-NEXT: fmr 1, 388; CHECK-P8-NEXT: blr89entry:90 %0 = call double (double, double, double, ...) @llvm.ppc.maxfl(double %a, double %b, double %c, double %d)91 ret double %092}93 94declare float @llvm.ppc.maxfs(float %a, float %b, float %c, ...)95define float @test_maxfs(float %a, float %b, float %c, float %d) {96; CHECK-P9-LABEL: test_maxfs:97; CHECK-P9: # %bb.0: # %entry98; CHECK-P9-NEXT: xsmaxcdp 0, 3, 299; CHECK-P9-NEXT: xsmaxcdp 0, 0, 1100; CHECK-P9-NEXT: xsmaxcdp 1, 0, 4101; CHECK-P9-NEXT: blr102;103; CHECK-P8-LABEL: test_maxfs:104; CHECK-P8: # %bb.0: # %entry105; CHECK-P8-NEXT: fcmpu 0, 3, 2106; CHECK-P8-NEXT: ble 0, .LBB2_4107; CHECK-P8-NEXT: # %bb.1: # %entry108; CHECK-P8-NEXT: fcmpu 0, 3, 1109; CHECK-P8-NEXT: ble 0, .LBB2_5110; CHECK-P8-NEXT: .LBB2_2: # %entry111; CHECK-P8-NEXT: fcmpu 0, 3, 4112; CHECK-P8-NEXT: ble 0, .LBB2_6113; CHECK-P8-NEXT: .LBB2_3: # %entry114; CHECK-P8-NEXT: fmr 1, 3115; CHECK-P8-NEXT: blr116; CHECK-P8-NEXT: .LBB2_4: # %entry117; CHECK-P8-NEXT: fmr 3, 2118; CHECK-P8-NEXT: fcmpu 0, 3, 1119; CHECK-P8-NEXT: bgt 0, .LBB2_2120; CHECK-P8-NEXT: .LBB2_5: # %entry121; CHECK-P8-NEXT: fmr 3, 1122; CHECK-P8-NEXT: fcmpu 0, 3, 4123; CHECK-P8-NEXT: bgt 0, .LBB2_3124; CHECK-P8-NEXT: .LBB2_6: # %entry125; CHECK-P8-NEXT: fmr 3, 4126; CHECK-P8-NEXT: fmr 1, 3127; CHECK-P8-NEXT: blr128entry:129 %0 = call float (float, float, float, ...) @llvm.ppc.maxfs(float %a, float %b, float %c, float %d)130 ret float %0131}132 133declare ppc_fp128 @llvm.ppc.minfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ...)134define ppc_fp128 @test_minfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128 %d) {135; CHECK-LABEL: test_minfe:136; CHECK: # %bb.0: # %entry137; CHECK-NEXT: fcmpu 0, 6, 4138; CHECK-NEXT: fcmpu 1, 5, 3139; CHECK-NEXT: crand 20, 6, 0140; CHECK-NEXT: cror 20, 4, 20141; CHECK-NEXT: bc 12, 20, .LBB3_2142; CHECK-NEXT: # %bb.1: # %entry143; CHECK-NEXT: fmr 6, 4144; CHECK-NEXT: .LBB3_2: # %entry145; CHECK-NEXT: fcmpu 0, 6, 2146; CHECK-NEXT: bc 12, 20, .LBB3_4147; CHECK-NEXT: # %bb.3: # %entry148; CHECK-NEXT: fmr 5, 3149; CHECK-NEXT: .LBB3_4: # %entry150; CHECK-NEXT: fcmpu 1, 5, 1151; CHECK-NEXT: crand 20, 6, 0152; CHECK-NEXT: cror 20, 4, 20153; CHECK-NEXT: bc 12, 20, .LBB3_6154; CHECK-NEXT: # %bb.5: # %entry155; CHECK-NEXT: fmr 6, 2156; CHECK-NEXT: .LBB3_6: # %entry157; CHECK-NEXT: fcmpu 0, 6, 8158; CHECK-NEXT: bc 12, 20, .LBB3_8159; CHECK-NEXT: # %bb.7: # %entry160; CHECK-NEXT: fmr 5, 1161; CHECK-NEXT: .LBB3_8: # %entry162; CHECK-NEXT: fcmpu 1, 5, 7163; CHECK-NEXT: crand 20, 6, 0164; CHECK-NEXT: cror 20, 4, 20165; CHECK-NEXT: bc 12, 20, .LBB3_10166; CHECK-NEXT: # %bb.9: # %entry167; CHECK-NEXT: fmr 5, 7168; CHECK-NEXT: .LBB3_10: # %entry169; CHECK-NEXT: bc 12, 20, .LBB3_12170; CHECK-NEXT: # %bb.11: # %entry171; CHECK-NEXT: fmr 6, 8172; CHECK-NEXT: .LBB3_12: # %entry173; CHECK-NEXT: fmr 1, 5174; CHECK-NEXT: fmr 2, 6175; CHECK-NEXT: blr176entry:177 %0 = call ppc_fp128 (ppc_fp128, ppc_fp128, ppc_fp128, ...) @llvm.ppc.minfe(ppc_fp128 %a, ppc_fp128 %b, ppc_fp128 %c, ppc_fp128 %d)178 ret ppc_fp128 %0179}180 181declare double @llvm.ppc.minfl(double %a, double %b, double %c, ...)182define double @test_minfl(double %a, double %b, double %c, double %d) {183; CHECK-P9-LABEL: test_minfl:184; CHECK-P9: # %bb.0: # %entry185; CHECK-P9-NEXT: xsmincdp 0, 3, 2186; CHECK-P9-NEXT: xsmincdp 0, 0, 1187; CHECK-P9-NEXT: xsmincdp 1, 0, 4188; CHECK-P9-NEXT: blr189;190; CHECK-P8-LABEL: test_minfl:191; CHECK-P8: # %bb.0: # %entry192; CHECK-P8-NEXT: xscmpudp 0, 3, 2193; CHECK-P8-NEXT: bge 0, .LBB4_4194; CHECK-P8-NEXT: # %bb.1: # %entry195; CHECK-P8-NEXT: xscmpudp 0, 3, 1196; CHECK-P8-NEXT: bge 0, .LBB4_5197; CHECK-P8-NEXT: .LBB4_2: # %entry198; CHECK-P8-NEXT: xscmpudp 0, 3, 4199; CHECK-P8-NEXT: bge 0, .LBB4_6200; CHECK-P8-NEXT: .LBB4_3: # %entry201; CHECK-P8-NEXT: fmr 1, 3202; CHECK-P8-NEXT: blr203; CHECK-P8-NEXT: .LBB4_4: # %entry204; CHECK-P8-NEXT: fmr 3, 2205; CHECK-P8-NEXT: xscmpudp 0, 3, 1206; CHECK-P8-NEXT: blt 0, .LBB4_2207; CHECK-P8-NEXT: .LBB4_5: # %entry208; CHECK-P8-NEXT: fmr 3, 1209; CHECK-P8-NEXT: xscmpudp 0, 3, 4210; CHECK-P8-NEXT: blt 0, .LBB4_3211; CHECK-P8-NEXT: .LBB4_6: # %entry212; CHECK-P8-NEXT: fmr 3, 4213; CHECK-P8-NEXT: fmr 1, 3214; CHECK-P8-NEXT: blr215entry:216 %0 = call double (double, double, double, ...) @llvm.ppc.minfl(double %a, double %b, double %c, double %d)217 ret double %0218}219 220declare float @llvm.ppc.minfs(float %a, float %b, float %c, ...)221define float @test_minfs(float %a, float %b, float %c, float %d) {222; CHECK-P9-LABEL: test_minfs:223; CHECK-P9: # %bb.0: # %entry224; CHECK-P9-NEXT: xsmincdp 0, 3, 2225; CHECK-P9-NEXT: xsmincdp 0, 0, 1226; CHECK-P9-NEXT: xsmincdp 1, 0, 4227; CHECK-P9-NEXT: blr228;229; CHECK-P8-LABEL: test_minfs:230; CHECK-P8: # %bb.0: # %entry231; CHECK-P8-NEXT: fcmpu 0, 3, 2232; CHECK-P8-NEXT: bge 0, .LBB5_4233; CHECK-P8-NEXT: # %bb.1: # %entry234; CHECK-P8-NEXT: fcmpu 0, 3, 1235; CHECK-P8-NEXT: bge 0, .LBB5_5236; CHECK-P8-NEXT: .LBB5_2: # %entry237; CHECK-P8-NEXT: fcmpu 0, 3, 4238; CHECK-P8-NEXT: bge 0, .LBB5_6239; CHECK-P8-NEXT: .LBB5_3: # %entry240; CHECK-P8-NEXT: fmr 1, 3241; CHECK-P8-NEXT: blr242; CHECK-P8-NEXT: .LBB5_4: # %entry243; CHECK-P8-NEXT: fmr 3, 2244; CHECK-P8-NEXT: fcmpu 0, 3, 1245; CHECK-P8-NEXT: blt 0, .LBB5_2246; CHECK-P8-NEXT: .LBB5_5: # %entry247; CHECK-P8-NEXT: fmr 3, 1248; CHECK-P8-NEXT: fcmpu 0, 3, 4249; CHECK-P8-NEXT: blt 0, .LBB5_3250; CHECK-P8-NEXT: .LBB5_6: # %entry251; CHECK-P8-NEXT: fmr 3, 4252; CHECK-P8-NEXT: fmr 1, 3253; CHECK-P8-NEXT: blr254entry:255 %0 = call float (float, float, float, ...) @llvm.ppc.minfs(float %a, float %b, float %c, float %d)256 ret float %0257}258