641 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu -O2 \3; RUN: -ppc-asm-full-reg-names -mcpu=pwr10 < %s | FileCheck %s \4; RUN: --check-prefixes=CHECK,CHECK-LE5; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu -O2 \6; RUN: -ppc-asm-full-reg-names -mcpu=pwr10 < %s | FileCheck %s \7; RUN: --check-prefixes=CHECK,CHECK-BE8 9; This file does not contain many test cases involving comparisons and logical10; comparisons (cmplwi, cmpldi). This is because alternative code is generated11; when there is a compare (logical or not), followed by a sign or zero extend.12; This codegen will be re-evaluated at a later time on whether or not it should13; be emitted on P10.14 15@globalVal = common dso_local local_unnamed_addr global i8 0, align 116@globalVal2 = common dso_local local_unnamed_addr global i32 0, align 417@globalVal3 = common dso_local local_unnamed_addr global i64 0, align 818@globalVal4 = common dso_local local_unnamed_addr global i16 0, align 219 20define dso_local signext i32 @setbc1(i8 %a) {21; CHECK-LABEL: setbc1:22; CHECK: # %bb.0: # %entry23; CHECK-NEXT: extsb r3, r324; CHECK-NEXT: cmpwi r3, 125; CHECK-NEXT: setbc r3, lt26; CHECK-NEXT: blr27entry:28 %cmp = icmp slt i8 %a, 129 %conv = zext i1 %cmp to i3230 ret i32 %conv31}32 33define dso_local signext i32 @setbc2(i32 %a) {34; CHECK-LABEL: setbc2:35; CHECK: # %bb.0: # %entry36; CHECK-NEXT: cmpwi r3, 137; CHECK-NEXT: setbc r3, lt38; CHECK-NEXT: blr39entry:40 %cmp = icmp slt i32 %a, 141 %conv = zext i1 %cmp to i3242 ret i32 %conv43}44 45define dso_local signext i32 @setbc3(i64 %a) {46; CHECK-LABEL: setbc3:47; CHECK: # %bb.0: # %entry48; CHECK-NEXT: cmpdi r3, 149; CHECK-NEXT: setbc r3, lt50; CHECK-NEXT: blr51entry:52 %cmp = icmp slt i64 %a, 153 %conv = zext i1 %cmp to i3254 ret i32 %conv55}56 57define dso_local signext i32 @setbc4(i16 %a) {58; CHECK-LABEL: setbc4:59; CHECK: # %bb.0: # %entry60; CHECK-NEXT: extsh r3, r361; CHECK-NEXT: cmpwi r3, 162; CHECK-NEXT: setbc r3, lt63; CHECK-NEXT: blr64entry:65 %cmp = icmp slt i16 %a, 166 %conv = zext i1 %cmp to i3267 ret i32 %conv68}69 70define signext i64 @setbc5(i8 %a) {71; CHECK-LABEL: setbc5:72; CHECK: # %bb.0: # %entry73; CHECK-NEXT: extsb r3, r374; CHECK-NEXT: cmpwi r3, 175; CHECK-NEXT: setbc r3, lt76; CHECK-NEXT: blr77entry:78 %cmp = icmp slt i8 %a, 179 %conv = zext i1 %cmp to i6480 ret i64 %conv81}82 83define signext i64 @setbc6(i32 %a) {84; CHECK-LABEL: setbc6:85; CHECK: # %bb.0: # %entry86; CHECK-NEXT: cmpwi r3, 187; CHECK-NEXT: setbc r3, lt88; CHECK-NEXT: blr89entry:90 %cmp = icmp slt i32 %a, 191 %conv = zext i1 %cmp to i6492 ret i64 %conv93}94 95define signext i64 @setbc7(i64 %a) {96; CHECK-LABEL: setbc7:97; CHECK: # %bb.0: # %entry98; CHECK-NEXT: cmpdi r3, 199; CHECK-NEXT: setbc r3, lt100; CHECK-NEXT: blr101entry:102 %cmp = icmp slt i64 %a, 1103 %conv = zext i1 %cmp to i64104 ret i64 %conv105}106 107define signext i64 @setbc8(i16 %a) {108; CHECK-LABEL: setbc8:109; CHECK: # %bb.0: # %entry110; CHECK-NEXT: extsh r3, r3111; CHECK-NEXT: cmpwi r3, 1112; CHECK-NEXT: setbc r3, lt113; CHECK-NEXT: blr114entry:115 %cmp = icmp slt i16 %a, 1116 %conv = zext i1 %cmp to i64117 ret i64 %conv118}119 120define dso_local void @setbc9(i8 %a) {121; CHECK-LE-LABEL: setbc9:122; CHECK-LE: # %bb.0: # %entry123; CHECK-LE-NEXT: extsb r3, r3124; CHECK-LE-NEXT: cmpwi r3, 1125; CHECK-LE-NEXT: setbc r3, lt126; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1127; CHECK-LE-NEXT: blr128;129; CHECK-BE-LABEL: setbc9:130; CHECK-BE: # %bb.0: # %entry131; CHECK-BE-NEXT: extsb r3, r3132; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha133; CHECK-BE-NEXT: cmpwi r3, 1134; CHECK-BE-NEXT: setbc r3, lt135; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)136; CHECK-BE-NEXT: blr137entry:138 %cmp = icmp slt i8 %a, 1139 %conv1 = zext i1 %cmp to i8140 store i8 %conv1, ptr @globalVal, align 1141 ret void142}143 144define dso_local void @setbc10(i32 %a) {145; CHECK-LE-LABEL: setbc10:146; CHECK-LE: # %bb.0: # %entry147; CHECK-LE-NEXT: cmpwi r3, 1148; CHECK-LE-NEXT: setbc r3, lt149; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1150; CHECK-LE-NEXT: blr151;152; CHECK-BE-LABEL: setbc10:153; CHECK-BE: # %bb.0: # %entry154; CHECK-BE-NEXT: cmpwi r3, 1155; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha156; CHECK-BE-NEXT: setbc r3, lt157; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)158; CHECK-BE-NEXT: blr159entry:160 %cmp = icmp slt i32 %a, 1161 %conv1 = zext i1 %cmp to i32162 store i32 %conv1, ptr @globalVal2, align 4163 ret void164}165 166define dso_local void @setbc11(i64 %a) {167; CHECK-LE-LABEL: setbc11:168; CHECK-LE: # %bb.0: # %entry169; CHECK-LE-NEXT: cmpdi r3, 1170; CHECK-LE-NEXT: setbc r3, lt171; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1172; CHECK-LE-NEXT: blr173;174; CHECK-BE-LABEL: setbc11:175; CHECK-BE: # %bb.0: # %entry176; CHECK-BE-NEXT: cmpdi r3, 1177; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha178; CHECK-BE-NEXT: setbc r3, lt179; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)180; CHECK-BE-NEXT: blr181entry:182 %cmp = icmp slt i64 %a, 1183 %conv1 = zext i1 %cmp to i64184 store i64 %conv1, ptr @globalVal3, align 8185 ret void186}187 188define dso_local void @setbc12(i16 %a) {189; CHECK-LE-LABEL: setbc12:190; CHECK-LE: # %bb.0: # %entry191; CHECK-LE-NEXT: extsh r3, r3192; CHECK-LE-NEXT: cmpwi r3, 1193; CHECK-LE-NEXT: setbc r3, lt194; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1195; CHECK-LE-NEXT: blr196;197; CHECK-BE-LABEL: setbc12:198; CHECK-BE: # %bb.0: # %entry199; CHECK-BE-NEXT: extsh r3, r3200; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha201; CHECK-BE-NEXT: cmpwi r3, 1202; CHECK-BE-NEXT: setbc r3, lt203; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)204; CHECK-BE-NEXT: blr205entry:206 %cmp = icmp slt i16 %a, 1207 %conv1 = zext i1 %cmp to i16208 store i16 %conv1, ptr @globalVal4, align 2209 ret void210}211 212define dso_local signext i32 @setbc13(i8 %a) {213; CHECK-LABEL: setbc13:214; CHECK: # %bb.0: # %entry215; CHECK-NEXT: extsb r3, r3216; CHECK-NEXT: cmpwi r3, 1217; CHECK-NEXT: setbc r3, gt218; CHECK-NEXT: blr219entry:220 %cmp = icmp sgt i8 %a, 1221 %conv = zext i1 %cmp to i32222 ret i32 %conv223}224 225define dso_local signext i32 @setbc14(i32 %a) {226; CHECK-LABEL: setbc14:227; CHECK: # %bb.0: # %entry228; CHECK-NEXT: cmpwi r3, 1229; CHECK-NEXT: setbc r3, gt230; CHECK-NEXT: blr231entry:232 %cmp = icmp sgt i32 %a, 1233 %conv = zext i1 %cmp to i32234 ret i32 %conv235}236 237define dso_local signext i32 @setbc15(i64 %a) {238; CHECK-LABEL: setbc15:239; CHECK: # %bb.0: # %entry240; CHECK-NEXT: cmpdi r3, 1241; CHECK-NEXT: setbc r3, gt242; CHECK-NEXT: blr243entry:244 %cmp = icmp sgt i64 %a, 1245 %conv = zext i1 %cmp to i32246 ret i32 %conv247}248 249define dso_local signext i32 @setbc16(i16 %a) {250; CHECK-LABEL: setbc16:251; CHECK: # %bb.0: # %entry252; CHECK-NEXT: extsh r3, r3253; CHECK-NEXT: cmpwi r3, 1254; CHECK-NEXT: setbc r3, gt255; CHECK-NEXT: blr256entry:257 %cmp = icmp sgt i16 %a, 1258 %conv = zext i1 %cmp to i32259 ret i32 %conv260}261 262define signext i64 @setbc17(i8 %a) {263; CHECK-LABEL: setbc17:264; CHECK: # %bb.0: # %entry265; CHECK-NEXT: extsb r3, r3266; CHECK-NEXT: cmpwi r3, 1267; CHECK-NEXT: setbc r3, gt268; CHECK-NEXT: blr269entry:270 %cmp = icmp sgt i8 %a, 1271 %conv = zext i1 %cmp to i64272 ret i64 %conv273}274 275define signext i64 @setbc18(i32 %a) {276; CHECK-LABEL: setbc18:277; CHECK: # %bb.0: # %entry278; CHECK-NEXT: cmpwi r3, 1279; CHECK-NEXT: setbc r3, gt280; CHECK-NEXT: blr281entry:282 %cmp = icmp sgt i32 %a, 1283 %conv = zext i1 %cmp to i64284 ret i64 %conv285}286 287define signext i64 @setbc19(i64 %a) {288; CHECK-LABEL: setbc19:289; CHECK: # %bb.0: # %entry290; CHECK-NEXT: cmpdi r3, 1291; CHECK-NEXT: setbc r3, gt292; CHECK-NEXT: blr293entry:294 %cmp = icmp sgt i64 %a, 1295 %conv = zext i1 %cmp to i64296 ret i64 %conv297}298 299define signext i64 @setbc20(i16 %a) {300; CHECK-LABEL: setbc20:301; CHECK: # %bb.0: # %entry302; CHECK-NEXT: extsh r3, r3303; CHECK-NEXT: cmpwi r3, 1304; CHECK-NEXT: setbc r3, gt305; CHECK-NEXT: blr306entry:307 %cmp = icmp sgt i16 %a, 1308 %conv = zext i1 %cmp to i64309 ret i64 %conv310}311 312define dso_local void @setbc21(i8 %a) {313; CHECK-LE-LABEL: setbc21:314; CHECK-LE: # %bb.0: # %entry315; CHECK-LE-NEXT: extsb r3, r3316; CHECK-LE-NEXT: cmpwi r3, 1317; CHECK-LE-NEXT: setbc r3, gt318; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1319; CHECK-LE-NEXT: blr320;321; CHECK-BE-LABEL: setbc21:322; CHECK-BE: # %bb.0: # %entry323; CHECK-BE-NEXT: extsb r3, r3324; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha325; CHECK-BE-NEXT: cmpwi r3, 1326; CHECK-BE-NEXT: setbc r3, gt327; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)328; CHECK-BE-NEXT: blr329entry:330 %cmp = icmp sgt i8 %a, 1331 %conv1 = zext i1 %cmp to i8332 store i8 %conv1, ptr @globalVal, align 1333 ret void334}335 336define dso_local void @setbc22(i32 %a) {337; CHECK-LE-LABEL: setbc22:338; CHECK-LE: # %bb.0: # %entry339; CHECK-LE-NEXT: cmpwi r3, 1340; CHECK-LE-NEXT: setbc r3, gt341; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1342; CHECK-LE-NEXT: blr343;344; CHECK-BE-LABEL: setbc22:345; CHECK-BE: # %bb.0: # %entry346; CHECK-BE-NEXT: cmpwi r3, 1347; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha348; CHECK-BE-NEXT: setbc r3, gt349; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)350; CHECK-BE-NEXT: blr351entry:352 %cmp = icmp sgt i32 %a, 1353 %conv1 = zext i1 %cmp to i32354 store i32 %conv1, ptr @globalVal2, align 4355 ret void356}357 358define dso_local void @setbc23(i64 %a) {359; CHECK-LE-LABEL: setbc23:360; CHECK-LE: # %bb.0: # %entry361; CHECK-LE-NEXT: cmpdi r3, 1362; CHECK-LE-NEXT: setbc r3, gt363; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1364; CHECK-LE-NEXT: blr365;366; CHECK-BE-LABEL: setbc23:367; CHECK-BE: # %bb.0: # %entry368; CHECK-BE-NEXT: cmpdi r3, 1369; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha370; CHECK-BE-NEXT: setbc r3, gt371; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)372; CHECK-BE-NEXT: blr373entry:374 %cmp = icmp sgt i64 %a, 1375 %conv1 = zext i1 %cmp to i64376 store i64 %conv1, ptr @globalVal3, align 8377 ret void378}379 380define dso_local void @setbc24(i16 %a) {381; CHECK-LE-LABEL: setbc24:382; CHECK-LE: # %bb.0: # %entry383; CHECK-LE-NEXT: extsh r3, r3384; CHECK-LE-NEXT: cmpwi r3, 1385; CHECK-LE-NEXT: setbc r3, gt386; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1387; CHECK-LE-NEXT: blr388;389; CHECK-BE-LABEL: setbc24:390; CHECK-BE: # %bb.0: # %entry391; CHECK-BE-NEXT: extsh r3, r3392; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha393; CHECK-BE-NEXT: cmpwi r3, 1394; CHECK-BE-NEXT: setbc r3, gt395; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)396; CHECK-BE-NEXT: blr397entry:398 %cmp = icmp sgt i16 %a, 1399 %conv1 = zext i1 %cmp to i16400 store i16 %conv1, ptr @globalVal4, align 2401 ret void402}403 404define dso_local signext i32 @setbc25(i8 %a) {405; CHECK-LABEL: setbc25:406; CHECK: # %bb.0: # %entry407; CHECK-NEXT: clrlwi r3, r3, 24408; CHECK-NEXT: cmpwi r3, 1409; CHECK-NEXT: setbc r3, eq410; CHECK-NEXT: blr411entry:412 %cmp = icmp eq i8 %a, 1413 %conv = zext i1 %cmp to i32414 ret i32 %conv415}416 417define dso_local signext i32 @setbc26(i32 %a) {418; CHECK-LABEL: setbc26:419; CHECK: # %bb.0: # %entry420; CHECK-NEXT: cmpwi r3, 1421; CHECK-NEXT: setbc r3, eq422; CHECK-NEXT: blr423entry:424 %cmp = icmp eq i32 %a, 1425 %conv = zext i1 %cmp to i32426 ret i32 %conv427}428 429define dso_local signext i32 @setbc27(i64 %a) {430; CHECK-LABEL: setbc27:431; CHECK: # %bb.0: # %entry432; CHECK-NEXT: cmpdi r3, 1433; CHECK-NEXT: setbc r3, eq434; CHECK-NEXT: blr435entry:436 %cmp = icmp eq i64 %a, 1437 %conv = zext i1 %cmp to i32438 ret i32 %conv439}440 441define dso_local signext i32 @setbc28(i16 %a) {442; CHECK-LABEL: setbc28:443; CHECK: # %bb.0: # %entry444; CHECK-NEXT: clrlwi r3, r3, 16445; CHECK-NEXT: cmpwi r3, 1446; CHECK-NEXT: setbc r3, eq447; CHECK-NEXT: blr448entry:449 %cmp = icmp eq i16 %a, 1450 %conv = zext i1 %cmp to i32451 ret i32 %conv452}453 454define signext i64 @setbc29(i8 %a) {455; CHECK-LABEL: setbc29:456; CHECK: # %bb.0: # %entry457; CHECK-NEXT: clrlwi r3, r3, 24458; CHECK-NEXT: cmpwi r3, 1459; CHECK-NEXT: setbc r3, eq460; CHECK-NEXT: blr461entry:462 %cmp = icmp eq i8 %a, 1463 %conv = zext i1 %cmp to i64464 ret i64 %conv465}466 467define signext i64 @setbc30(i32 %a) {468; CHECK-LABEL: setbc30:469; CHECK: # %bb.0: # %entry470; CHECK-NEXT: cmpwi r3, 1471; CHECK-NEXT: setbc r3, eq472; CHECK-NEXT: blr473entry:474 %cmp = icmp eq i32 %a, 1475 %conv = zext i1 %cmp to i64476 ret i64 %conv477}478 479define signext i64 @setbc31(i64 %a) {480; CHECK-LABEL: setbc31:481; CHECK: # %bb.0: # %entry482; CHECK-NEXT: cmpdi r3, 1483; CHECK-NEXT: setbc r3, eq484; CHECK-NEXT: blr485entry:486 %cmp = icmp eq i64 %a, 1487 %conv = zext i1 %cmp to i64488 ret i64 %conv489}490 491define signext i64 @setbc32(i16 %a) {492; CHECK-LABEL: setbc32:493; CHECK: # %bb.0: # %entry494; CHECK-NEXT: clrlwi r3, r3, 16495; CHECK-NEXT: cmpwi r3, 1496; CHECK-NEXT: setbc r3, eq497; CHECK-NEXT: blr498entry:499 %cmp = icmp eq i16 %a, 1500 %conv = zext i1 %cmp to i64501 ret i64 %conv502}503 504define dso_local void @setbc33(i8 %a) {505; CHECK-LE-LABEL: setbc33:506; CHECK-LE: # %bb.0: # %entry507; CHECK-LE-NEXT: clrlwi r3, r3, 24508; CHECK-LE-NEXT: cmpwi r3, 1509; CHECK-LE-NEXT: setbc r3, eq510; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1511; CHECK-LE-NEXT: blr512;513; CHECK-BE-LABEL: setbc33:514; CHECK-BE: # %bb.0: # %entry515; CHECK-BE-NEXT: clrlwi r3, r3, 24516; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha517; CHECK-BE-NEXT: cmpwi r3, 1518; CHECK-BE-NEXT: setbc r3, eq519; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)520; CHECK-BE-NEXT: blr521entry:522 %cmp = icmp eq i8 %a, 1523 %conv1 = zext i1 %cmp to i8524 store i8 %conv1, ptr @globalVal, align 1525 ret void526}527 528define dso_local void @setbc34(i32 %a) {529; CHECK-LE-LABEL: setbc34:530; CHECK-LE: # %bb.0: # %entry531; CHECK-LE-NEXT: cmpwi r3, 1532; CHECK-LE-NEXT: setbc r3, eq533; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1534; CHECK-LE-NEXT: blr535;536; CHECK-BE-LABEL: setbc34:537; CHECK-BE: # %bb.0: # %entry538; CHECK-BE-NEXT: cmpwi r3, 1539; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha540; CHECK-BE-NEXT: setbc r3, eq541; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)542; CHECK-BE-NEXT: blr543entry:544 %cmp = icmp eq i32 %a, 1545 %conv1 = zext i1 %cmp to i32546 store i32 %conv1, ptr @globalVal2, align 4547 ret void548}549 550define dso_local void @setbc35(i64 %a) {551; CHECK-LE-LABEL: setbc35:552; CHECK-LE: # %bb.0: # %entry553; CHECK-LE-NEXT: cmpdi r3, 1554; CHECK-LE-NEXT: setbc r3, eq555; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1556; CHECK-LE-NEXT: blr557;558; CHECK-BE-LABEL: setbc35:559; CHECK-BE: # %bb.0: # %entry560; CHECK-BE-NEXT: cmpdi r3, 1561; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha562; CHECK-BE-NEXT: setbc r3, eq563; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)564; CHECK-BE-NEXT: blr565entry:566 %cmp = icmp eq i64 %a, 1567 %conv1 = zext i1 %cmp to i64568 store i64 %conv1, ptr @globalVal3, align 8569 ret void570}571 572define dso_local void @setbc36(i16 %a) {573; CHECK-LE-LABEL: setbc36:574; CHECK-LE: # %bb.0: # %entry575; CHECK-LE-NEXT: clrlwi r3, r3, 16576; CHECK-LE-NEXT: cmpwi r3, 1577; CHECK-LE-NEXT: setbc r3, eq578; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1579; CHECK-LE-NEXT: blr580;581; CHECK-BE-LABEL: setbc36:582; CHECK-BE: # %bb.0: # %entry583; CHECK-BE-NEXT: clrlwi r3, r3, 16584; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha585; CHECK-BE-NEXT: cmpwi r3, 1586; CHECK-BE-NEXT: setbc r3, eq587; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)588; CHECK-BE-NEXT: blr589entry:590 %cmp = icmp eq i16 %a, 1591 %conv1 = zext i1 %cmp to i16592 store i16 %conv1, ptr @globalVal4, align 2593 ret void594}595 596define dso_local signext i32 @setbc37(i64 %a) {597; CHECK-LABEL: setbc37:598; CHECK: # %bb.0: # %entry599; CHECK-NEXT: cmpldi r3, 1600; CHECK-NEXT: setbc r3, gt601; CHECK-NEXT: blr602entry:603 %cmp = icmp ugt i64 %a, 1604 %conv = zext i1 %cmp to i32605 ret i32 %conv606}607 608define signext i64 @setbc38(i64 %a) {609; CHECK-LABEL: setbc38:610; CHECK: # %bb.0: # %entry611; CHECK-NEXT: cmpldi r3, 1612; CHECK-NEXT: setbc r3, gt613; CHECK-NEXT: blr614entry:615 %cmp = icmp ugt i64 %a, 1616 %conv = zext i1 %cmp to i64617 ret i64 %conv618}619 620define dso_local void @setbc39(i64 %a) {621; CHECK-LE-LABEL: setbc39:622; CHECK-LE: # %bb.0: # %entry623; CHECK-LE-NEXT: cmpldi r3, 1624; CHECK-LE-NEXT: setbc r3, gt625; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1626; CHECK-LE-NEXT: blr627;628; CHECK-BE-LABEL: setbc39:629; CHECK-BE: # %bb.0: # %entry630; CHECK-BE-NEXT: cmpldi r3, 1631; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha632; CHECK-BE-NEXT: setbc r3, gt633; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)634; CHECK-BE-NEXT: blr635entry:636 %cmp = icmp ugt i64 %a, 1637 %conv1 = zext i1 %cmp to i64638 store i64 %conv1, ptr @globalVal3, align 8639 ret void640}641