1082 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 @setnbc1(i8 %a) {21; CHECK-LABEL: setnbc1:22; CHECK: # %bb.0: # %entry23; CHECK-NEXT: extsb r3, r324; CHECK-NEXT: cmpwi r3, 125; CHECK-NEXT: setnbc r3, lt26; CHECK-NEXT: blr27entry:28 %cmp = icmp slt i8 %a, 129 %conv = sext i1 %cmp to i3230 ret i32 %conv31}32 33define dso_local signext i32 @setnbc2(i32 %a) {34; CHECK-LABEL: setnbc2:35; CHECK: # %bb.0: # %entry36; CHECK-NEXT: cmpwi r3, 137; CHECK-NEXT: setnbc r3, lt38; CHECK-NEXT: blr39entry:40 %cmp = icmp slt i32 %a, 141 %conv = sext i1 %cmp to i3242 ret i32 %conv43}44 45define dso_local signext i32 @setnbc3(i64 %a) {46; CHECK-LABEL: setnbc3:47; CHECK: # %bb.0: # %entry48; CHECK-NEXT: cmpdi r3, 149; CHECK-NEXT: setnbc r3, lt50; CHECK-NEXT: blr51entry:52 %cmp = icmp slt i64 %a, 153 %conv = sext i1 %cmp to i3254 ret i32 %conv55}56 57define dso_local signext i32 @setnbc4(i16 %a) {58; CHECK-LABEL: setnbc4:59; CHECK: # %bb.0: # %entry60; CHECK-NEXT: extsh r3, r361; CHECK-NEXT: cmpwi r3, 162; CHECK-NEXT: setnbc r3, lt63; CHECK-NEXT: blr64entry:65 %cmp = icmp slt i16 %a, 166 %conv = sext i1 %cmp to i3267 ret i32 %conv68}69 70define signext i64 @setnbc5(i8 %a) {71; CHECK-LABEL: setnbc5:72; CHECK: # %bb.0: # %entry73; CHECK-NEXT: extsb r3, r374; CHECK-NEXT: cmpwi r3, 175; CHECK-NEXT: setnbc r3, lt76; CHECK-NEXT: blr77entry:78 %cmp = icmp slt i8 %a, 179 %conv = sext i1 %cmp to i6480 ret i64 %conv81}82 83define signext i64 @setnbc6(i32 %a) {84; CHECK-LABEL: setnbc6:85; CHECK: # %bb.0: # %entry86; CHECK-NEXT: cmpwi r3, 187; CHECK-NEXT: setnbc r3, lt88; CHECK-NEXT: blr89entry:90 %cmp = icmp slt i32 %a, 191 %conv = sext i1 %cmp to i6492 ret i64 %conv93}94 95define signext i64 @setnbc7(i64 %a) {96; CHECK-LABEL: setnbc7:97; CHECK: # %bb.0: # %entry98; CHECK-NEXT: cmpdi r3, 199; CHECK-NEXT: setnbc r3, lt100; CHECK-NEXT: blr101entry:102 %cmp = icmp slt i64 %a, 1103 %conv = sext i1 %cmp to i64104 ret i64 %conv105}106 107define signext i64 @setnbc8(i16 %a) {108; CHECK-LABEL: setnbc8:109; CHECK: # %bb.0: # %entry110; CHECK-NEXT: extsh r3, r3111; CHECK-NEXT: cmpwi r3, 1112; CHECK-NEXT: setnbc r3, lt113; CHECK-NEXT: blr114entry:115 %cmp = icmp slt i16 %a, 1116 %conv = sext i1 %cmp to i64117 ret i64 %conv118}119 120define dso_local void @setnbc9(i8 %a) {121; CHECK-LE-LABEL: setnbc9:122; CHECK-LE: # %bb.0: # %entry123; CHECK-LE-NEXT: extsb r3, r3124; CHECK-LE-NEXT: cmpwi r3, 1125; CHECK-LE-NEXT: setnbc r3, lt126; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1127; CHECK-LE-NEXT: blr128;129; CHECK-BE-LABEL: setnbc9: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: setnbc r3, lt135; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)136; CHECK-BE-NEXT: blr137entry:138 %cmp = icmp slt i8 %a, 1139 %conv1 = sext i1 %cmp to i8140 store i8 %conv1, ptr @globalVal, align 1141 ret void142}143 144define dso_local void @setnbc10(i32 %a) {145; CHECK-LE-LABEL: setnbc10:146; CHECK-LE: # %bb.0: # %entry147; CHECK-LE-NEXT: cmpwi r3, 1148; CHECK-LE-NEXT: setnbc r3, lt149; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1150; CHECK-LE-NEXT: blr151;152; CHECK-BE-LABEL: setnbc10:153; CHECK-BE: # %bb.0: # %entry154; CHECK-BE-NEXT: cmpwi r3, 1155; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha156; CHECK-BE-NEXT: setnbc r3, lt157; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)158; CHECK-BE-NEXT: blr159entry:160 %cmp = icmp slt i32 %a, 1161 %conv1 = sext i1 %cmp to i32162 store i32 %conv1, ptr @globalVal2, align 4163 ret void164}165 166define dso_local void @setnbc11(i64 %a) {167; CHECK-LE-LABEL: setnbc11:168; CHECK-LE: # %bb.0: # %entry169; CHECK-LE-NEXT: cmpdi r3, 1170; CHECK-LE-NEXT: setnbc r3, lt171; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1172; CHECK-LE-NEXT: blr173;174; CHECK-BE-LABEL: setnbc11:175; CHECK-BE: # %bb.0: # %entry176; CHECK-BE-NEXT: cmpdi r3, 1177; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha178; CHECK-BE-NEXT: setnbc r3, lt179; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)180; CHECK-BE-NEXT: blr181entry:182 %cmp = icmp slt i64 %a, 1183 %conv1 = sext i1 %cmp to i64184 store i64 %conv1, ptr @globalVal3, align 8185 ret void186}187 188define dso_local void @setnbc12(i16 %a) {189; CHECK-LE-LABEL: setnbc12:190; CHECK-LE: # %bb.0: # %entry191; CHECK-LE-NEXT: extsh r3, r3192; CHECK-LE-NEXT: cmpwi r3, 1193; CHECK-LE-NEXT: setnbc r3, lt194; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1195; CHECK-LE-NEXT: blr196;197; CHECK-BE-LABEL: setnbc12: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: setnbc r3, lt203; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)204; CHECK-BE-NEXT: blr205entry:206 %cmp = icmp slt i16 %a, 1207 %conv1 = sext i1 %cmp to i16208 store i16 %conv1, ptr @globalVal4, align 2209 ret void210}211 212define dso_local signext i32 @setnbc13(i8 %a) {213; CHECK-LABEL: setnbc13:214; CHECK: # %bb.0: # %entry215; CHECK-NEXT: extsb r3, r3216; CHECK-NEXT: cmpwi r3, 1217; CHECK-NEXT: setnbc r3, gt218; CHECK-NEXT: blr219entry:220 %cmp = icmp sgt i8 %a, 1221 %conv = sext i1 %cmp to i32222 ret i32 %conv223}224 225define dso_local signext i32 @setnbc14(i32 %a) {226; CHECK-LABEL: setnbc14:227; CHECK: # %bb.0: # %entry228; CHECK-NEXT: cmpwi r3, 1229; CHECK-NEXT: setnbc r3, gt230; CHECK-NEXT: blr231entry:232 %cmp = icmp sgt i32 %a, 1233 %conv = sext i1 %cmp to i32234 ret i32 %conv235}236 237define dso_local signext i32 @setnbc15(i64 %a) {238; CHECK-LABEL: setnbc15:239; CHECK: # %bb.0: # %entry240; CHECK-NEXT: cmpdi r3, 1241; CHECK-NEXT: setnbc r3, gt242; CHECK-NEXT: blr243entry:244 %cmp = icmp sgt i64 %a, 1245 %conv = sext i1 %cmp to i32246 ret i32 %conv247}248 249define dso_local signext i32 @setnbc16(i16 %a) {250; CHECK-LABEL: setnbc16:251; CHECK: # %bb.0: # %entry252; CHECK-NEXT: extsh r3, r3253; CHECK-NEXT: cmpwi r3, 1254; CHECK-NEXT: setnbc r3, gt255; CHECK-NEXT: blr256entry:257 %cmp = icmp sgt i16 %a, 1258 %conv = sext i1 %cmp to i32259 ret i32 %conv260}261 262define signext i64 @setnbc17(i8 %a) {263; CHECK-LABEL: setnbc17:264; CHECK: # %bb.0: # %entry265; CHECK-NEXT: extsb r3, r3266; CHECK-NEXT: cmpwi r3, 1267; CHECK-NEXT: setnbc r3, gt268; CHECK-NEXT: blr269entry:270 %cmp = icmp sgt i8 %a, 1271 %conv = sext i1 %cmp to i64272 ret i64 %conv273}274 275define signext i64 @setnbc18(i32 %a) {276; CHECK-LABEL: setnbc18:277; CHECK: # %bb.0: # %entry278; CHECK-NEXT: cmpwi r3, 1279; CHECK-NEXT: setnbc r3, gt280; CHECK-NEXT: blr281entry:282 %cmp = icmp sgt i32 %a, 1283 %conv = sext i1 %cmp to i64284 ret i64 %conv285}286 287define signext i64 @setnbc19(i64 %a) {288; CHECK-LABEL: setnbc19:289; CHECK: # %bb.0: # %entry290; CHECK-NEXT: cmpdi r3, 1291; CHECK-NEXT: setnbc r3, gt292; CHECK-NEXT: blr293entry:294 %cmp = icmp sgt i64 %a, 1295 %conv = sext i1 %cmp to i64296 ret i64 %conv297}298 299define signext i64 @setnbc20(i16 %a) {300; CHECK-LABEL: setnbc20:301; CHECK: # %bb.0: # %entry302; CHECK-NEXT: extsh r3, r3303; CHECK-NEXT: cmpwi r3, 1304; CHECK-NEXT: setnbc r3, gt305; CHECK-NEXT: blr306entry:307 %cmp = icmp sgt i16 %a, 1308 %conv = sext i1 %cmp to i64309 ret i64 %conv310}311 312define dso_local void @setnbc21(i8 %a) {313; CHECK-LE-LABEL: setnbc21:314; CHECK-LE: # %bb.0: # %entry315; CHECK-LE-NEXT: extsb r3, r3316; CHECK-LE-NEXT: cmpwi r3, 1317; CHECK-LE-NEXT: setnbc r3, gt318; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1319; CHECK-LE-NEXT: blr320;321; CHECK-BE-LABEL: setnbc21: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: setnbc r3, gt327; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)328; CHECK-BE-NEXT: blr329entry:330 %cmp = icmp sgt i8 %a, 1331 %conv1 = sext i1 %cmp to i8332 store i8 %conv1, ptr @globalVal, align 1333 ret void334}335 336define dso_local void @setnbc22(i32 %a) {337; CHECK-LE-LABEL: setnbc22:338; CHECK-LE: # %bb.0: # %entry339; CHECK-LE-NEXT: cmpwi r3, 1340; CHECK-LE-NEXT: setnbc r3, gt341; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1342; CHECK-LE-NEXT: blr343;344; CHECK-BE-LABEL: setnbc22:345; CHECK-BE: # %bb.0: # %entry346; CHECK-BE-NEXT: cmpwi r3, 1347; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha348; CHECK-BE-NEXT: setnbc r3, gt349; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)350; CHECK-BE-NEXT: blr351entry:352 %cmp = icmp sgt i32 %a, 1353 %conv1 = sext i1 %cmp to i32354 store i32 %conv1, ptr @globalVal2, align 4355 ret void356}357 358define dso_local void @setnbc23(i64 %a) {359; CHECK-LE-LABEL: setnbc23:360; CHECK-LE: # %bb.0: # %entry361; CHECK-LE-NEXT: cmpdi r3, 1362; CHECK-LE-NEXT: setnbc r3, gt363; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1364; CHECK-LE-NEXT: blr365;366; CHECK-BE-LABEL: setnbc23:367; CHECK-BE: # %bb.0: # %entry368; CHECK-BE-NEXT: cmpdi r3, 1369; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha370; CHECK-BE-NEXT: setnbc r3, gt371; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)372; CHECK-BE-NEXT: blr373entry:374 %cmp = icmp sgt i64 %a, 1375 %conv1 = sext i1 %cmp to i64376 store i64 %conv1, ptr @globalVal3, align 8377 ret void378}379 380define dso_local void @setnbc24(i16 %a) {381; CHECK-LE-LABEL: setnbc24:382; CHECK-LE: # %bb.0: # %entry383; CHECK-LE-NEXT: extsh r3, r3384; CHECK-LE-NEXT: cmpwi r3, 1385; CHECK-LE-NEXT: setnbc r3, gt386; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1387; CHECK-LE-NEXT: blr388;389; CHECK-BE-LABEL: setnbc24: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: setnbc r3, gt395; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)396; CHECK-BE-NEXT: blr397entry:398 %cmp = icmp sgt i16 %a, 1399 %conv1 = sext i1 %cmp to i16400 store i16 %conv1, ptr @globalVal4, align 2401 ret void402}403 404define dso_local signext i32 @setnbc25(i8 %a) {405; CHECK-LABEL: setnbc25:406; CHECK: # %bb.0: # %entry407; CHECK-NEXT: clrlwi r3, r3, 24408; CHECK-NEXT: cmpwi r3, 1409; CHECK-NEXT: setnbc r3, eq410; CHECK-NEXT: blr411entry:412 %cmp = icmp eq i8 %a, 1413 %conv = sext i1 %cmp to i32414 ret i32 %conv415}416 417define dso_local signext i32 @setnbc26(i32 %a) {418; CHECK-LABEL: setnbc26:419; CHECK: # %bb.0: # %entry420; CHECK-NEXT: cmpwi r3, 1421; CHECK-NEXT: setnbc r3, eq422; CHECK-NEXT: blr423entry:424 %cmp = icmp eq i32 %a, 1425 %conv = sext i1 %cmp to i32426 ret i32 %conv427}428 429define dso_local signext i32 @setnbc27(i64 %a) {430; CHECK-LABEL: setnbc27:431; CHECK: # %bb.0: # %entry432; CHECK-NEXT: cmpdi r3, 1433; CHECK-NEXT: setnbc r3, eq434; CHECK-NEXT: blr435entry:436 %cmp = icmp eq i64 %a, 1437 %conv = sext i1 %cmp to i32438 ret i32 %conv439}440 441define dso_local signext i32 @setnbc28(i16 %a) {442; CHECK-LABEL: setnbc28:443; CHECK: # %bb.0: # %entry444; CHECK-NEXT: clrlwi r3, r3, 16445; CHECK-NEXT: cmpwi r3, 1446; CHECK-NEXT: setnbc r3, eq447; CHECK-NEXT: blr448entry:449 %cmp = icmp eq i16 %a, 1450 %conv = sext i1 %cmp to i32451 ret i32 %conv452}453 454define signext i64 @setnbc29(i8 %a) {455; CHECK-LABEL: setnbc29:456; CHECK: # %bb.0: # %entry457; CHECK-NEXT: clrlwi r3, r3, 24458; CHECK-NEXT: cmpwi r3, 1459; CHECK-NEXT: setnbc r3, eq460; CHECK-NEXT: blr461entry:462 %cmp = icmp eq i8 %a, 1463 %conv = sext i1 %cmp to i64464 ret i64 %conv465}466 467define signext i64 @setnbc30(i32 %a) {468; CHECK-LABEL: setnbc30:469; CHECK: # %bb.0: # %entry470; CHECK-NEXT: cmpwi r3, 1471; CHECK-NEXT: setnbc r3, eq472; CHECK-NEXT: blr473entry:474 %cmp = icmp eq i32 %a, 1475 %conv = sext i1 %cmp to i64476 ret i64 %conv477}478 479define signext i64 @setnbc31(i64 %a) {480; CHECK-LABEL: setnbc31:481; CHECK: # %bb.0: # %entry482; CHECK-NEXT: cmpdi r3, 1483; CHECK-NEXT: setnbc r3, eq484; CHECK-NEXT: blr485entry:486 %cmp = icmp eq i64 %a, 1487 %conv = sext i1 %cmp to i64488 ret i64 %conv489}490 491define signext i64 @setnbc32(i16 %a) {492; CHECK-LABEL: setnbc32:493; CHECK: # %bb.0: # %entry494; CHECK-NEXT: clrlwi r3, r3, 16495; CHECK-NEXT: cmpwi r3, 1496; CHECK-NEXT: setnbc r3, eq497; CHECK-NEXT: blr498entry:499 %cmp = icmp eq i16 %a, 1500 %conv = sext i1 %cmp to i64501 ret i64 %conv502}503 504define dso_local void @setnbc33(i8 %a) {505; CHECK-LE-LABEL: setnbc33:506; CHECK-LE: # %bb.0: # %entry507; CHECK-LE-NEXT: clrlwi r3, r3, 24508; CHECK-LE-NEXT: cmpwi r3, 1509; CHECK-LE-NEXT: setnbc r3, eq510; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1511; CHECK-LE-NEXT: blr512;513; CHECK-BE-LABEL: setnbc33: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: setnbc r3, eq519; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)520; CHECK-BE-NEXT: blr521entry:522 %cmp = icmp eq i8 %a, 1523 %conv1 = sext i1 %cmp to i8524 store i8 %conv1, ptr @globalVal, align 1525 ret void526}527 528define dso_local void @setnbc34(i32 %a) {529; CHECK-LE-LABEL: setnbc34:530; CHECK-LE: # %bb.0: # %entry531; CHECK-LE-NEXT: cmpwi r3, 1532; CHECK-LE-NEXT: setnbc r3, eq533; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1534; CHECK-LE-NEXT: blr535;536; CHECK-BE-LABEL: setnbc34:537; CHECK-BE: # %bb.0: # %entry538; CHECK-BE-NEXT: cmpwi r3, 1539; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha540; CHECK-BE-NEXT: setnbc r3, eq541; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)542; CHECK-BE-NEXT: blr543entry:544 %cmp = icmp eq i32 %a, 1545 %conv1 = sext i1 %cmp to i32546 store i32 %conv1, ptr @globalVal2, align 4547 ret void548}549 550define dso_local void @setnbc35(i64 %a) {551; CHECK-LE-LABEL: setnbc35:552; CHECK-LE: # %bb.0: # %entry553; CHECK-LE-NEXT: cmpdi r3, 1554; CHECK-LE-NEXT: setnbc r3, eq555; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1556; CHECK-LE-NEXT: blr557;558; CHECK-BE-LABEL: setnbc35:559; CHECK-BE: # %bb.0: # %entry560; CHECK-BE-NEXT: cmpdi r3, 1561; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha562; CHECK-BE-NEXT: setnbc r3, eq563; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)564; CHECK-BE-NEXT: blr565entry:566 %cmp = icmp eq i64 %a, 1567 %conv1 = sext i1 %cmp to i64568 store i64 %conv1, ptr @globalVal3, align 8569 ret void570}571 572define dso_local void @setnbc36(i16 %a) {573; CHECK-LE-LABEL: setnbc36:574; CHECK-LE: # %bb.0: # %entry575; CHECK-LE-NEXT: clrlwi r3, r3, 16576; CHECK-LE-NEXT: cmpwi r3, 1577; CHECK-LE-NEXT: setnbc r3, eq578; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1579; CHECK-LE-NEXT: blr580;581; CHECK-BE-LABEL: setnbc36: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: setnbc r3, eq587; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)588; CHECK-BE-NEXT: blr589entry:590 %cmp = icmp eq i16 %a, 1591 %conv1 = sext i1 %cmp to i16592 store i16 %conv1, ptr @globalVal4, align 2593 ret void594}595 596define dso_local signext i32 @setnbc37(i64 %a) {597; CHECK-LABEL: setnbc37:598; CHECK: # %bb.0: # %entry599; CHECK-NEXT: cmpldi r3, 1600; CHECK-NEXT: setnbc r3, gt601; CHECK-NEXT: blr602entry:603 %cmp = icmp ugt i64 %a, 1604 %conv = sext i1 %cmp to i32605 ret i32 %conv606}607 608define signext i64 @setnbc38(i64 %a) {609; CHECK-LABEL: setnbc38:610; CHECK: # %bb.0: # %entry611; CHECK-NEXT: cmpldi r3, 1612; CHECK-NEXT: setnbc r3, gt613; CHECK-NEXT: blr614entry:615 %cmp = icmp ugt i64 %a, 1616 %conv = sext i1 %cmp to i64617 ret i64 %conv618}619 620define dso_local void @setnbc39(i64 %a) {621; CHECK-LE-LABEL: setnbc39:622; CHECK-LE: # %bb.0: # %entry623; CHECK-LE-NEXT: cmpldi r3, 1624; CHECK-LE-NEXT: setnbc r3, gt625; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1626; CHECK-LE-NEXT: blr627;628; CHECK-BE-LABEL: setnbc39:629; CHECK-BE: # %bb.0: # %entry630; CHECK-BE-NEXT: cmpldi r3, 1631; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha632; CHECK-BE-NEXT: setnbc r3, gt633; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)634; CHECK-BE-NEXT: blr635entry:636 %cmp = icmp ugt i64 %a, 1637 %conv1 = sext i1 %cmp to i64638 store i64 %conv1, ptr @globalVal3, align 8639 ret void640}641 642define dso_local signext i32 @setnbc40(i8 %a) {643; CHECK-LABEL: setnbc40:644; CHECK: # %bb.0: # %entry645; CHECK-NEXT: extsb. r3, r3646; CHECK-NEXT: setnbc r3, lt647; CHECK-NEXT: blr648entry:649 %cmp = icmp slt i8 %a, 0650 %conv = sext i1 %cmp to i32651 ret i32 %conv652}653 654define dso_local signext i32 @setnbc41(i32 %a) {655; CHECK-LABEL: setnbc41:656; CHECK: # %bb.0: # %entry657; CHECK-NEXT: cmpwi r3, 0658; CHECK-NEXT: setnbc r3, lt659; CHECK-NEXT: blr660entry:661 %cmp = icmp slt i32 %a, 0662 %conv = sext i1 %cmp to i32663 ret i32 %conv664}665 666define dso_local signext i32 @setnbc42(i16 %a) {667; CHECK-LABEL: setnbc42:668; CHECK: # %bb.0: # %entry669; CHECK-NEXT: extsh. r3, r3670; CHECK-NEXT: setnbc r3, lt671; CHECK-NEXT: blr672entry:673 %cmp = icmp slt i16 %a, 0674 %conv = sext i1 %cmp to i32675 ret i32 %conv676}677 678define signext i64 @setnbc43(i8 %a) {679; CHECK-LABEL: setnbc43:680; CHECK: # %bb.0: # %entry681; CHECK-NEXT: extsb. r3, r3682; CHECK-NEXT: setnbc r3, lt683; CHECK-NEXT: blr684entry:685 %cmp = icmp slt i8 %a, 0686 %conv = sext i1 %cmp to i64687 ret i64 %conv688}689 690define signext i64 @setnbc44(i32 %a) {691; CHECK-LABEL: setnbc44:692; CHECK: # %bb.0: # %entry693; CHECK-NEXT: cmpwi r3, 0694; CHECK-NEXT: setnbc r3, lt695; CHECK-NEXT: blr696entry:697 %cmp = icmp slt i32 %a, 0698 %conv = sext i1 %cmp to i64699 ret i64 %conv700}701 702define signext i64 @setnbc45(i16 %a) {703; CHECK-LABEL: setnbc45:704; CHECK: # %bb.0: # %entry705; CHECK-NEXT: extsh. r3, r3706; CHECK-NEXT: setnbc r3, lt707; CHECK-NEXT: blr708entry:709 %cmp = icmp slt i16 %a, 0710 %conv = sext i1 %cmp to i64711 ret i64 %conv712}713 714define dso_local signext i32 @setnbc46(i8 %a) {715; CHECK-LABEL: setnbc46:716; CHECK: # %bb.0: # %entry717; CHECK-NEXT: extsb. r3, r3718; CHECK-NEXT: setnbc r3, gt719; CHECK-NEXT: blr720entry:721 %cmp = icmp sgt i8 %a, 0722 %conv = sext i1 %cmp to i32723 ret i32 %conv724}725 726define dso_local signext i32 @setnbc47(i32 %a) {727; CHECK-LABEL: setnbc47:728; CHECK: # %bb.0: # %entry729; CHECK-NEXT: cmpwi r3, 0730; CHECK-NEXT: setnbc r3, gt731; CHECK-NEXT: blr732entry:733 %cmp = icmp sgt i32 %a, 0734 %conv = sext i1 %cmp to i32735 ret i32 %conv736}737 738define dso_local signext i32 @setnbc48(i64 %a) {739; CHECK-LABEL: setnbc48:740; CHECK: # %bb.0: # %entry741; CHECK-NEXT: cmpdi r3, 0742; CHECK-NEXT: setnbc r3, gt743; CHECK-NEXT: blr744entry:745 %cmp = icmp sgt i64 %a, 0746 %conv = sext i1 %cmp to i32747 ret i32 %conv748}749 750define dso_local signext i32 @setnbc49(i16 %a) {751; CHECK-LABEL: setnbc49:752; CHECK: # %bb.0: # %entry753; CHECK-NEXT: extsh. r3, r3754; CHECK-NEXT: setnbc r3, gt755; CHECK-NEXT: blr756entry:757 %cmp = icmp sgt i16 %a, 0758 %conv = sext i1 %cmp to i32759 ret i32 %conv760}761 762define signext i64 @setnbc50(i8 %a) {763; CHECK-LABEL: setnbc50:764; CHECK: # %bb.0: # %entry765; CHECK-NEXT: extsb. r3, r3766; CHECK-NEXT: setnbc r3, gt767; CHECK-NEXT: blr768entry:769 %cmp = icmp sgt i8 %a, 0770 %conv = sext i1 %cmp to i64771 ret i64 %conv772}773 774define signext i64 @setnbc51(i32 %a) {775; CHECK-LABEL: setnbc51:776; CHECK: # %bb.0: # %entry777; CHECK-NEXT: cmpwi r3, 0778; CHECK-NEXT: setnbc r3, gt779; CHECK-NEXT: blr780entry:781 %cmp = icmp sgt i32 %a, 0782 %conv = sext i1 %cmp to i64783 ret i64 %conv784}785 786define signext i64 @setnbc52(i64 %a) {787; CHECK-LABEL: setnbc52:788; CHECK: # %bb.0: # %entry789; CHECK-NEXT: cmpdi r3, 0790; CHECK-NEXT: setnbc r3, gt791; CHECK-NEXT: blr792entry:793 %cmp = icmp sgt i64 %a, 0794 %conv = sext i1 %cmp to i64795 ret i64 %conv796}797 798define signext i64 @setnbc53(i16 %a) {799; CHECK-LABEL: setnbc53:800; CHECK: # %bb.0: # %entry801; CHECK-NEXT: extsh. r3, r3802; CHECK-NEXT: setnbc r3, gt803; CHECK-NEXT: blr804entry:805 %cmp = icmp sgt i16 %a, 0806 %conv = sext i1 %cmp to i64807 ret i64 %conv808}809 810define dso_local void @setnbc54(i8 %a) {811; CHECK-LE-LABEL: setnbc54:812; CHECK-LE: # %bb.0: # %entry813; CHECK-LE-NEXT: extsb. r3, r3814; CHECK-LE-NEXT: setnbc r3, gt815; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1816; CHECK-LE-NEXT: blr817;818; CHECK-BE-LABEL: setnbc54:819; CHECK-BE: # %bb.0: # %entry820; CHECK-BE-NEXT: extsb. r3, r3821; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha822; CHECK-BE-NEXT: setnbc r3, gt823; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)824; CHECK-BE-NEXT: blr825entry:826 %cmp = icmp sgt i8 %a, 0827 %conv1 = sext i1 %cmp to i8828 store i8 %conv1, ptr @globalVal, align 1829 ret void830}831 832define dso_local void @setnbc55(i32 %a) {833; CHECK-LE-LABEL: setnbc55:834; CHECK-LE: # %bb.0: # %entry835; CHECK-LE-NEXT: cmpwi r3, 0836; CHECK-LE-NEXT: setnbc r3, gt837; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1838; CHECK-LE-NEXT: blr839;840; CHECK-BE-LABEL: setnbc55:841; CHECK-BE: # %bb.0: # %entry842; CHECK-BE-NEXT: cmpwi r3, 0843; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha844; CHECK-BE-NEXT: setnbc r3, gt845; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)846; CHECK-BE-NEXT: blr847entry:848 %cmp = icmp sgt i32 %a, 0849 %conv1 = sext i1 %cmp to i32850 store i32 %conv1, ptr @globalVal2, align 4851 ret void852}853 854define dso_local void @setnbc56(i64 %a) {855; CHECK-LE-LABEL: setnbc56:856; CHECK-LE: # %bb.0: # %entry857; CHECK-LE-NEXT: cmpdi r3, 0858; CHECK-LE-NEXT: setnbc r3, gt859; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1860; CHECK-LE-NEXT: blr861;862; CHECK-BE-LABEL: setnbc56:863; CHECK-BE: # %bb.0: # %entry864; CHECK-BE-NEXT: cmpdi r3, 0865; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha866; CHECK-BE-NEXT: setnbc r3, gt867; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)868; CHECK-BE-NEXT: blr869entry:870 %cmp = icmp sgt i64 %a, 0871 %conv1 = sext i1 %cmp to i64872 store i64 %conv1, ptr @globalVal3, align 8873 ret void874}875 876define dso_local void @setnbc57(i16 %a) {877; CHECK-LE-LABEL: setnbc57:878; CHECK-LE: # %bb.0: # %entry879; CHECK-LE-NEXT: extsh. r3, r3880; CHECK-LE-NEXT: setnbc r3, gt881; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1882; CHECK-LE-NEXT: blr883;884; CHECK-BE-LABEL: setnbc57:885; CHECK-BE: # %bb.0: # %entry886; CHECK-BE-NEXT: extsh. r3, r3887; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha888; CHECK-BE-NEXT: setnbc r3, gt889; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)890; CHECK-BE-NEXT: blr891entry:892 %cmp = icmp sgt i16 %a, 0893 %conv1 = sext i1 %cmp to i16894 store i16 %conv1, ptr @globalVal4, align 2895 ret void896}897 898define dso_local signext i32 @setnbc58(i8 %a) {899; CHECK-LABEL: setnbc58:900; CHECK: # %bb.0: # %entry901; CHECK-NEXT: andi. r3, r3, 255902; CHECK-NEXT: setnbc r3, eq903; CHECK-NEXT: blr904entry:905 %cmp = icmp eq i8 %a, 0906 %conv = sext i1 %cmp to i32907 ret i32 %conv908}909 910define dso_local signext i32 @setnbc59(i32 %a) {911; CHECK-LABEL: setnbc59:912; CHECK: # %bb.0: # %entry913; CHECK-NEXT: cmpwi r3, 0914; CHECK-NEXT: setnbc r3, eq915; CHECK-NEXT: blr916entry:917 %cmp = icmp eq i32 %a, 0918 %conv = sext i1 %cmp to i32919 ret i32 %conv920}921 922define dso_local signext i32 @setnbc60(i64 %a) {923; CHECK-LABEL: setnbc60:924; CHECK: # %bb.0: # %entry925; CHECK-NEXT: cmpdi r3, 0926; CHECK-NEXT: setnbc r3, eq927; CHECK-NEXT: blr928entry:929 %cmp = icmp eq i64 %a, 0930 %conv = sext i1 %cmp to i32931 ret i32 %conv932}933 934define dso_local signext i32 @setnbc61(i16 %a) {935; CHECK-LABEL: setnbc61:936; CHECK: # %bb.0: # %entry937; CHECK-NEXT: andi. r3, r3, 65535938; CHECK-NEXT: setnbc r3, eq939; CHECK-NEXT: blr940entry:941 %cmp = icmp eq i16 %a, 0942 %conv = sext i1 %cmp to i32943 ret i32 %conv944}945 946define signext i64 @setnbc62(i8 %a) {947; CHECK-LABEL: setnbc62:948; CHECK: # %bb.0: # %entry949; CHECK-NEXT: andi. r3, r3, 255950; CHECK-NEXT: setnbc r3, eq951; CHECK-NEXT: blr952entry:953 %cmp = icmp eq i8 %a, 0954 %conv = sext i1 %cmp to i64955 ret i64 %conv956}957 958define signext i64 @setnbc63(i32 %a) {959; CHECK-LABEL: setnbc63:960; CHECK: # %bb.0: # %entry961; CHECK-NEXT: cmpwi r3, 0962; CHECK-NEXT: setnbc r3, eq963; CHECK-NEXT: blr964entry:965 %cmp = icmp eq i32 %a, 0966 %conv = sext i1 %cmp to i64967 ret i64 %conv968}969 970define signext i64 @setnbc64(i64 %a) {971; CHECK-LABEL: setnbc64:972; CHECK: # %bb.0: # %entry973; CHECK-NEXT: cmpdi r3, 0974; CHECK-NEXT: setnbc r3, eq975; CHECK-NEXT: blr976entry:977 %cmp = icmp eq i64 %a, 0978 %conv = sext i1 %cmp to i64979 ret i64 %conv980}981 982define signext i64 @setnbc65(i16 %a) {983; CHECK-LABEL: setnbc65:984; CHECK: # %bb.0: # %entry985; CHECK-NEXT: andi. r3, r3, 65535986; CHECK-NEXT: setnbc r3, eq987; CHECK-NEXT: blr988entry:989 %cmp = icmp eq i16 %a, 0990 %conv = sext i1 %cmp to i64991 ret i64 %conv992}993 994define dso_local void @setnbc66(i8 %a) {995; CHECK-LE-LABEL: setnbc66:996; CHECK-LE: # %bb.0: # %entry997; CHECK-LE-NEXT: andi. r3, r3, 255998; CHECK-LE-NEXT: setnbc r3, eq999; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 11000; CHECK-LE-NEXT: blr1001;1002; CHECK-BE-LABEL: setnbc66:1003; CHECK-BE: # %bb.0: # %entry1004; CHECK-BE-NEXT: andi. r3, r3, 2551005; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha1006; CHECK-BE-NEXT: setnbc r3, eq1007; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)1008; CHECK-BE-NEXT: blr1009entry:1010 %cmp = icmp eq i8 %a, 01011 %conv1 = sext i1 %cmp to i81012 store i8 %conv1, ptr @globalVal, align 11013 ret void1014}1015 1016define dso_local void @setnbc67(i32 %a) {1017; CHECK-LE-LABEL: setnbc67:1018; CHECK-LE: # %bb.0: # %entry1019; CHECK-LE-NEXT: cmpwi r3, 01020; CHECK-LE-NEXT: setnbc r3, eq1021; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 11022; CHECK-LE-NEXT: blr1023;1024; CHECK-BE-LABEL: setnbc67:1025; CHECK-BE: # %bb.0: # %entry1026; CHECK-BE-NEXT: cmpwi r3, 01027; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha1028; CHECK-BE-NEXT: setnbc r3, eq1029; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)1030; CHECK-BE-NEXT: blr1031entry:1032 %cmp = icmp eq i32 %a, 01033 %conv1 = sext i1 %cmp to i321034 store i32 %conv1, ptr @globalVal2, align 41035 ret void1036}1037 1038define dso_local void @setnbc68(i64 %a) {1039; CHECK-LE-LABEL: setnbc68:1040; CHECK-LE: # %bb.0: # %entry1041; CHECK-LE-NEXT: cmpdi r3, 01042; CHECK-LE-NEXT: setnbc r3, eq1043; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 11044; CHECK-LE-NEXT: blr1045;1046; CHECK-BE-LABEL: setnbc68:1047; CHECK-BE: # %bb.0: # %entry1048; CHECK-BE-NEXT: cmpdi r3, 01049; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha1050; CHECK-BE-NEXT: setnbc r3, eq1051; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)1052; CHECK-BE-NEXT: blr1053entry:1054 %cmp = icmp eq i64 %a, 01055 %conv1 = sext i1 %cmp to i641056 store i64 %conv1, ptr @globalVal3, align 81057 ret void1058}1059 1060define dso_local void @setnbc69(i16 %a) {1061; CHECK-LE-LABEL: setnbc69:1062; CHECK-LE: # %bb.0: # %entry1063; CHECK-LE-NEXT: andi. r3, r3, 655351064; CHECK-LE-NEXT: setnbc r3, eq1065; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 11066; CHECK-LE-NEXT: blr1067;1068; CHECK-BE-LABEL: setnbc69:1069; CHECK-BE: # %bb.0: # %entry1070; CHECK-BE-NEXT: andi. r3, r3, 655351071; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha1072; CHECK-BE-NEXT: setnbc r3, eq1073; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)1074; CHECK-BE-NEXT: blr1075entry:1076 %cmp = icmp eq i16 %a, 01077 %conv1 = sext i1 %cmp to i161078 store i16 %conv1, ptr @globalVal4, align 21079 ret void1080}1081 1082