brintos

brintos / llvm-project-archived public Read only

0
0
Text · 23.9 KiB · d4133a3 Raw
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