1416 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 @setnbcr1(i32 signext %a, i32 signext %b) {21; CHECK-LABEL: setnbcr1:22; CHECK: # %bb.0: # %entry23; CHECK-NEXT: cmpw r3, r424; CHECK-NEXT: setnbcr r3, lt25; CHECK-NEXT: blr26entry:27 %cmp = icmp sge i32 %a, %b28 %lnot.ext = sext i1 %cmp to i3229 ret i32 %lnot.ext30}31 32define dso_local signext i32 @setnbcr2(i32 signext %a, i32 signext %b) {33; CHECK-LABEL: setnbcr2:34; CHECK: # %bb.0: # %entry35; CHECK-NEXT: cmpw r3, r436; CHECK-NEXT: setnbcr r3, gt37; CHECK-NEXT: blr38entry:39 %cmp = icmp sle i32 %a, %b40 %lnot.ext = sext i1 %cmp to i3241 ret i32 %lnot.ext42}43 44define dso_local signext i32 @setnbcr3(i32 signext %a, i32 signext %b) {45; CHECK-LABEL: setnbcr3:46; CHECK: # %bb.0: # %entry47; CHECK-NEXT: cmpw r3, r448; CHECK-NEXT: setnbcr r3, eq49; CHECK-NEXT: blr50entry:51 %cmp = icmp ne i32 %a, %b52 %lnot.ext = sext i1 %cmp to i3253 ret i32 %lnot.ext54}55 56define dso_local signext i32 @setnbcr4(i8 signext %a, i8 signext %b) {57; CHECK-LABEL: setnbcr4:58; CHECK: # %bb.0: # %entry59; CHECK-NEXT: cmpw r3, r460; CHECK-NEXT: setnbcr r3, lt61; CHECK-NEXT: blr62entry:63 %cmp = icmp sge i8 %a, %b64 %conv = sext i1 %cmp to i3265 ret i32 %conv66}67 68define dso_local void @setnbcr5(i8 signext %a, i8 signext %b) {69; CHECK-LE-LABEL: setnbcr5:70; CHECK-LE: # %bb.0: # %entry71; CHECK-LE-NEXT: cmpw r3, r472; CHECK-LE-NEXT: setnbcr r3, lt73; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 174; CHECK-LE-NEXT: blr75;76; CHECK-BE-LABEL: setnbcr5:77; CHECK-BE: # %bb.0: # %entry78; CHECK-BE-NEXT: cmpw r3, r479; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha80; CHECK-BE-NEXT: setnbcr r3, lt81; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)82; CHECK-BE-NEXT: blr83entry:84 %cmp = icmp sge i8 %a, %b85 %conv3 = sext i1 %cmp to i886 store i8 %conv3, ptr @globalVal, align 187 ret void88}89 90define dso_local void @setnbcr6(i32 signext %a, i32 signext %b) {91; CHECK-LE-LABEL: setnbcr6:92; CHECK-LE: # %bb.0: # %entry93; CHECK-LE-NEXT: cmpw r3, r494; CHECK-LE-NEXT: setnbcr r3, lt95; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 196; CHECK-LE-NEXT: blr97;98; CHECK-BE-LABEL: setnbcr6:99; CHECK-BE: # %bb.0: # %entry100; CHECK-BE-NEXT: cmpw r3, r4101; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha102; CHECK-BE-NEXT: setnbcr r3, lt103; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)104; CHECK-BE-NEXT: blr105entry:106 %cmp = icmp sge i32 %a, %b107 %sub = sext i1 %cmp to i32108 store i32 %sub, ptr @globalVal2, align 4109 ret void110}111 112define dso_local signext i32 @setnbcr7(i64 %a, i64 %b) {113; CHECK-LABEL: setnbcr7:114; CHECK: # %bb.0: # %entry115; CHECK-NEXT: cmpd r3, r4116; CHECK-NEXT: setnbcr r3, lt117; CHECK-NEXT: blr118entry:119 %cmp = icmp sge i64 %a, %b120 %conv = sext i1 %cmp to i32121 ret i32 %conv122}123 124define signext i64 @setnbcr8(i64 %a, i64 %b) {125; CHECK-LABEL: setnbcr8:126; CHECK: # %bb.0: # %entry127; CHECK-NEXT: cmpd r3, r4128; CHECK-NEXT: setnbcr r3, lt129; CHECK-NEXT: blr130entry:131 %cmp = icmp sge i64 %a, %b132 %conv = sext i1 %cmp to i64133 ret i64 %conv134}135 136define dso_local void @setnbcr9(i64 %a, i64 %b) {137; CHECK-LE-LABEL: setnbcr9:138; CHECK-LE: # %bb.0: # %entry139; CHECK-LE-NEXT: cmpd r3, r4140; CHECK-LE-NEXT: setnbcr r3, lt141; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1142; CHECK-LE-NEXT: blr143;144; CHECK-BE-LABEL: setnbcr9:145; CHECK-BE: # %bb.0: # %entry146; CHECK-BE-NEXT: cmpd r3, r4147; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha148; CHECK-BE-NEXT: setnbcr r3, lt149; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)150; CHECK-BE-NEXT: blr151entry:152 %cmp = icmp sge i64 %a, %b153 %conv1 = sext i1 %cmp to i64154 store i64 %conv1, ptr @globalVal3, align 8155 ret void156}157 158define dso_local signext i32 @setnbcr10(i16 signext %a, i16 signext %b) {159; CHECK-LABEL: setnbcr10:160; CHECK: # %bb.0: # %entry161; CHECK-NEXT: cmpw r3, r4162; CHECK-NEXT: setnbcr r3, lt163; CHECK-NEXT: blr164entry:165 %cmp = icmp sge i16 %a, %b166 %sub = sext i1 %cmp to i32167 ret i32 %sub168}169 170define dso_local void @setnbcr11(i16 signext %a, i16 signext %b) {171; CHECK-LE-LABEL: setnbcr11:172; CHECK-LE: # %bb.0: # %entry173; CHECK-LE-NEXT: cmpw r3, r4174; CHECK-LE-NEXT: setnbcr r3, lt175; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1176; CHECK-LE-NEXT: blr177;178; CHECK-BE-LABEL: setnbcr11:179; CHECK-BE: # %bb.0: # %entry180; CHECK-BE-NEXT: cmpw r3, r4181; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha182; CHECK-BE-NEXT: setnbcr r3, lt183; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)184; CHECK-BE-NEXT: blr185entry:186 %cmp = icmp sge i16 %a, %b187 %conv3 = sext i1 %cmp to i16188 store i16 %conv3, ptr @globalVal4, align 2189 ret void190}191 192define dso_local signext i32 @setnbcr12(i8 zeroext %a, i8 zeroext %b) {193; CHECK-LABEL: setnbcr12:194; CHECK: # %bb.0: # %entry195; CHECK-NEXT: cmplw r3, r4196; CHECK-NEXT: setnbcr r3, lt197; CHECK-NEXT: blr198entry:199 %cmp = icmp uge i8 %a, %b200 %sub = sext i1 %cmp to i32201 ret i32 %sub202}203 204define dso_local void @setnbcr13(i8 zeroext %a, i8 zeroext %b) {205; CHECK-LE-LABEL: setnbcr13:206; CHECK-LE: # %bb.0: # %entry207; CHECK-LE-NEXT: cmplw r3, r4208; CHECK-LE-NEXT: setnbcr r3, lt209; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1210; CHECK-LE-NEXT: blr211;212; CHECK-BE-LABEL: setnbcr13:213; CHECK-BE: # %bb.0: # %entry214; CHECK-BE-NEXT: cmplw r3, r4215; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha216; CHECK-BE-NEXT: setnbcr r3, lt217; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)218; CHECK-BE-NEXT: blr219entry:220 %cmp = icmp uge i8 %a, %b221 %conv3 = sext i1 %cmp to i8222 store i8 %conv3, ptr @globalVal223 ret void224}225 226define dso_local signext i32 @setnbcr14(i32 zeroext %a, i32 zeroext %b) {227; CHECK-LABEL: setnbcr14:228; CHECK: # %bb.0: # %entry229; CHECK-NEXT: cmplw r3, r4230; CHECK-NEXT: setnbcr r3, lt231; CHECK-NEXT: blr232entry:233 %cmp = icmp uge i32 %a, %b234 %sub = sext i1 %cmp to i32235 ret i32 %sub236}237 238define dso_local void @setnbcr15(i32 zeroext %a, i32 zeroext %b) {239; CHECK-LE-LABEL: setnbcr15:240; CHECK-LE: # %bb.0: # %entry241; CHECK-LE-NEXT: cmplw r3, r4242; CHECK-LE-NEXT: setnbcr r3, lt243; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1244; CHECK-LE-NEXT: blr245;246; CHECK-BE-LABEL: setnbcr15:247; CHECK-BE: # %bb.0: # %entry248; CHECK-BE-NEXT: cmplw r3, r4249; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha250; CHECK-BE-NEXT: setnbcr r3, lt251; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)252; CHECK-BE-NEXT: blr253entry:254 %cmp = icmp uge i32 %a, %b255 %sub = sext i1 %cmp to i32256 store i32 %sub, ptr @globalVal2257 ret void258}259 260define dso_local signext i32 @setnbcr16(i64 %a, i64 %b) {261; CHECK-LABEL: setnbcr16:262; CHECK: # %bb.0: # %entry263; CHECK-NEXT: cmpld r3, r4264; CHECK-NEXT: setnbcr r3, lt265; CHECK-NEXT: blr266entry:267 %cmp = icmp uge i64 %a, %b268 %sub = sext i1 %cmp to i32269 ret i32 %sub270}271 272define dso_local void @setnbcr17(i64 %a, i64 %b) {273; CHECK-LE-LABEL: setnbcr17:274; CHECK-LE: # %bb.0: # %entry275; CHECK-LE-NEXT: cmpld r3, r4276; CHECK-LE-NEXT: setnbcr r3, lt277; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1278; CHECK-LE-NEXT: blr279;280; CHECK-BE-LABEL: setnbcr17:281; CHECK-BE: # %bb.0: # %entry282; CHECK-BE-NEXT: cmpld r3, r4283; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha284; CHECK-BE-NEXT: setnbcr r3, lt285; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)286; CHECK-BE-NEXT: blr287entry:288 %cmp = icmp uge i64 %a, %b289 %conv1 = sext i1 %cmp to i64290 store i64 %conv1, ptr @globalVal3291 ret void292}293 294define dso_local signext i32 @setnbcr18(i16 zeroext %a, i16 zeroext %b) {295; CHECK-LABEL: setnbcr18:296; CHECK: # %bb.0: # %entry297; CHECK-NEXT: cmplw r3, r4298; CHECK-NEXT: setnbcr r3, lt299; CHECK-NEXT: blr300entry:301 %cmp = icmp uge i16 %a, %b302 %sub = sext i1 %cmp to i32303 ret i32 %sub304}305 306define dso_local void @setnbcr19(i16 zeroext %a, i16 zeroext %b) {307; CHECK-LE-LABEL: setnbcr19:308; CHECK-LE: # %bb.0: # %entry309; CHECK-LE-NEXT: cmplw r3, r4310; CHECK-LE-NEXT: setnbcr r3, lt311; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1312; CHECK-LE-NEXT: blr313;314; CHECK-BE-LABEL: setnbcr19:315; CHECK-BE: # %bb.0: # %entry316; CHECK-BE-NEXT: cmplw r3, r4317; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha318; CHECK-BE-NEXT: setnbcr r3, lt319; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)320; CHECK-BE-NEXT: blr321entry:322 %cmp = icmp uge i16 %a, %b323 %conv3 = sext i1 %cmp to i16324 store i16 %conv3, ptr @globalVal4325 ret void326}327 328define dso_local signext i32 @setnbcr20(i8 signext %a, i8 signext %b) {329; CHECK-LABEL: setnbcr20:330; CHECK: # %bb.0: # %entry331; CHECK-NEXT: cmpw r3, r4332; CHECK-NEXT: setnbcr r3, gt333; CHECK-NEXT: blr334entry:335 %cmp = icmp sle i8 %a, %b336 %sub = sext i1 %cmp to i32337 ret i32 %sub338}339 340define dso_local void @setnbcr21(i8 signext %a, i8 signext %b) {341; CHECK-LE-LABEL: setnbcr21:342; CHECK-LE: # %bb.0: # %entry343; CHECK-LE-NEXT: cmpw r3, r4344; CHECK-LE-NEXT: setnbcr r3, gt345; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1346; CHECK-LE-NEXT: blr347;348; CHECK-BE-LABEL: setnbcr21:349; CHECK-BE: # %bb.0: # %entry350; CHECK-BE-NEXT: cmpw r3, r4351; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha352; CHECK-BE-NEXT: setnbcr r3, gt353; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)354; CHECK-BE-NEXT: blr355entry:356 %cmp = icmp sle i8 %a, %b357 %conv3 = sext i1 %cmp to i8358 store i8 %conv3, ptr @globalVal, align 1359 ret void360}361 362define dso_local signext i32 @setnbcr22(i32 signext %a, i32 signext %b) {363; CHECK-LABEL: setnbcr22:364; CHECK: # %bb.0: # %entry365; CHECK-NEXT: cmpw r3, r4366; CHECK-NEXT: setnbcr r3, gt367; CHECK-NEXT: blr368entry:369 %cmp = icmp sle i32 %a, %b370 %sub = sext i1 %cmp to i32371 ret i32 %sub372}373 374define dso_local void @setnbcr23(i32 signext %a, i32 signext %b) {375; CHECK-LE-LABEL: setnbcr23:376; CHECK-LE: # %bb.0: # %entry377; CHECK-LE-NEXT: cmpw r3, r4378; CHECK-LE-NEXT: setnbcr r3, gt379; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1380; CHECK-LE-NEXT: blr381;382; CHECK-BE-LABEL: setnbcr23:383; CHECK-BE: # %bb.0: # %entry384; CHECK-BE-NEXT: cmpw r3, r4385; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha386; CHECK-BE-NEXT: setnbcr r3, gt387; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)388; CHECK-BE-NEXT: blr389entry:390 %cmp = icmp sle i32 %a, %b391 %sub = sext i1 %cmp to i32392 store i32 %sub, ptr @globalVal2, align 4393 ret void394}395 396define dso_local signext i32 @setnbcr24(i64 %a, i64 %b) {397; CHECK-LABEL: setnbcr24:398; CHECK: # %bb.0: # %entry399; CHECK-NEXT: cmpd r3, r4400; CHECK-NEXT: setnbcr r3, gt401; CHECK-NEXT: blr402entry:403 %cmp = icmp sle i64 %a, %b404 %sub = sext i1 %cmp to i32405 ret i32 %sub406}407 408define dso_local void @setnbcr25(i64 %a, i64 %b) {409; CHECK-LE-LABEL: setnbcr25:410; CHECK-LE: # %bb.0: # %entry411; CHECK-LE-NEXT: cmpd r3, r4412; CHECK-LE-NEXT: setnbcr r3, gt413; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1414; CHECK-LE-NEXT: blr415;416; CHECK-BE-LABEL: setnbcr25:417; CHECK-BE: # %bb.0: # %entry418; CHECK-BE-NEXT: cmpd r3, r4419; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha420; CHECK-BE-NEXT: setnbcr r3, gt421; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)422; CHECK-BE-NEXT: blr423entry:424 %cmp = icmp sle i64 %a, %b425 %conv1 = sext i1 %cmp to i64426 store i64 %conv1, ptr @globalVal3, align 8427 ret void428}429 430define dso_local signext i32 @setnbcr26(i16 signext %a, i16 signext %b) {431; CHECK-LABEL: setnbcr26:432; CHECK: # %bb.0: # %entry433; CHECK-NEXT: cmpw r3, r4434; CHECK-NEXT: setnbcr r3, gt435; CHECK-NEXT: blr436entry:437 %cmp = icmp sle i16 %a, %b438 %sub = sext i1 %cmp to i32439 ret i32 %sub440}441 442define dso_local void @setnbcr27(i16 signext %a, i16 signext %b) {443; CHECK-LE-LABEL: setnbcr27:444; CHECK-LE: # %bb.0: # %entry445; CHECK-LE-NEXT: cmpw r3, r4446; CHECK-LE-NEXT: setnbcr r3, gt447; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1448; CHECK-LE-NEXT: blr449;450; CHECK-BE-LABEL: setnbcr27:451; CHECK-BE: # %bb.0: # %entry452; CHECK-BE-NEXT: cmpw r3, r4453; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha454; CHECK-BE-NEXT: setnbcr r3, gt455; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)456; CHECK-BE-NEXT: blr457entry:458 %cmp = icmp sle i16 %a, %b459 %conv3 = sext i1 %cmp to i16460 store i16 %conv3, ptr @globalVal4, align 2461 ret void462}463 464define dso_local signext i32 @setnbcr28(i8 zeroext %a, i8 zeroext %b) {465; CHECK-LABEL: setnbcr28:466; CHECK: # %bb.0: # %entry467; CHECK-NEXT: cmplw r3, r4468; CHECK-NEXT: setnbcr r3, gt469; CHECK-NEXT: blr470entry:471 %cmp = icmp ule i8 %a, %b472 %sub = sext i1 %cmp to i32473 ret i32 %sub474}475 476define dso_local void @setnbcr29(i8 zeroext %a, i8 zeroext %b) {477; CHECK-LE-LABEL: setnbcr29:478; CHECK-LE: # %bb.0: # %entry479; CHECK-LE-NEXT: cmplw r3, r4480; CHECK-LE-NEXT: setnbcr r3, gt481; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1482; CHECK-LE-NEXT: blr483;484; CHECK-BE-LABEL: setnbcr29:485; CHECK-BE: # %bb.0: # %entry486; CHECK-BE-NEXT: cmplw r3, r4487; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha488; CHECK-BE-NEXT: setnbcr r3, gt489; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)490; CHECK-BE-NEXT: blr491entry:492 %cmp = icmp ule i8 %a, %b493 %conv3 = sext i1 %cmp to i8494 store i8 %conv3, ptr @globalVal495 ret void496}497 498define dso_local signext i32 @setnbcr30(i32 zeroext %a, i32 zeroext %b) {499; CHECK-LABEL: setnbcr30:500; CHECK: # %bb.0: # %entry501; CHECK-NEXT: cmplw r3, r4502; CHECK-NEXT: setnbcr r3, gt503; CHECK-NEXT: blr504entry:505 %cmp = icmp ule i32 %a, %b506 %sub = sext i1 %cmp to i32507 ret i32 %sub508}509 510define dso_local void @setnbcr31(i32 zeroext %a, i32 zeroext %b) {511; CHECK-LE-LABEL: setnbcr31:512; CHECK-LE: # %bb.0: # %entry513; CHECK-LE-NEXT: cmplw r3, r4514; CHECK-LE-NEXT: setnbcr r3, gt515; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1516; CHECK-LE-NEXT: blr517;518; CHECK-BE-LABEL: setnbcr31:519; CHECK-BE: # %bb.0: # %entry520; CHECK-BE-NEXT: cmplw r3, r4521; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha522; CHECK-BE-NEXT: setnbcr r3, gt523; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)524; CHECK-BE-NEXT: blr525entry:526 %cmp = icmp ule i32 %a, %b527 %sub = sext i1 %cmp to i32528 store i32 %sub, ptr @globalVal2529 ret void530}531 532define dso_local signext i32 @setnbcr32(i64 %a, i64 %b) {533; CHECK-LABEL: setnbcr32:534; CHECK: # %bb.0: # %entry535; CHECK-NEXT: cmpld r3, r4536; CHECK-NEXT: setnbcr r3, gt537; CHECK-NEXT: blr538entry:539 %cmp = icmp ule i64 %a, %b540 %sub = sext i1 %cmp to i32541 ret i32 %sub542}543 544define dso_local void @setnbcr33(i64 %a, i64 %b) {545; CHECK-LE-LABEL: setnbcr33:546; CHECK-LE: # %bb.0: # %entry547; CHECK-LE-NEXT: cmpld r3, r4548; CHECK-LE-NEXT: setnbcr r3, gt549; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1550; CHECK-LE-NEXT: blr551;552; CHECK-BE-LABEL: setnbcr33:553; CHECK-BE: # %bb.0: # %entry554; CHECK-BE-NEXT: cmpld r3, r4555; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha556; CHECK-BE-NEXT: setnbcr r3, gt557; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)558; CHECK-BE-NEXT: blr559entry:560 %cmp = icmp ule i64 %a, %b561 %conv1 = sext i1 %cmp to i64562 store i64 %conv1, ptr @globalVal3563 ret void564}565 566define dso_local signext i32 @setnbcr34(i16 zeroext %a, i16 zeroext %b) {567; CHECK-LABEL: setnbcr34:568; CHECK: # %bb.0: # %entry569; CHECK-NEXT: cmplw r3, r4570; CHECK-NEXT: setnbcr r3, gt571; CHECK-NEXT: blr572entry:573 %cmp = icmp ule i16 %a, %b574 %sub = sext i1 %cmp to i32575 ret i32 %sub576}577 578define dso_local void @setnbcr35(i16 zeroext %a, i16 zeroext %b) {579; CHECK-LE-LABEL: setnbcr35:580; CHECK-LE: # %bb.0: # %entry581; CHECK-LE-NEXT: cmplw r3, r4582; CHECK-LE-NEXT: setnbcr r3, gt583; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1584; CHECK-LE-NEXT: blr585;586; CHECK-BE-LABEL: setnbcr35:587; CHECK-BE: # %bb.0: # %entry588; CHECK-BE-NEXT: cmplw r3, r4589; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha590; CHECK-BE-NEXT: setnbcr r3, gt591; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)592; CHECK-BE-NEXT: blr593entry:594 %cmp = icmp ule i16 %a, %b595 %conv3 = sext i1 %cmp to i16596 store i16 %conv3, ptr @globalVal4597 ret void598}599 600define dso_local signext i32 @setnbcr36(i8 signext %a, i8 signext %b) {601; CHECK-LABEL: setnbcr36:602; CHECK: # %bb.0: # %entry603; CHECK-NEXT: cmpw r3, r4604; CHECK-NEXT: setnbcr r3, eq605; CHECK-NEXT: blr606entry:607 %cmp = icmp ne i8 %a, %b608 %sub = sext i1 %cmp to i32609 ret i32 %sub610}611 612define dso_local void @setnbcr37(i8 signext %a, i8 signext %b) {613; CHECK-LE-LABEL: setnbcr37:614; CHECK-LE: # %bb.0: # %entry615; CHECK-LE-NEXT: cmpw r3, r4616; CHECK-LE-NEXT: setnbcr r3, eq617; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1618; CHECK-LE-NEXT: blr619;620; CHECK-BE-LABEL: setnbcr37:621; CHECK-BE: # %bb.0: # %entry622; CHECK-BE-NEXT: cmpw r3, r4623; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha624; CHECK-BE-NEXT: setnbcr r3, eq625; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)626; CHECK-BE-NEXT: blr627entry:628 %cmp = icmp ne i8 %a, %b629 %conv3 = sext i1 %cmp to i8630 store i8 %conv3, ptr @globalVal, align 1631 ret void632}633 634define dso_local void @setnbcr38(i32 signext %a, i32 signext %b) {635; CHECK-LE-LABEL: setnbcr38:636; CHECK-LE: # %bb.0: # %entry637; CHECK-LE-NEXT: cmpw r3, r4638; CHECK-LE-NEXT: setnbcr r3, eq639; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1640; CHECK-LE-NEXT: blr641;642; CHECK-BE-LABEL: setnbcr38:643; CHECK-BE: # %bb.0: # %entry644; CHECK-BE-NEXT: cmpw r3, r4645; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha646; CHECK-BE-NEXT: setnbcr r3, eq647; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)648; CHECK-BE-NEXT: blr649entry:650 %cmp = icmp ne i32 %a, %b651 %sub = sext i1 %cmp to i32652 store i32 %sub, ptr @globalVal2, align 4653 ret void654}655 656define dso_local signext i32 @setnbcr39(i64 %a, i64 %b) {657; CHECK-LABEL: setnbcr39:658; CHECK: # %bb.0: # %entry659; CHECK-NEXT: cmpd r3, r4660; CHECK-NEXT: setnbcr r3, eq661; CHECK-NEXT: blr662entry:663 %cmp = icmp ne i64 %a, %b664 %sub = sext i1 %cmp to i32665 ret i32 %sub666}667 668define dso_local void @setnbcr40(i64 %a, i64 %b) {669; CHECK-LE-LABEL: setnbcr40:670; CHECK-LE: # %bb.0: # %entry671; CHECK-LE-NEXT: cmpd r3, r4672; CHECK-LE-NEXT: setnbcr r3, eq673; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1674; CHECK-LE-NEXT: blr675;676; CHECK-BE-LABEL: setnbcr40:677; CHECK-BE: # %bb.0: # %entry678; CHECK-BE-NEXT: cmpd r3, r4679; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha680; CHECK-BE-NEXT: setnbcr r3, eq681; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)682; CHECK-BE-NEXT: blr683entry:684 %cmp = icmp ne i64 %a, %b685 %conv1 = sext i1 %cmp to i64686 store i64 %conv1, ptr @globalVal3, align 8687 ret void688}689 690define dso_local signext i32 @setnbcr41(i16 signext %a, i16 signext %b) {691; CHECK-LABEL: setnbcr41:692; CHECK: # %bb.0: # %entry693; CHECK-NEXT: cmpw r3, r4694; CHECK-NEXT: setnbcr r3, eq695; CHECK-NEXT: blr696entry:697 %cmp = icmp ne i16 %a, %b698 %sub = sext i1 %cmp to i32699 ret i32 %sub700}701 702define dso_local void @setnbcr42(i16 signext %a, i16 signext %b) {703; CHECK-LE-LABEL: setnbcr42:704; CHECK-LE: # %bb.0: # %entry705; CHECK-LE-NEXT: cmpw r3, r4706; CHECK-LE-NEXT: setnbcr r3, eq707; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1708; CHECK-LE-NEXT: blr709;710; CHECK-BE-LABEL: setnbcr42:711; CHECK-BE: # %bb.0: # %entry712; CHECK-BE-NEXT: cmpw r3, r4713; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha714; CHECK-BE-NEXT: setnbcr r3, eq715; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)716; CHECK-BE-NEXT: blr717entry:718 %cmp = icmp ne i16 %a, %b719 %conv3 = sext i1 %cmp to i16720 store i16 %conv3, ptr @globalVal4, align 2721 ret void722}723 724define dso_local signext i32 @setnbcr43(i8 zeroext %a, i8 zeroext %b) {725; CHECK-LABEL: setnbcr43:726; CHECK: # %bb.0: # %entry727; CHECK-NEXT: cmpw r3, r4728; CHECK-NEXT: setnbcr r3, eq729; CHECK-NEXT: blr730entry:731 %cmp = icmp ne i8 %a, %b732 %sub = sext i1 %cmp to i32733 ret i32 %sub734}735 736define dso_local void @sernbcr44(i8 zeroext %a, i8 zeroext %b) {737; CHECK-LE-LABEL: sernbcr44:738; CHECK-LE: # %bb.0: # %entry739; CHECK-LE-NEXT: cmpw r3, r4740; CHECK-LE-NEXT: setnbcr r3, eq741; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1742; CHECK-LE-NEXT: blr743;744; CHECK-BE-LABEL: sernbcr44:745; CHECK-BE: # %bb.0: # %entry746; CHECK-BE-NEXT: cmpw r3, r4747; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha748; CHECK-BE-NEXT: setnbcr r3, eq749; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)750; CHECK-BE-NEXT: blr751entry:752 %cmp = icmp ne i8 %a, %b753 %conv3 = sext i1 %cmp to i8754 store i8 %conv3, ptr @globalVal, align 1755 ret void756}757 758define dso_local signext i32 @setnbcr45(i32 zeroext %a, i32 zeroext %b) {759; CHECK-LABEL: setnbcr45:760; CHECK: # %bb.0: # %entry761; CHECK-NEXT: cmpw r3, r4762; CHECK-NEXT: setnbcr r3, eq763; CHECK-NEXT: blr764entry:765 %cmp = icmp ne i32 %a, %b766 %sub = sext i1 %cmp to i32767 ret i32 %sub768}769 770define dso_local void @setnbcr46(i32 zeroext %a, i32 zeroext %b) {771; CHECK-LE-LABEL: setnbcr46:772; CHECK-LE: # %bb.0: # %entry773; CHECK-LE-NEXT: cmpw r3, r4774; CHECK-LE-NEXT: setnbcr r3, eq775; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1776; CHECK-LE-NEXT: blr777;778; CHECK-BE-LABEL: setnbcr46:779; CHECK-BE: # %bb.0: # %entry780; CHECK-BE-NEXT: cmpw r3, r4781; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha782; CHECK-BE-NEXT: setnbcr r3, eq783; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)784; CHECK-BE-NEXT: blr785entry:786 %cmp = icmp ne i32 %a, %b787 %conv = sext i1 %cmp to i32788 store i32 %conv, ptr @globalVal2, align 4789 ret void790}791 792define dso_local signext i32 @setnbcr47(i16 zeroext %a, i16 zeroext %b) {793; CHECK-LABEL: setnbcr47:794; CHECK: # %bb.0: # %entry795; CHECK-NEXT: cmpw r3, r4796; CHECK-NEXT: setnbcr r3, eq797; CHECK-NEXT: blr798entry:799 %cmp = icmp ne i16 %a, %b800 %sub = sext i1 %cmp to i32801 ret i32 %sub802}803 804define dso_local void @setnbcr48(i16 zeroext %a, i16 zeroext %b) {805; CHECK-LE-LABEL: setnbcr48:806; CHECK-LE: # %bb.0: # %entry807; CHECK-LE-NEXT: cmpw r3, r4808; CHECK-LE-NEXT: setnbcr r3, eq809; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1810; CHECK-LE-NEXT: blr811;812; CHECK-BE-LABEL: setnbcr48:813; CHECK-BE: # %bb.0: # %entry814; CHECK-BE-NEXT: cmpw r3, r4815; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha816; CHECK-BE-NEXT: setnbcr r3, eq817; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)818; CHECK-BE-NEXT: blr819entry:820 %cmp = icmp ne i16 %a, %b821 %conv3 = sext i1 %cmp to i16822 store i16 %conv3, ptr @globalVal4, align 2823 ret void824}825 826define i64 @setnbcr49(i8 signext %a, i8 signext %b) {827; CHECK-LABEL: setnbcr49:828; CHECK: # %bb.0: # %entry829; CHECK-NEXT: cmpw r3, r4830; CHECK-NEXT: setnbcr r3, lt831; CHECK-NEXT: blr832entry:833 %cmp = icmp sge i8 %a, %b834 %conv3 = sext i1 %cmp to i64835 ret i64 %conv3836}837 838define dso_local void @setnbcr50(i8 signext %a, i8 signext %b) {839; CHECK-LE-LABEL: setnbcr50:840; CHECK-LE: # %bb.0: # %entry841; CHECK-LE-NEXT: cmpw r3, r4842; CHECK-LE-NEXT: setnbcr r3, lt843; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1844; CHECK-LE-NEXT: blr845;846; CHECK-BE-LABEL: setnbcr50:847; CHECK-BE: # %bb.0: # %entry848; CHECK-BE-NEXT: cmpw r3, r4849; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha850; CHECK-BE-NEXT: setnbcr r3, lt851; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)852; CHECK-BE-NEXT: blr853entry:854 %cmp = icmp sge i8 %a, %b855 %conv3 = sext i1 %cmp to i8856 store i8 %conv3, ptr @globalVal, align 1857 ret void858}859 860define i64 @setnbcr51(i32 signext %a, i32 signext %b) {861; CHECK-LABEL: setnbcr51:862; CHECK: # %bb.0: # %entry863; CHECK-NEXT: cmpw r3, r4864; CHECK-NEXT: setnbcr r3, lt865; CHECK-NEXT: blr866entry:867 %cmp = icmp sge i32 %a, %b868 %conv1 = sext i1 %cmp to i64869 ret i64 %conv1870}871 872define dso_local void @setnbcr52(i32 signext %a, i32 signext %b) {873; CHECK-LE-LABEL: setnbcr52:874; CHECK-LE: # %bb.0: # %entry875; CHECK-LE-NEXT: cmpw r3, r4876; CHECK-LE-NEXT: setnbcr r3, lt877; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1878; CHECK-LE-NEXT: blr879;880; CHECK-BE-LABEL: setnbcr52:881; CHECK-BE: # %bb.0: # %entry882; CHECK-BE-NEXT: cmpw r3, r4883; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha884; CHECK-BE-NEXT: setnbcr r3, lt885; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)886; CHECK-BE-NEXT: blr887entry:888 %cmp = icmp sge i32 %a, %b889 %sub = sext i1 %cmp to i32890 store i32 %sub, ptr @globalVal2, align 4891 ret void892}893 894define i64 @setnbcr53(i64 %a, i64 %b) {895; CHECK-LABEL: setnbcr53:896; CHECK: # %bb.0: # %entry897; CHECK-NEXT: cmpd r3, r4898; CHECK-NEXT: setnbcr r3, lt899; CHECK-NEXT: blr900entry:901 %cmp = icmp sge i64 %a, %b902 %conv1 = sext i1 %cmp to i64903 ret i64 %conv1904}905 906define dso_local void @setnbcr54(i64 %a, i64 %b) {907; CHECK-LE-LABEL: setnbcr54:908; CHECK-LE: # %bb.0: # %entry909; CHECK-LE-NEXT: cmpd r3, r4910; CHECK-LE-NEXT: setnbcr r3, lt911; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1912; CHECK-LE-NEXT: blr913;914; CHECK-BE-LABEL: setnbcr54:915; CHECK-BE: # %bb.0: # %entry916; CHECK-BE-NEXT: cmpd r3, r4917; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha918; CHECK-BE-NEXT: setnbcr r3, lt919; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)920; CHECK-BE-NEXT: blr921entry:922 %cmp = icmp sge i64 %a, %b923 %conv1 = sext i1 %cmp to i64924 store i64 %conv1, ptr @globalVal3, align 8925 ret void926}927 928define i64 @setnbcr55(i16 signext %a, i16 signext %b) {929; CHECK-LABEL: setnbcr55:930; CHECK: # %bb.0: # %entry931; CHECK-NEXT: cmpw r3, r4932; CHECK-NEXT: setnbcr r3, lt933; CHECK-NEXT: blr934entry:935 %cmp = icmp sge i16 %a, %b936 %conv3 = sext i1 %cmp to i64937 ret i64 %conv3938}939 940define dso_local void @setnbcr56(i16 signext %a, i16 signext %b) {941; CHECK-LE-LABEL: setnbcr56:942; CHECK-LE: # %bb.0: # %entry943; CHECK-LE-NEXT: cmpw r3, r4944; CHECK-LE-NEXT: setnbcr r3, lt945; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1946; CHECK-LE-NEXT: blr947;948; CHECK-BE-LABEL: setnbcr56:949; CHECK-BE: # %bb.0: # %entry950; CHECK-BE-NEXT: cmpw r3, r4951; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha952; CHECK-BE-NEXT: setnbcr r3, lt953; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)954; CHECK-BE-NEXT: blr955entry:956 %cmp = icmp sge i16 %a, %b957 %conv3 = sext i1 %cmp to i16958 store i16 %conv3, ptr @globalVal4, align 2959 ret void960}961 962define i64 @setnbcr57(i8 zeroext %a, i8 zeroext %b) {963; CHECK-LABEL: setnbcr57:964; CHECK: # %bb.0: # %entry965; CHECK-NEXT: cmplw r3, r4966; CHECK-NEXT: setnbcr r3, lt967; CHECK-NEXT: blr968entry:969 %cmp = icmp uge i8 %a, %b970 %conv3 = sext i1 %cmp to i64971 ret i64 %conv3972}973 974define dso_local void @setnbcr58(i8 zeroext %a, i8 zeroext %b) {975; CHECK-LE-LABEL: setnbcr58:976; CHECK-LE: # %bb.0: # %entry977; CHECK-LE-NEXT: cmplw r3, r4978; CHECK-LE-NEXT: setnbcr r3, lt979; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1980; CHECK-LE-NEXT: blr981;982; CHECK-BE-LABEL: setnbcr58:983; CHECK-BE: # %bb.0: # %entry984; CHECK-BE-NEXT: cmplw r3, r4985; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha986; CHECK-BE-NEXT: setnbcr r3, lt987; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)988; CHECK-BE-NEXT: blr989entry:990 %cmp = icmp uge i8 %a, %b991 %conv3 = sext i1 %cmp to i8992 store i8 %conv3, ptr @globalVal993 ret void994}995 996define i64 @setnbcr59(i32 zeroext %a, i32 zeroext %b) {997; CHECK-LABEL: setnbcr59:998; CHECK: # %bb.0: # %entry999; CHECK-NEXT: cmplw r3, r41000; CHECK-NEXT: setnbcr r3, lt1001; CHECK-NEXT: blr1002entry:1003 %cmp = icmp uge i32 %a, %b1004 %conv1 = sext i1 %cmp to i641005 ret i64 %conv11006}1007 1008define dso_local void @setnbcr60(i32 zeroext %a, i32 zeroext %b) {1009; CHECK-LE-LABEL: setnbcr60:1010; CHECK-LE: # %bb.0: # %entry1011; CHECK-LE-NEXT: cmplw r3, r41012; CHECK-LE-NEXT: setnbcr r3, lt1013; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 11014; CHECK-LE-NEXT: blr1015;1016; CHECK-BE-LABEL: setnbcr60:1017; CHECK-BE: # %bb.0: # %entry1018; CHECK-BE-NEXT: cmplw r3, r41019; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha1020; CHECK-BE-NEXT: setnbcr r3, lt1021; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)1022; CHECK-BE-NEXT: blr1023entry:1024 %cmp = icmp uge i32 %a, %b1025 %sub = sext i1 %cmp to i321026 store i32 %sub, ptr @globalVal21027 ret void1028}1029 1030define i64 @setnbcr61(i64 %a, i64 %b) {1031; CHECK-LABEL: setnbcr61:1032; CHECK: # %bb.0: # %entry1033; CHECK-NEXT: cmpld r3, r41034; CHECK-NEXT: setnbcr r3, lt1035; CHECK-NEXT: blr1036entry:1037 %cmp = icmp uge i64 %a, %b1038 %conv1 = sext i1 %cmp to i641039 ret i64 %conv11040}1041 1042define dso_local void @setnbcr62(i64 %a, i64 %b) {1043; CHECK-LE-LABEL: setnbcr62:1044; CHECK-LE: # %bb.0: # %entry1045; CHECK-LE-NEXT: cmpld r3, r41046; CHECK-LE-NEXT: setnbcr r3, lt1047; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 11048; CHECK-LE-NEXT: blr1049;1050; CHECK-BE-LABEL: setnbcr62:1051; CHECK-BE: # %bb.0: # %entry1052; CHECK-BE-NEXT: cmpld r3, r41053; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha1054; CHECK-BE-NEXT: setnbcr r3, lt1055; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)1056; CHECK-BE-NEXT: blr1057entry:1058 %cmp = icmp uge i64 %a, %b1059 %conv1 = sext i1 %cmp to i641060 store i64 %conv1, ptr @globalVal31061 ret void1062}1063 1064define i64 @setnbcr63(i16 zeroext %a, i16 zeroext %b) {1065; CHECK-LABEL: setnbcr63:1066; CHECK: # %bb.0: # %entry1067; CHECK-NEXT: cmplw r3, r41068; CHECK-NEXT: setnbcr r3, lt1069; CHECK-NEXT: blr1070entry:1071 %cmp = icmp uge i16 %a, %b1072 %conv3 = sext i1 %cmp to i641073 ret i64 %conv31074}1075 1076define dso_local void @setnbcr64(i16 zeroext %a, i16 zeroext %b) {1077; CHECK-LE-LABEL: setnbcr64:1078; CHECK-LE: # %bb.0: # %entry1079; CHECK-LE-NEXT: cmplw r3, r41080; CHECK-LE-NEXT: setnbcr r3, lt1081; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 11082; CHECK-LE-NEXT: blr1083;1084; CHECK-BE-LABEL: setnbcr64:1085; CHECK-BE: # %bb.0: # %entry1086; CHECK-BE-NEXT: cmplw r3, r41087; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha1088; CHECK-BE-NEXT: setnbcr r3, lt1089; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)1090; CHECK-BE-NEXT: blr1091entry:1092 %cmp = icmp uge i16 %a, %b1093 %conv3 = sext i1 %cmp to i161094 store i16 %conv3, ptr @globalVal41095 ret void1096}1097 1098define i64 @setnbcr65(i8 signext %a, i8 signext %b) {1099; CHECK-LABEL: setnbcr65:1100; CHECK: # %bb.0: # %entry1101; CHECK-NEXT: cmpw r3, r41102; CHECK-NEXT: setnbcr r3, gt1103; CHECK-NEXT: blr1104entry:1105 %cmp = icmp sle i8 %a, %b1106 %conv3 = sext i1 %cmp to i641107 ret i64 %conv31108}1109 1110define dso_local void @setnbcr66(i8 signext %a, i8 signext %b) {1111; CHECK-LE-LABEL: setnbcr66:1112; CHECK-LE: # %bb.0: # %entry1113; CHECK-LE-NEXT: cmpw r3, r41114; CHECK-LE-NEXT: setnbcr r3, gt1115; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 11116; CHECK-LE-NEXT: blr1117;1118; CHECK-BE-LABEL: setnbcr66:1119; CHECK-BE: # %bb.0: # %entry1120; CHECK-BE-NEXT: cmpw r3, r41121; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha1122; CHECK-BE-NEXT: setnbcr r3, gt1123; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)1124; CHECK-BE-NEXT: blr1125entry:1126 %cmp = icmp sle i8 %a, %b1127 %conv3 = sext i1 %cmp to i81128 store i8 %conv3, ptr @globalVal, align 11129 ret void1130}1131 1132define i64 @setnbcr67(i32 signext %a, i32 signext %b) {1133; CHECK-LABEL: setnbcr67:1134; CHECK: # %bb.0: # %entry1135; CHECK-NEXT: cmpw r3, r41136; CHECK-NEXT: setnbcr r3, gt1137; CHECK-NEXT: blr1138entry:1139 %cmp = icmp sle i32 %a, %b1140 %conv1 = sext i1 %cmp to i641141 ret i64 %conv11142}1143 1144define dso_local void @setnbcr68(i32 signext %a, i32 signext %b) {1145; CHECK-LE-LABEL: setnbcr68:1146; CHECK-LE: # %bb.0: # %entry1147; CHECK-LE-NEXT: cmpw r3, r41148; CHECK-LE-NEXT: setnbcr r3, gt1149; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 11150; CHECK-LE-NEXT: blr1151;1152; CHECK-BE-LABEL: setnbcr68:1153; CHECK-BE: # %bb.0: # %entry1154; CHECK-BE-NEXT: cmpw r3, r41155; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha1156; CHECK-BE-NEXT: setnbcr r3, gt1157; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)1158; CHECK-BE-NEXT: blr1159entry:1160 %cmp = icmp sle i32 %a, %b1161 %sub = sext i1 %cmp to i321162 store i32 %sub, ptr @globalVal2, align 41163 ret void1164}1165 1166define i64 @setnbcr69(i64 %a, i64 %b) {1167; CHECK-LABEL: setnbcr69:1168; CHECK: # %bb.0: # %entry1169; CHECK-NEXT: cmpd r3, r41170; CHECK-NEXT: setnbcr r3, gt1171; CHECK-NEXT: blr1172entry:1173 %cmp = icmp sle i64 %a, %b1174 %conv1 = sext i1 %cmp to i641175 ret i64 %conv11176}1177 1178define dso_local void @setnbcr70(i64 %a, i64 %b) {1179; CHECK-LE-LABEL: setnbcr70:1180; CHECK-LE: # %bb.0: # %entry1181; CHECK-LE-NEXT: cmpd r3, r41182; CHECK-LE-NEXT: setnbcr r3, gt1183; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 11184; CHECK-LE-NEXT: blr1185;1186; CHECK-BE-LABEL: setnbcr70:1187; CHECK-BE: # %bb.0: # %entry1188; CHECK-BE-NEXT: cmpd r3, r41189; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha1190; CHECK-BE-NEXT: setnbcr r3, gt1191; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)1192; CHECK-BE-NEXT: blr1193entry:1194 %cmp = icmp sle i64 %a, %b1195 %conv1 = sext i1 %cmp to i641196 store i64 %conv1, ptr @globalVal3, align 81197 ret void1198}1199 1200define i64 @setnbcr71(i16 signext %a, i16 signext %b) {1201; CHECK-LABEL: setnbcr71:1202; CHECK: # %bb.0: # %entry1203; CHECK-NEXT: cmpw r3, r41204; CHECK-NEXT: setnbcr r3, gt1205; CHECK-NEXT: blr1206entry:1207 %cmp = icmp sle i16 %a, %b1208 %conv3 = sext i1 %cmp to i641209 ret i64 %conv31210}1211 1212define dso_local void @setnbcr72(i16 signext %a, i16 signext %b) {1213; CHECK-LE-LABEL: setnbcr72:1214; CHECK-LE: # %bb.0: # %entry1215; CHECK-LE-NEXT: cmpw r3, r41216; CHECK-LE-NEXT: setnbcr r3, gt1217; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 11218; CHECK-LE-NEXT: blr1219;1220; CHECK-BE-LABEL: setnbcr72:1221; CHECK-BE: # %bb.0: # %entry1222; CHECK-BE-NEXT: cmpw r3, r41223; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha1224; CHECK-BE-NEXT: setnbcr r3, gt1225; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)1226; CHECK-BE-NEXT: blr1227entry:1228 %cmp = icmp sle i16 %a, %b1229 %conv3 = sext i1 %cmp to i161230 store i16 %conv3, ptr @globalVal4, align 21231 ret void1232}1233 1234define i64 @setnbcr73(i8 zeroext %a, i8 zeroext %b) {1235; CHECK-LABEL: setnbcr73:1236; CHECK: # %bb.0: # %entry1237; CHECK-NEXT: cmplw r3, r41238; CHECK-NEXT: setnbcr r3, gt1239; CHECK-NEXT: blr1240entry:1241 %cmp = icmp ule i8 %a, %b1242 %conv3 = sext i1 %cmp to i641243 ret i64 %conv31244}1245 1246define dso_local void @setnbcr74(i8 zeroext %a, i8 zeroext %b) {1247; CHECK-LE-LABEL: setnbcr74:1248; CHECK-LE: # %bb.0: # %entry1249; CHECK-LE-NEXT: cmplw r3, r41250; CHECK-LE-NEXT: setnbcr r3, gt1251; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 11252; CHECK-LE-NEXT: blr1253;1254; CHECK-BE-LABEL: setnbcr74:1255; CHECK-BE: # %bb.0: # %entry1256; CHECK-BE-NEXT: cmplw r3, r41257; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha1258; CHECK-BE-NEXT: setnbcr r3, gt1259; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)1260; CHECK-BE-NEXT: blr1261entry:1262 %cmp = icmp ule i8 %a, %b1263 %conv3 = sext i1 %cmp to i81264 store i8 %conv3, ptr @globalVal1265 ret void1266}1267 1268define i64 @setnbcr75(i32 zeroext %a, i32 zeroext %b) {1269; CHECK-LABEL: setnbcr75:1270; CHECK: # %bb.0: # %entry1271; CHECK-NEXT: cmplw r3, r41272; CHECK-NEXT: setnbcr r3, gt1273; CHECK-NEXT: blr1274entry:1275 %cmp = icmp ule i32 %a, %b1276 %conv1 = sext i1 %cmp to i641277 ret i64 %conv11278}1279 1280define dso_local void @setnbcr76(i32 zeroext %a, i32 zeroext %b) {1281; CHECK-LE-LABEL: setnbcr76:1282; CHECK-LE: # %bb.0: # %entry1283; CHECK-LE-NEXT: cmplw r3, r41284; CHECK-LE-NEXT: setnbcr r3, gt1285; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 11286; CHECK-LE-NEXT: blr1287;1288; CHECK-BE-LABEL: setnbcr76:1289; CHECK-BE: # %bb.0: # %entry1290; CHECK-BE-NEXT: cmplw r3, r41291; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha1292; CHECK-BE-NEXT: setnbcr r3, gt1293; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)1294; CHECK-BE-NEXT: blr1295entry:1296 %cmp = icmp ule i32 %a, %b1297 %sub = sext i1 %cmp to i321298 store i32 %sub, ptr @globalVal21299 ret void1300}1301 1302define i64 @setnbcr77(i64 %a, i64 %b) {1303; CHECK-LABEL: setnbcr77:1304; CHECK: # %bb.0: # %entry1305; CHECK-NEXT: cmpld r3, r41306; CHECK-NEXT: setnbcr r3, gt1307; CHECK-NEXT: blr1308entry:1309 %cmp = icmp ule i64 %a, %b1310 %conv1 = sext i1 %cmp to i641311 ret i64 %conv11312}1313 1314define dso_local void @setnbcr78(i64 %a, i64 %b) {1315; CHECK-LE-LABEL: setnbcr78:1316; CHECK-LE: # %bb.0: # %entry1317; CHECK-LE-NEXT: cmpld r3, r41318; CHECK-LE-NEXT: setnbcr r3, gt1319; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 11320; CHECK-LE-NEXT: blr1321;1322; CHECK-BE-LABEL: setnbcr78:1323; CHECK-BE: # %bb.0: # %entry1324; CHECK-BE-NEXT: cmpld r3, r41325; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha1326; CHECK-BE-NEXT: setnbcr r3, gt1327; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)1328; CHECK-BE-NEXT: blr1329entry:1330 %cmp = icmp ule i64 %a, %b1331 %conv1 = sext i1 %cmp to i641332 store i64 %conv1, ptr @globalVal31333 ret void1334}1335 1336define i64 @setnbcr79(i16 zeroext %a, i16 zeroext %b) {1337; CHECK-LABEL: setnbcr79:1338; CHECK: # %bb.0: # %entry1339; CHECK-NEXT: cmplw r3, r41340; CHECK-NEXT: setnbcr r3, gt1341; CHECK-NEXT: blr1342entry:1343 %cmp = icmp ule i16 %a, %b1344 %conv3 = sext i1 %cmp to i641345 ret i64 %conv31346}1347 1348define dso_local void @setnbcr80(i16 zeroext %a, i16 zeroext %b) {1349; CHECK-LE-LABEL: setnbcr80:1350; CHECK-LE: # %bb.0: # %entry1351; CHECK-LE-NEXT: cmplw r3, r41352; CHECK-LE-NEXT: setnbcr r3, gt1353; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 11354; CHECK-LE-NEXT: blr1355;1356; CHECK-BE-LABEL: setnbcr80:1357; CHECK-BE: # %bb.0: # %entry1358; CHECK-BE-NEXT: cmplw r3, r41359; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha1360; CHECK-BE-NEXT: setnbcr r3, gt1361; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)1362; CHECK-BE-NEXT: blr1363entry:1364 %cmp = icmp ule i16 %a, %b1365 %conv3 = sext i1 %cmp to i161366 store i16 %conv3, ptr @globalVal41367 ret void1368}1369 1370define i64 @setnbcr81(i64 %a, i64 %b) {1371; CHECK-LABEL: setnbcr81:1372; CHECK: # %bb.0: # %entry1373; CHECK-NEXT: cmpd r3, r41374; CHECK-NEXT: setnbcr r3, eq1375; CHECK-NEXT: blr1376entry:1377 %cmp = icmp ne i64 %a, %b1378 %conv1 = sext i1 %cmp to i641379 ret i64 %conv11380}1381 1382define i64 @setnbcr82(i64 %a, i64 %b) {1383; CHECK-LABEL: setnbcr82:1384; CHECK: # %bb.0: # %entry1385; CHECK-NEXT: cmpd r3, r41386; CHECK-NEXT: setnbcr r3, eq1387; CHECK-NEXT: blr1388entry:1389 %cmp = icmp ne i64 %a, %b1390 %conv1 = sext i1 %cmp to i641391 ret i64 %conv11392}1393 1394define dso_local void @setnbcr83(i64 %a, i64 %b) {1395; CHECK-LE-LABEL: setnbcr83:1396; CHECK-LE: # %bb.0: # %entry1397; CHECK-LE-NEXT: cmpd r3, r41398; CHECK-LE-NEXT: setnbcr r3, eq1399; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 11400; CHECK-LE-NEXT: blr1401;1402; CHECK-BE-LABEL: setnbcr83:1403; CHECK-BE: # %bb.0: # %entry1404; CHECK-BE-NEXT: cmpd r3, r41405; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha1406; CHECK-BE-NEXT: setnbcr r3, eq1407; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)1408; CHECK-BE-NEXT: blr1409entry:1410 %cmp = icmp ne i64 %a, %b1411 %conv1 = sext i1 %cmp to i641412 store i64 %conv1, ptr @globalVal3, align 81413 ret void1414}1415 1416