924 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(i32 signext %a, i32 signext %b) {21; CHECK-LABEL: setbc1:22; CHECK: # %bb.0: # %entry23; CHECK-NEXT: cmpw r3, r424; CHECK-NEXT: setbc r3, lt25; CHECK-NEXT: blr26entry:27 %cmp = icmp slt i32 %a, %b28 %conv = zext i1 %cmp to i3229 ret i32 %conv30}31 32define dso_local signext i32 @setbc2(i32 signext %a, i32 signext %b) {33; CHECK-LABEL: setbc2:34; CHECK: # %bb.0: # %entry35; CHECK-NEXT: cmpw r3, r436; CHECK-NEXT: setbc r3, eq37; CHECK-NEXT: blr38entry:39 %cmp = icmp eq i32 %a, %b40 %conv = zext i1 %cmp to i3241 ret i32 %conv42}43 44define dso_local signext i32 @setbc3(i32 signext %a, i32 signext %b) {45; CHECK-LABEL: setbc3:46; CHECK: # %bb.0: # %entry47; CHECK-NEXT: cmpw r3, r448; CHECK-NEXT: setbc r3, gt49; CHECK-NEXT: blr50entry:51 %cmp = icmp sgt i32 %a, %b52 %conv = zext i1 %cmp to i3253 ret i32 %conv54}55 56define dso_local signext i32 @setbc4(i8 signext %a, i8 signext %b) {57; CHECK-LABEL: setbc4:58; CHECK: # %bb.0: # %entry59; CHECK-NEXT: cmpw r3, r460; CHECK-NEXT: setbc r3, eq61; CHECK-NEXT: blr62entry:63 %cmp = icmp eq i8 %a, %b64 %conv2 = zext i1 %cmp to i3265 ret i32 %conv266}67 68define dso_local void @setbc5(i8 signext %a, i8 signext %b) {69; CHECK-LE-LABEL: setbc5:70; CHECK-LE: # %bb.0: # %entry71; CHECK-LE-NEXT: cmpw r3, r472; CHECK-LE-NEXT: setbc r3, eq73; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 174; CHECK-LE-NEXT: blr75;76; CHECK-BE-LABEL: setbc5:77; CHECK-BE: # %bb.0: # %entry78; CHECK-BE-NEXT: cmpw r3, r479; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha80; CHECK-BE-NEXT: setbc r3, eq81; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)82; CHECK-BE-NEXT: blr83entry:84 %cmp = icmp eq i8 %a, %b85 %conv3 = zext i1 %cmp to i886 store i8 %conv3, ptr @globalVal, align 187 ret void88}89 90define dso_local void @setbc6(i32 signext %a, i32 signext %b) {91; CHECK-LE-LABEL: setbc6:92; CHECK-LE: # %bb.0: # %entry93; CHECK-LE-NEXT: cmpw r3, r494; CHECK-LE-NEXT: setbc r3, eq95; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 196; CHECK-LE-NEXT: blr97;98; CHECK-BE-LABEL: setbc6:99; CHECK-BE: # %bb.0: # %entry100; CHECK-BE-NEXT: cmpw r3, r4101; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha102; CHECK-BE-NEXT: setbc r3, eq103; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)104; CHECK-BE-NEXT: blr105entry:106 %cmp = icmp eq i32 %a, %b107 %conv = zext i1 %cmp to i32108 store i32 %conv, ptr @globalVal2, align 4109 ret void110}111 112define dso_local signext i32 @setbc7(i64 %a, i64 %b) {113; CHECK-LABEL: setbc7:114; CHECK: # %bb.0: # %entry115; CHECK-NEXT: cmpd r3, r4116; CHECK-NEXT: setbc r3, eq117; CHECK-NEXT: blr118entry:119 %cmp = icmp eq i64 %a, %b120 %conv = zext i1 %cmp to i32121 ret i32 %conv122}123 124define signext i64 @setbc8(i64 %a, i64 %b) {125; CHECK-LABEL: setbc8:126; CHECK: # %bb.0: # %entry127; CHECK-NEXT: cmpd r3, r4128; CHECK-NEXT: setbc r3, eq129; CHECK-NEXT: blr130entry:131 %cmp = icmp eq i64 %a, %b132 %conv = zext i1 %cmp to i64133 ret i64 %conv134}135 136 137define dso_local void @setbc9(i64 %a, i64 %b) {138; CHECK-LE-LABEL: setbc9:139; CHECK-LE: # %bb.0: # %entry140; CHECK-LE-NEXT: cmpd r3, r4141; CHECK-LE-NEXT: setbc r3, eq142; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1143; CHECK-LE-NEXT: blr144;145; CHECK-BE-LABEL: setbc9:146; CHECK-BE: # %bb.0: # %entry147; CHECK-BE-NEXT: cmpd r3, r4148; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha149; CHECK-BE-NEXT: setbc r3, eq150; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)151; CHECK-BE-NEXT: blr152entry:153 %cmp = icmp eq i64 %a, %b154 %conv1 = zext i1 %cmp to i64155 store i64 %conv1, ptr @globalVal3, align 8156 ret void157}158 159 160define dso_local signext i32 @setbc10(i16 signext %a, i16 signext %b) {161; CHECK-LABEL: setbc10:162; CHECK: # %bb.0: # %entry163; CHECK-NEXT: cmpw r3, r4164; CHECK-NEXT: setbc r3, eq165; CHECK-NEXT: blr166entry:167 %cmp = icmp eq i16 %a, %b168 %conv2 = zext i1 %cmp to i32169 ret i32 %conv2170}171 172 173define dso_local void @setbc11(i16 signext %a, i16 signext %b) {174; CHECK-LE-LABEL: setbc11:175; CHECK-LE: # %bb.0: # %entry176; CHECK-LE-NEXT: cmpw r3, r4177; CHECK-LE-NEXT: setbc r3, eq178; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1179; CHECK-LE-NEXT: blr180;181; CHECK-BE-LABEL: setbc11:182; CHECK-BE: # %bb.0: # %entry183; CHECK-BE-NEXT: cmpw r3, r4184; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha185; CHECK-BE-NEXT: setbc r3, eq186; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)187; CHECK-BE-NEXT: blr188entry:189 %cmp = icmp eq i16 %a, %b190 %conv3 = zext i1 %cmp to i16191 store i16 %conv3, ptr @globalVal4, align 2192 ret void193}194 195 196define dso_local signext i32 @setbc12(i8 zeroext %a, i8 zeroext %b) {197; CHECK-LABEL: setbc12:198; CHECK: # %bb.0: # %entry199; CHECK-NEXT: cmpw r3, r4200; CHECK-NEXT: setbc r3, eq201; CHECK-NEXT: blr202entry:203 %cmp = icmp eq i8 %a, %b204 %conv2 = zext i1 %cmp to i32205 ret i32 %conv2206}207 208 209define dso_local void @setbc13(i8 zeroext %a, i8 zeroext %b) {210; CHECK-LE-LABEL: setbc13:211; CHECK-LE: # %bb.0: # %entry212; CHECK-LE-NEXT: cmpw r3, r4213; CHECK-LE-NEXT: setbc r3, eq214; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1215; CHECK-LE-NEXT: blr216;217; CHECK-BE-LABEL: setbc13:218; CHECK-BE: # %bb.0: # %entry219; CHECK-BE-NEXT: cmpw r3, r4220; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha221; CHECK-BE-NEXT: setbc r3, eq222; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)223; CHECK-BE-NEXT: blr224entry:225 %cmp = icmp eq i8 %a, %b226 %conv3 = zext i1 %cmp to i8227 store i8 %conv3, ptr @globalVal, align 1228 ret void229}230 231 232define dso_local signext i32 @setbc14(i32 zeroext %a, i32 zeroext %b) {233; CHECK-LABEL: setbc14:234; CHECK: # %bb.0: # %entry235; CHECK-NEXT: cmpw r3, r4236; CHECK-NEXT: setbc r3, eq237; CHECK-NEXT: blr238entry:239 %cmp = icmp eq i32 %a, %b240 %conv = zext i1 %cmp to i32241 ret i32 %conv242}243 244 245define dso_local void @setbc15(i32 zeroext %a, i32 zeroext %b) {246; CHECK-LE-LABEL: setbc15:247; CHECK-LE: # %bb.0: # %entry248; CHECK-LE-NEXT: cmpw r3, r4249; CHECK-LE-NEXT: setbc r3, eq250; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1251; CHECK-LE-NEXT: blr252;253; CHECK-BE-LABEL: setbc15:254; CHECK-BE: # %bb.0: # %entry255; CHECK-BE-NEXT: cmpw r3, r4256; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha257; CHECK-BE-NEXT: setbc r3, eq258; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)259; CHECK-BE-NEXT: blr260entry:261 %cmp = icmp eq i32 %a, %b262 %conv = zext i1 %cmp to i32263 store i32 %conv, ptr @globalVal2, align 4264 ret void265}266 267 268define dso_local signext i32 @setbc16(i16 zeroext %a, i16 zeroext %b) {269; CHECK-LABEL: setbc16:270; CHECK: # %bb.0: # %entry271; CHECK-NEXT: cmpw r3, r4272; CHECK-NEXT: setbc r3, eq273; CHECK-NEXT: blr274entry:275 %cmp = icmp eq i16 %a, %b276 %conv2 = zext i1 %cmp to i32277 ret i32 %conv2278}279 280 281define dso_local void @setbc17(i16 zeroext %a, i16 zeroext %b) {282; CHECK-LE-LABEL: setbc17:283; CHECK-LE: # %bb.0: # %entry284; CHECK-LE-NEXT: cmpw r3, r4285; CHECK-LE-NEXT: setbc r3, eq286; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1287; CHECK-LE-NEXT: blr288;289; CHECK-BE-LABEL: setbc17:290; CHECK-BE: # %bb.0: # %entry291; CHECK-BE-NEXT: cmpw r3, r4292; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha293; CHECK-BE-NEXT: setbc r3, eq294; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)295; CHECK-BE-NEXT: blr296entry:297 %cmp = icmp eq i16 %a, %b298 %conv3 = zext i1 %cmp to i16299 store i16 %conv3, ptr @globalVal4, align 2300 ret void301}302 303 304define dso_local signext i32 @setbc18(i8 signext %a, i8 signext %b) {305; CHECK-LABEL: setbc18:306; CHECK: # %bb.0: # %entry307; CHECK-NEXT: cmpw r3, r4308; CHECK-NEXT: setbc r3, gt309; CHECK-NEXT: blr310entry:311 %cmp = icmp sgt i8 %a, %b312 %conv2 = zext i1 %cmp to i32313 ret i32 %conv2314}315 316 317define dso_local void @setbc19(i8 signext %a, i8 signext %b) {318; CHECK-LE-LABEL: setbc19:319; CHECK-LE: # %bb.0: # %entry320; CHECK-LE-NEXT: cmpw r3, r4321; CHECK-LE-NEXT: setbc r3, gt322; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1323; CHECK-LE-NEXT: blr324;325; CHECK-BE-LABEL: setbc19:326; CHECK-BE: # %bb.0: # %entry327; CHECK-BE-NEXT: cmpw r3, r4328; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha329; CHECK-BE-NEXT: setbc r3, gt330; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)331; CHECK-BE-NEXT: blr332entry:333 %cmp = icmp sgt i8 %a, %b334 %conv3 = zext i1 %cmp to i8335 store i8 %conv3, ptr @globalVal, align 1336 ret void337}338 339 340define dso_local void @setbc20(i32 signext %a, i32 signext %b) {341; CHECK-LE-LABEL: setbc20:342; CHECK-LE: # %bb.0: # %entry343; CHECK-LE-NEXT: cmpw r3, r4344; CHECK-LE-NEXT: setbc r3, gt345; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1346; CHECK-LE-NEXT: blr347;348; CHECK-BE-LABEL: setbc20:349; CHECK-BE: # %bb.0: # %entry350; CHECK-BE-NEXT: cmpw r3, r4351; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha352; CHECK-BE-NEXT: setbc r3, gt353; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)354; CHECK-BE-NEXT: blr355entry:356 %cmp = icmp sgt i32 %a, %b357 %conv = zext i1 %cmp to i32358 store i32 %conv, ptr @globalVal2, align 4359 ret void360}361 362 363define dso_local signext i32 @setbc21(i64 %a, i64 %b) {364; CHECK-LABEL: setbc21:365; CHECK: # %bb.0: # %entry366; CHECK-NEXT: cmpd r3, r4367; CHECK-NEXT: setbc r3, gt368; CHECK-NEXT: blr369entry:370 %cmp = icmp sgt i64 %a, %b371 %conv = zext i1 %cmp to i32372 ret i32 %conv373}374 375 376define dso_local void @setbc22(i64 %a, i64 %b) {377; CHECK-LE-LABEL: setbc22:378; CHECK-LE: # %bb.0: # %entry379; CHECK-LE-NEXT: cmpd r3, r4380; CHECK-LE-NEXT: setbc r3, gt381; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1382; CHECK-LE-NEXT: blr383;384; CHECK-BE-LABEL: setbc22:385; CHECK-BE: # %bb.0: # %entry386; CHECK-BE-NEXT: cmpd r3, r4387; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha388; CHECK-BE-NEXT: setbc r3, gt389; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)390; CHECK-BE-NEXT: blr391entry:392 %cmp = icmp sgt i64 %a, %b393 %conv1 = zext i1 %cmp to i64394 store i64 %conv1, ptr @globalVal3, align 8395 ret void396}397 398 399define dso_local signext i32 @setbc23(i16 signext %a, i16 signext %b) {400; CHECK-LABEL: setbc23:401; CHECK: # %bb.0: # %entry402; CHECK-NEXT: cmpw r3, r4403; CHECK-NEXT: setbc r3, gt404; CHECK-NEXT: blr405entry:406 %cmp = icmp sgt i16 %a, %b407 %conv2 = zext i1 %cmp to i32408 ret i32 %conv2409}410 411 412define dso_local void @setbc24(i16 signext %a, i16 signext %b) {413; CHECK-LE-LABEL: setbc24:414; CHECK-LE: # %bb.0: # %entry415; CHECK-LE-NEXT: cmpw r3, r4416; CHECK-LE-NEXT: setbc r3, gt417; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1418; CHECK-LE-NEXT: blr419;420; CHECK-BE-LABEL: setbc24:421; CHECK-BE: # %bb.0: # %entry422; CHECK-BE-NEXT: cmpw r3, r4423; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha424; CHECK-BE-NEXT: setbc r3, gt425; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)426; CHECK-BE-NEXT: blr427entry:428 %cmp = icmp sgt i16 %a, %b429 %conv3 = zext i1 %cmp to i16430 store i16 %conv3, ptr @globalVal4, align 2431 ret void432}433 434 435define dso_local signext i32 @setbc25(i8 signext %a, i8 signext %b) {436; CHECK-LABEL: setbc25:437; CHECK: # %bb.0: # %entry438; CHECK-NEXT: cmpw r3, r4439; CHECK-NEXT: setbc r3, lt440; CHECK-NEXT: blr441entry:442 %cmp = icmp slt i8 %a, %b443 %conv2 = zext i1 %cmp to i32444 ret i32 %conv2445}446 447 448define dso_local void @setbc26(i8 signext %a, i8 signext %b) {449; CHECK-LE-LABEL: setbc26:450; CHECK-LE: # %bb.0: # %entry451; CHECK-LE-NEXT: cmpw r3, r4452; CHECK-LE-NEXT: setbc r3, lt453; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1454; CHECK-LE-NEXT: blr455;456; CHECK-BE-LABEL: setbc26:457; CHECK-BE: # %bb.0: # %entry458; CHECK-BE-NEXT: cmpw r3, r4459; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha460; CHECK-BE-NEXT: setbc r3, lt461; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)462; CHECK-BE-NEXT: blr463entry:464 %cmp = icmp slt i8 %a, %b465 %conv3 = zext i1 %cmp to i8466 store i8 %conv3, ptr @globalVal, align 1467 ret void468}469 470 471define dso_local void @setbc27(i32 signext %a, i32 signext %b) {472; CHECK-LE-LABEL: setbc27:473; CHECK-LE: # %bb.0: # %entry474; CHECK-LE-NEXT: cmpw r3, r4475; CHECK-LE-NEXT: setbc r3, lt476; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1477; CHECK-LE-NEXT: blr478;479; CHECK-BE-LABEL: setbc27:480; CHECK-BE: # %bb.0: # %entry481; CHECK-BE-NEXT: cmpw r3, r4482; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha483; CHECK-BE-NEXT: setbc r3, lt484; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)485; CHECK-BE-NEXT: blr486entry:487 %cmp = icmp slt i32 %a, %b488 %conv = zext i1 %cmp to i32489 store i32 %conv, ptr @globalVal2, align 4490 ret void491}492 493 494define dso_local signext i32 @setbc28(i64 %a, i64 %b) {495; CHECK-LABEL: setbc28:496; CHECK: # %bb.0: # %entry497; CHECK-NEXT: cmpd r3, r4498; CHECK-NEXT: setbc r3, lt499; CHECK-NEXT: blr500entry:501 %cmp = icmp slt i64 %a, %b502 %conv = zext i1 %cmp to i32503 ret i32 %conv504}505 506 507define signext i64 @setbc29(i64 %a, i64 %b) {508; CHECK-LABEL: setbc29:509; CHECK: # %bb.0: # %entry510; CHECK-NEXT: cmpd r3, r4511; CHECK-NEXT: setbc r3, lt512; CHECK-NEXT: blr513entry:514 %cmp = icmp slt i64 %a, %b515 %conv = zext i1 %cmp to i64516 ret i64 %conv517}518 519 520define dso_local void @setbc30(i64 %a, i64 %b) {521; CHECK-LE-LABEL: setbc30:522; CHECK-LE: # %bb.0: # %entry523; CHECK-LE-NEXT: cmpd r3, r4524; CHECK-LE-NEXT: setbc r3, lt525; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1526; CHECK-LE-NEXT: blr527;528; CHECK-BE-LABEL: setbc30:529; CHECK-BE: # %bb.0: # %entry530; CHECK-BE-NEXT: cmpd r3, r4531; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha532; CHECK-BE-NEXT: setbc r3, lt533; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)534; CHECK-BE-NEXT: blr535entry:536 %cmp = icmp slt i64 %a, %b537 %conv1 = zext i1 %cmp to i64538 store i64 %conv1, ptr @globalVal3, align 8539 ret void540}541 542 543define dso_local signext i32 @setbc31(i16 signext %a, i16 signext %b) {544; CHECK-LABEL: setbc31:545; CHECK: # %bb.0: # %entry546; CHECK-NEXT: cmpw r3, r4547; CHECK-NEXT: setbc r3, lt548; CHECK-NEXT: blr549entry:550 %cmp = icmp slt i16 %a, %b551 %conv2 = zext i1 %cmp to i32552 ret i32 %conv2553}554 555 556define dso_local void @setbc32(i16 signext %a, i16 signext %b) {557; CHECK-LE-LABEL: setbc32:558; CHECK-LE: # %bb.0: # %entry559; CHECK-LE-NEXT: cmpw r3, r4560; CHECK-LE-NEXT: setbc r3, lt561; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1562; CHECK-LE-NEXT: blr563;564; CHECK-BE-LABEL: setbc32:565; CHECK-BE: # %bb.0: # %entry566; CHECK-BE-NEXT: cmpw r3, r4567; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha568; CHECK-BE-NEXT: setbc r3, lt569; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)570; CHECK-BE-NEXT: blr571entry:572 %cmp = icmp slt i16 %a, %b573 %conv3 = zext i1 %cmp to i16574 store i16 %conv3, ptr @globalVal4, align 2575 ret void576}577 578 579define i64 @setbc33(i8 signext %a, i8 signext %b) {580; CHECK-LABEL: setbc33:581; CHECK: # %bb.0: # %entry582; CHECK-NEXT: cmpw r3, r4583; CHECK-NEXT: setbc r3, eq584; CHECK-NEXT: blr585entry:586 %cmp = icmp eq i8 %a, %b587 %conv3 = zext i1 %cmp to i64588 ret i64 %conv3589}590 591 592define dso_local void @setbc34(i8 signext %a, i8 signext %b) {593; CHECK-LE-LABEL: setbc34:594; CHECK-LE: # %bb.0: # %entry595; CHECK-LE-NEXT: cmpw r3, r4596; CHECK-LE-NEXT: setbc r3, eq597; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1598; CHECK-LE-NEXT: blr599;600; CHECK-BE-LABEL: setbc34:601; CHECK-BE: # %bb.0: # %entry602; CHECK-BE-NEXT: cmpw r3, r4603; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha604; CHECK-BE-NEXT: setbc r3, eq605; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)606; CHECK-BE-NEXT: blr607entry:608 %cmp = icmp eq i8 %a, %b609 %conv3 = zext i1 %cmp to i8610 store i8 %conv3, ptr @globalVal, align 1611 ret void612}613 614 615define i64 @setbc35(i32 signext %a, i32 signext %b) {616; CHECK-LABEL: setbc35:617; CHECK: # %bb.0: # %entry618; CHECK-NEXT: cmpw r3, r4619; CHECK-NEXT: setbc r3, eq620; CHECK-NEXT: blr621entry:622 %cmp = icmp eq i32 %a, %b623 %conv1 = zext i1 %cmp to i64624 ret i64 %conv1625}626 627 628define dso_local void @setbc36(i32 signext %a, i32 signext %b) {629; CHECK-LE-LABEL: setbc36:630; CHECK-LE: # %bb.0: # %entry631; CHECK-LE-NEXT: cmpw r3, r4632; CHECK-LE-NEXT: setbc r3, eq633; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1634; CHECK-LE-NEXT: blr635;636; CHECK-BE-LABEL: setbc36:637; CHECK-BE: # %bb.0: # %entry638; CHECK-BE-NEXT: cmpw r3, r4639; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha640; CHECK-BE-NEXT: setbc r3, eq641; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)642; CHECK-BE-NEXT: blr643entry:644 %cmp = icmp eq i32 %a, %b645 %conv = zext i1 %cmp to i32646 store i32 %conv, ptr @globalVal2, align 4647 ret void648}649 650 651define dso_local void @setbc37(i64 %a, i64 %b) {652; CHECK-LE-LABEL: setbc37:653; CHECK-LE: # %bb.0: # %entry654; CHECK-LE-NEXT: cmpd r3, r4655; CHECK-LE-NEXT: setbc r3, eq656; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1657; CHECK-LE-NEXT: blr658;659; CHECK-BE-LABEL: setbc37:660; CHECK-BE: # %bb.0: # %entry661; CHECK-BE-NEXT: cmpd r3, r4662; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha663; CHECK-BE-NEXT: setbc r3, eq664; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)665; CHECK-BE-NEXT: blr666entry:667 %cmp = icmp eq i64 %a, %b668 %conv1 = zext i1 %cmp to i64669 store i64 %conv1, ptr @globalVal3, align 8670 ret void671}672 673 674define i64 @setbc38(i16 signext %a, i16 signext %b) {675; CHECK-LABEL: setbc38:676; CHECK: # %bb.0: # %entry677; CHECK-NEXT: cmpw r3, r4678; CHECK-NEXT: setbc r3, eq679; CHECK-NEXT: blr680entry:681 %cmp = icmp eq i16 %a, %b682 %conv3 = zext i1 %cmp to i64683 ret i64 %conv3684}685 686 687define dso_local void @setbc39(i16 signext %a, i16 signext %b) {688; CHECK-LE-LABEL: setbc39:689; CHECK-LE: # %bb.0: # %entry690; CHECK-LE-NEXT: cmpw r3, r4691; CHECK-LE-NEXT: setbc r3, eq692; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1693; CHECK-LE-NEXT: blr694;695; CHECK-BE-LABEL: setbc39:696; CHECK-BE: # %bb.0: # %entry697; CHECK-BE-NEXT: cmpw r3, r4698; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha699; CHECK-BE-NEXT: setbc r3, eq700; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)701; CHECK-BE-NEXT: blr702entry:703 %cmp = icmp eq i16 %a, %b704 %conv3 = zext i1 %cmp to i16705 store i16 %conv3, ptr @globalVal4, align 2706 ret void707}708 709 710define i64 @setbc40(i8 zeroext %a, i8 zeroext %b) {711; CHECK-LABEL: setbc40:712; CHECK: # %bb.0: # %entry713; CHECK-NEXT: cmpw r3, r4714; CHECK-NEXT: setbc r3, eq715; CHECK-NEXT: blr716entry:717 %cmp = icmp eq i8 %a, %b718 %conv3 = zext i1 %cmp to i64719 ret i64 %conv3720}721 722 723define dso_local void @setbc41(i8 zeroext %a, i8 zeroext %b) {724; CHECK-LE-LABEL: setbc41:725; CHECK-LE: # %bb.0: # %entry726; CHECK-LE-NEXT: cmpw r3, r4727; CHECK-LE-NEXT: setbc r3, eq728; CHECK-LE-NEXT: pstb r3, globalVal@PCREL(0), 1729; CHECK-LE-NEXT: blr730;731; CHECK-BE-LABEL: setbc41:732; CHECK-BE: # %bb.0: # %entry733; CHECK-BE-NEXT: cmpw r3, r4734; CHECK-BE-NEXT: addis r4, r2, globalVal@toc@ha735; CHECK-BE-NEXT: setbc r3, eq736; CHECK-BE-NEXT: stb r3, globalVal@toc@l(r4)737; CHECK-BE-NEXT: blr738entry:739 %cmp = icmp eq i8 %a, %b740 %conv3 = zext i1 %cmp to i8741 store i8 %conv3, ptr @globalVal, align 1742 ret void743}744 745 746define i64 @setbc42(i32 zeroext %a, i32 zeroext %b) {747; CHECK-LABEL: setbc42:748; CHECK: # %bb.0: # %entry749; CHECK-NEXT: cmpw r3, r4750; CHECK-NEXT: setbc r3, eq751; CHECK-NEXT: blr752entry:753 %cmp = icmp eq i32 %a, %b754 %conv1 = zext i1 %cmp to i64755 ret i64 %conv1756}757 758 759define dso_local void @setbc43(i32 zeroext %a, i32 zeroext %b) {760; CHECK-LE-LABEL: setbc43:761; CHECK-LE: # %bb.0: # %entry762; CHECK-LE-NEXT: cmpw r3, r4763; CHECK-LE-NEXT: setbc r3, eq764; CHECK-LE-NEXT: pstw r3, globalVal2@PCREL(0), 1765; CHECK-LE-NEXT: blr766;767; CHECK-BE-LABEL: setbc43:768; CHECK-BE: # %bb.0: # %entry769; CHECK-BE-NEXT: cmpw r3, r4770; CHECK-BE-NEXT: addis r4, r2, globalVal2@toc@ha771; CHECK-BE-NEXT: setbc r3, eq772; CHECK-BE-NEXT: stw r3, globalVal2@toc@l(r4)773; CHECK-BE-NEXT: blr774entry:775 %cmp = icmp eq i32 %a, %b776 %conv = zext i1 %cmp to i32777 store i32 %conv, ptr @globalVal2, align 4778 ret void779}780 781 782define i64 @setbc44(i64 %a, i64 %b) {783; CHECK-LABEL: setbc44:784; CHECK: # %bb.0: # %entry785; CHECK-NEXT: cmpd r3, r4786; CHECK-NEXT: setbc r3, eq787; CHECK-NEXT: blr788entry:789 %cmp = icmp eq i64 %a, %b790 %conv1 = zext i1 %cmp to i64791 ret i64 %conv1792}793 794 795define dso_local void @setbc45(i64 %a, i64 %b) {796; CHECK-LE-LABEL: setbc45:797; CHECK-LE: # %bb.0: # %entry798; CHECK-LE-NEXT: cmpd r3, r4799; CHECK-LE-NEXT: setbc r3, eq800; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1801; CHECK-LE-NEXT: blr802;803; CHECK-BE-LABEL: setbc45:804; CHECK-BE: # %bb.0: # %entry805; CHECK-BE-NEXT: cmpd r3, r4806; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha807; CHECK-BE-NEXT: setbc r3, eq808; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)809; CHECK-BE-NEXT: blr810entry:811 %cmp = icmp eq i64 %a, %b812 %conv1 = zext i1 %cmp to i64813 store i64 %conv1, ptr @globalVal3, align 8814 ret void815}816 817 818define i64 @setbc46(i16 zeroext %a, i16 zeroext %b) {819; CHECK-LABEL: setbc46:820; CHECK: # %bb.0: # %entry821; CHECK-NEXT: cmpw r3, r4822; CHECK-NEXT: setbc r3, eq823; CHECK-NEXT: blr824entry:825 %cmp = icmp eq i16 %a, %b826 %conv3 = zext i1 %cmp to i64827 ret i64 %conv3828}829 830 831define dso_local void @setbc47(i16 zeroext %a, i16 zeroext %b) {832; CHECK-LE-LABEL: setbc47:833; CHECK-LE: # %bb.0: # %entry834; CHECK-LE-NEXT: cmpw r3, r4835; CHECK-LE-NEXT: setbc r3, eq836; CHECK-LE-NEXT: psth r3, globalVal4@PCREL(0), 1837; CHECK-LE-NEXT: blr838;839; CHECK-BE-LABEL: setbc47:840; CHECK-BE: # %bb.0: # %entry841; CHECK-BE-NEXT: cmpw r3, r4842; CHECK-BE-NEXT: addis r4, r2, globalVal4@toc@ha843; CHECK-BE-NEXT: setbc r3, eq844; CHECK-BE-NEXT: sth r3, globalVal4@toc@l(r4)845; CHECK-BE-NEXT: blr846entry:847 %cmp = icmp eq i16 %a, %b848 %conv3 = zext i1 %cmp to i16849 store i16 %conv3, ptr @globalVal4, align 2850 ret void851}852 853 854define i64 @setbc48(i64 %a, i64 %b) {855; CHECK-LABEL: setbc48:856; CHECK: # %bb.0: # %entry857; CHECK-NEXT: cmpd r3, r4858; CHECK-NEXT: setbc r3, gt859; CHECK-NEXT: blr860entry:861 %cmp = icmp sgt i64 %a, %b862 %conv1 = zext i1 %cmp to i64863 ret i64 %conv1864}865 866 867define dso_local void @setbc49(i64 %a, i64 %b) {868; CHECK-LE-LABEL: setbc49:869; CHECK-LE: # %bb.0: # %entry870; CHECK-LE-NEXT: cmpd r3, r4871; CHECK-LE-NEXT: setbc r3, gt872; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1873; CHECK-LE-NEXT: blr874;875; CHECK-BE-LABEL: setbc49:876; CHECK-BE: # %bb.0: # %entry877; CHECK-BE-NEXT: cmpd r3, r4878; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha879; CHECK-BE-NEXT: setbc r3, gt880; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)881; CHECK-BE-NEXT: blr882entry:883 %cmp = icmp sgt i64 %a, %b884 %conv1 = zext i1 %cmp to i64885 store i64 %conv1, ptr @globalVal3, align 8886 ret void887}888 889 890define i64 @setbc50(i64 %a, i64 %b) {891; CHECK-LABEL: setbc50:892; CHECK: # %bb.0: # %entry893; CHECK-NEXT: cmpd r3, r4894; CHECK-NEXT: setbc r3, lt895; CHECK-NEXT: blr896entry:897 %cmp = icmp slt i64 %a, %b898 %conv1 = zext i1 %cmp to i64899 ret i64 %conv1900}901 902 903define dso_local void @setnbc51(i64 %a, i64 %b) {904; CHECK-LE-LABEL: setnbc51:905; CHECK-LE: # %bb.0: # %entry906; CHECK-LE-NEXT: cmpd r3, r4907; CHECK-LE-NEXT: setbc r3, lt908; CHECK-LE-NEXT: pstd r3, globalVal3@PCREL(0), 1909; CHECK-LE-NEXT: blr910;911; CHECK-BE-LABEL: setnbc51:912; CHECK-BE: # %bb.0: # %entry913; CHECK-BE-NEXT: cmpd r3, r4914; CHECK-BE-NEXT: addis r4, r2, globalVal3@toc@ha915; CHECK-BE-NEXT: setbc r3, lt916; CHECK-BE-NEXT: std r3, globalVal3@toc@l(r4)917; CHECK-BE-NEXT: blr918entry:919 %cmp = icmp slt i64 %a, %b920 %conv1 = zext i1 %cmp to i64921 store i64 %conv1, ptr @globalVal3, align 8922 ret void923}924