brintos

brintos / llvm-project-archived public Read only

0
0
Text · 28.0 KiB · 136c2a9 Raw
1058 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 20 21define dso_local signext i32 @setbcr1(i32 signext %a, i32 signext %b) {22; CHECK-LABEL: setbcr1:23; CHECK:       # %bb.0: # %entry24; CHECK-NEXT:    cmpw r3, r425; CHECK-NEXT:    setbcr r3, lt26; CHECK-NEXT:    blr27entry:28  %cmp = icmp sge i32 %a, %b29  %lnot.ext = zext i1 %cmp to i3230  ret i32 %lnot.ext31}32 33 34define dso_local signext i32 @setbcr2(i32 signext %a, i32 signext %b) {35; CHECK-LABEL: setbcr2:36; CHECK:       # %bb.0: # %entry37; CHECK-NEXT:    cmpw r3, r438; CHECK-NEXT:    setbcr r3, gt39; CHECK-NEXT:    blr40entry:41  %cmp = icmp sle i32 %a, %b42  %lnot.ext = zext i1 %cmp to i3243  ret i32 %lnot.ext44}45 46 47define dso_local signext i32 @setbcr3(i32 signext %a, i32 signext %b) {48; CHECK-LABEL: setbcr3:49; CHECK:       # %bb.0: # %entry50; CHECK-NEXT:    cmpw r3, r451; CHECK-NEXT:    setbcr r3, eq52; CHECK-NEXT:    blr53entry:54  %cmp = icmp ne i32 %a, %b55  %lnot.ext = zext i1 %cmp to i3256  ret i32 %lnot.ext57}58 59 60define dso_local signext i32 @setbcr4(i8 signext %a, i8 signext %b) {61; CHECK-LABEL: setbcr4:62; CHECK:       # %bb.0: # %entry63; CHECK-NEXT:    cmpw r3, r464; CHECK-NEXT:    setbcr r3, lt65; CHECK-NEXT:    blr66entry:67  %cmp = icmp sge i8 %a, %b68  %conv2 = zext i1 %cmp to i3269  ret i32 %conv270}71 72 73define dso_local void @setbcr5(i8 signext %a, i8 signext %b) {74; CHECK-LE-LABEL: setbcr5:75; CHECK-LE:       # %bb.0: # %entry76; CHECK-LE-NEXT:    cmpw r3, r477; CHECK-LE-NEXT:    setbcr r3, lt78; CHECK-LE-NEXT:    pstb r3, globalVal@PCREL(0), 179; CHECK-LE-NEXT:    blr80;81; CHECK-BE-LABEL: setbcr5:82; CHECK-BE:       # %bb.0: # %entry83; CHECK-BE-NEXT:    cmpw r3, r484; CHECK-BE-NEXT:    addis r4, r2, globalVal@toc@ha85; CHECK-BE-NEXT:    setbcr r3, lt86; CHECK-BE-NEXT:    stb r3, globalVal@toc@l(r4)87; CHECK-BE-NEXT:    blr88entry:89  %cmp = icmp sge i8 %a, %b90  %conv3 = zext i1 %cmp to i891  store i8 %conv3, ptr @globalVal, align 192  ret void93}94 95 96define dso_local void @setbcr6(i32 signext %a, i32 signext %b) {97; CHECK-LE-LABEL: setbcr6:98; CHECK-LE:       # %bb.0: # %entry99; CHECK-LE-NEXT:    cmpw r3, r4100; CHECK-LE-NEXT:    setbcr r3, lt101; CHECK-LE-NEXT:    pstw r3, globalVal2@PCREL(0), 1102; CHECK-LE-NEXT:    blr103;104; CHECK-BE-LABEL: setbcr6:105; CHECK-BE:       # %bb.0: # %entry106; CHECK-BE-NEXT:    cmpw r3, r4107; CHECK-BE-NEXT:    addis r4, r2, globalVal2@toc@ha108; CHECK-BE-NEXT:    setbcr r3, lt109; CHECK-BE-NEXT:    stw r3, globalVal2@toc@l(r4)110; CHECK-BE-NEXT:    blr111entry:112  %cmp = icmp sge i32 %a, %b113  %conv = zext i1 %cmp to i32114  store i32 %conv, ptr @globalVal2, align 4115  ret void116}117 118 119define dso_local signext i32 @setbcr7(i64 %a, i64 %b) {120; CHECK-LABEL: setbcr7:121; CHECK:       # %bb.0: # %entry122; CHECK-NEXT:    cmpd r3, r4123; CHECK-NEXT:    setbcr r3, lt124; CHECK-NEXT:    blr125entry:126  %cmp = icmp sge i64 %a, %b127  %conv = zext i1 %cmp to i32128  ret i32 %conv129}130 131 132define signext i64 @setbcr8(i64 %a, i64 %b) {133; CHECK-LABEL: setbcr8:134; CHECK:       # %bb.0: # %entry135; CHECK-NEXT:    cmpd r3, r4136; CHECK-NEXT:    setbcr r3, lt137; CHECK-NEXT:    blr138entry:139  %cmp = icmp sge i64 %a, %b140  %conv = zext i1 %cmp to i64141  ret i64 %conv142}143 144 145define dso_local void @setbcr9(i64 %a, i64 %b) {146; CHECK-LE-LABEL: setbcr9:147; CHECK-LE:       # %bb.0: # %entry148; CHECK-LE-NEXT:    cmpd r3, r4149; CHECK-LE-NEXT:    setbcr r3, lt150; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1151; CHECK-LE-NEXT:    blr152;153; CHECK-BE-LABEL: setbcr9:154; CHECK-BE:       # %bb.0: # %entry155; CHECK-BE-NEXT:    cmpd r3, r4156; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha157; CHECK-BE-NEXT:    setbcr r3, lt158; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)159; CHECK-BE-NEXT:    blr160entry:161  %cmp = icmp sge i64 %a, %b162  %conv1 = zext i1 %cmp to i64163  store i64 %conv1, ptr @globalVal3, align 8164  ret void165}166 167 168define dso_local signext i32 @setbcr10(i16 signext %a, i16 signext %b) {169; CHECK-LABEL: setbcr10:170; CHECK:       # %bb.0: # %entry171; CHECK-NEXT:    cmpw r3, r4172; CHECK-NEXT:    setbcr r3, lt173; CHECK-NEXT:    blr174entry:175  %cmp = icmp sge i16 %a, %b176  %conv2 = zext i1 %cmp to i32177  ret i32 %conv2178}179 180 181define dso_local void @setbcr11(i16 signext %a, i16 signext %b) {182; CHECK-LE-LABEL: setbcr11:183; CHECK-LE:       # %bb.0: # %entry184; CHECK-LE-NEXT:    cmpw r3, r4185; CHECK-LE-NEXT:    setbcr r3, lt186; CHECK-LE-NEXT:    psth r3, globalVal4@PCREL(0), 1187; CHECK-LE-NEXT:    blr188;189; CHECK-BE-LABEL: setbcr11:190; CHECK-BE:       # %bb.0: # %entry191; CHECK-BE-NEXT:    cmpw r3, r4192; CHECK-BE-NEXT:    addis r4, r2, globalVal4@toc@ha193; CHECK-BE-NEXT:    setbcr r3, lt194; CHECK-BE-NEXT:    sth r3, globalVal4@toc@l(r4)195; CHECK-BE-NEXT:    blr196entry:197  %cmp = icmp sge i16 %a, %b198  %conv3 = zext i1 %cmp to i16199  store i16 %conv3, ptr @globalVal4, align 2200  ret void201}202 203 204define dso_local signext i32 @setbcr12(i64 %a, i64 %b) {205; CHECK-LABEL: setbcr12:206; CHECK:       # %bb.0: # %entry207; CHECK-NEXT:    cmpld r3, r4208; CHECK-NEXT:    setbcr r3, lt209; CHECK-NEXT:    blr210entry:211  %cmp = icmp uge i64 %a, %b212  %conv = zext i1 %cmp to i32213  ret i32 %conv214}215 216 217define dso_local void @setbcr13(i64 %a, i64 %b) {218; CHECK-LE-LABEL: setbcr13:219; CHECK-LE:       # %bb.0: # %entry220; CHECK-LE-NEXT:    cmpld r3, r4221; CHECK-LE-NEXT:    setbcr r3, lt222; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1223; CHECK-LE-NEXT:    blr224;225; CHECK-BE-LABEL: setbcr13:226; CHECK-BE:       # %bb.0: # %entry227; CHECK-BE-NEXT:    cmpld r3, r4228; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha229; CHECK-BE-NEXT:    setbcr r3, lt230; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)231; CHECK-BE-NEXT:    blr232entry:233  %cmp = icmp uge i64 %a, %b234  %conv1 = zext i1 %cmp to i64235  store i64 %conv1, ptr @globalVal3236  ret void237}238 239 240define dso_local signext i32 @setbcr14(i8 signext %a, i8 signext %b) {241; CHECK-LABEL: setbcr14:242; CHECK:       # %bb.0: # %entry243; CHECK-NEXT:    cmpw r3, r4244; CHECK-NEXT:    setbcr r3, gt245; CHECK-NEXT:    blr246entry:247  %cmp = icmp sle i8 %a, %b248  %conv2 = zext i1 %cmp to i32249  ret i32 %conv2250}251 252 253define dso_local void @setbcr15(i8 signext %a, i8 signext %b) {254; CHECK-LE-LABEL: setbcr15:255; CHECK-LE:       # %bb.0: # %entry256; CHECK-LE-NEXT:    cmpw r3, r4257; CHECK-LE-NEXT:    setbcr r3, gt258; CHECK-LE-NEXT:    pstb r3, globalVal@PCREL(0), 1259; CHECK-LE-NEXT:    blr260;261; CHECK-BE-LABEL: setbcr15:262; CHECK-BE:       # %bb.0: # %entry263; CHECK-BE-NEXT:    cmpw r3, r4264; CHECK-BE-NEXT:    addis r4, r2, globalVal@toc@ha265; CHECK-BE-NEXT:    setbcr r3, gt266; CHECK-BE-NEXT:    stb r3, globalVal@toc@l(r4)267; CHECK-BE-NEXT:    blr268entry:269  %cmp = icmp sle i8 %a, %b270  %conv3 = zext i1 %cmp to i8271  store i8 %conv3, ptr @globalVal, align 1272  ret void273}274 275 276define dso_local signext i32 @setbcr16(i32 signext %a, i32 signext %b) {277; CHECK-LABEL: setbcr16:278; CHECK:       # %bb.0: # %entry279; CHECK-NEXT:    cmpw r3, r4280; CHECK-NEXT:    setbcr r3, gt281; CHECK-NEXT:    blr282entry:283  %cmp = icmp sle i32 %a, %b284  %conv = zext i1 %cmp to i32285  ret i32 %conv286}287 288 289define dso_local void @setbcr17(i32 signext %a, i32 signext %b) {290; CHECK-LE-LABEL: setbcr17:291; CHECK-LE:       # %bb.0: # %entry292; CHECK-LE-NEXT:    cmpw r3, r4293; CHECK-LE-NEXT:    setbcr r3, gt294; CHECK-LE-NEXT:    pstw r3, globalVal2@PCREL(0), 1295; CHECK-LE-NEXT:    blr296;297; CHECK-BE-LABEL: setbcr17:298; CHECK-BE:       # %bb.0: # %entry299; CHECK-BE-NEXT:    cmpw r3, r4300; CHECK-BE-NEXT:    addis r4, r2, globalVal2@toc@ha301; CHECK-BE-NEXT:    setbcr r3, gt302; CHECK-BE-NEXT:    stw r3, globalVal2@toc@l(r4)303; CHECK-BE-NEXT:    blr304entry:305  %cmp = icmp sle i32 %a, %b306  %conv = zext i1 %cmp to i32307  store i32 %conv, ptr @globalVal2, align 4308  ret void309}310 311 312define dso_local signext i32 @setbcr18(i64 %a, i64 %b) {313; CHECK-LABEL: setbcr18:314; CHECK:       # %bb.0: # %entry315; CHECK-NEXT:    cmpd r3, r4316; CHECK-NEXT:    setbcr r3, gt317; CHECK-NEXT:    blr318entry:319  %cmp = icmp sle i64 %a, %b320  %conv = zext i1 %cmp to i32321  ret i32 %conv322}323 324 325define dso_local void @setbcr19(i64 %a, i64 %b) {326; CHECK-LE-LABEL: setbcr19:327; CHECK-LE:       # %bb.0: # %entry328; CHECK-LE-NEXT:    cmpd r3, r4329; CHECK-LE-NEXT:    setbcr r3, gt330; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1331; CHECK-LE-NEXT:    blr332;333; CHECK-BE-LABEL: setbcr19:334; CHECK-BE:       # %bb.0: # %entry335; CHECK-BE-NEXT:    cmpd r3, r4336; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha337; CHECK-BE-NEXT:    setbcr r3, gt338; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)339; CHECK-BE-NEXT:    blr340entry:341  %cmp = icmp sle i64 %a, %b342  %conv1 = zext i1 %cmp to i64343  store i64 %conv1, ptr @globalVal3, align 8344  ret void345}346 347 348define dso_local signext i32 @setbcr20(i16 signext %a, i16 signext %b) {349; CHECK-LABEL: setbcr20:350; CHECK:       # %bb.0: # %entry351; CHECK-NEXT:    cmpw r3, r4352; CHECK-NEXT:    setbcr r3, gt353; CHECK-NEXT:    blr354entry:355  %cmp = icmp sle i16 %a, %b356  %conv2 = zext i1 %cmp to i32357  ret i32 %conv2358}359 360 361define dso_local void @setbcr21(i16 signext %a, i16 signext %b) {362; CHECK-LE-LABEL: setbcr21:363; CHECK-LE:       # %bb.0: # %entry364; CHECK-LE-NEXT:    cmpw r3, r4365; CHECK-LE-NEXT:    setbcr r3, gt366; CHECK-LE-NEXT:    psth r3, globalVal4@PCREL(0), 1367; CHECK-LE-NEXT:    blr368;369; CHECK-BE-LABEL: setbcr21:370; CHECK-BE:       # %bb.0: # %entry371; CHECK-BE-NEXT:    cmpw r3, r4372; CHECK-BE-NEXT:    addis r4, r2, globalVal4@toc@ha373; CHECK-BE-NEXT:    setbcr r3, gt374; CHECK-BE-NEXT:    sth r3, globalVal4@toc@l(r4)375; CHECK-BE-NEXT:    blr376entry:377  %cmp = icmp sle i16 %a, %b378  %conv3 = zext i1 %cmp to i16379  store i16 %conv3, ptr @globalVal4, align 2380  ret void381}382 383 384define dso_local signext i32 @setbcr22(i64 %a, i64 %b) {385; CHECK-LABEL: setbcr22:386; CHECK:       # %bb.0: # %entry387; CHECK-NEXT:    cmpld r3, r4388; CHECK-NEXT:    setbcr r3, gt389; CHECK-NEXT:    blr390entry:391  %cmp = icmp ule i64 %a, %b392  %conv = zext i1 %cmp to i32393  ret i32 %conv394}395 396 397define dso_local void @setbcr23(i64 %a, i64 %b) {398; CHECK-LE-LABEL: setbcr23:399; CHECK-LE:       # %bb.0: # %entry400; CHECK-LE-NEXT:    cmpld r3, r4401; CHECK-LE-NEXT:    setbcr r3, gt402; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1403; CHECK-LE-NEXT:    blr404;405; CHECK-BE-LABEL: setbcr23:406; CHECK-BE:       # %bb.0: # %entry407; CHECK-BE-NEXT:    cmpld r3, r4408; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha409; CHECK-BE-NEXT:    setbcr r3, gt410; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)411; CHECK-BE-NEXT:    blr412entry:413  %cmp = icmp ule i64 %a, %b414  %conv1 = zext i1 %cmp to i64415  store i64 %conv1, ptr @globalVal3416  ret void417}418 419define dso_local signext i32 @setbcr24(i8 signext %a, i8 signext %b) {420; CHECK-LABEL: setbcr24:421; CHECK:       # %bb.0: # %entry422; CHECK-NEXT:    cmpw r3, r4423; CHECK-NEXT:    setbcr r3, eq424; CHECK-NEXT:    blr425entry:426  %cmp = icmp ne i8 %a, %b427  %conv2 = zext i1 %cmp to i32428  ret i32 %conv2429}430 431define dso_local void @setbcr25(i8 signext %a, i8 signext %b) {432; CHECK-LE-LABEL: setbcr25:433; CHECK-LE:       # %bb.0: # %entry434; CHECK-LE-NEXT:    cmpw r3, r4435; CHECK-LE-NEXT:    setbcr r3, eq436; CHECK-LE-NEXT:    pstb r3, globalVal@PCREL(0), 1437; CHECK-LE-NEXT:    blr438;439; CHECK-BE-LABEL: setbcr25:440; CHECK-BE:       # %bb.0: # %entry441; CHECK-BE-NEXT:    cmpw r3, r4442; CHECK-BE-NEXT:    addis r4, r2, globalVal@toc@ha443; CHECK-BE-NEXT:    setbcr r3, eq444; CHECK-BE-NEXT:    stb r3, globalVal@toc@l(r4)445; CHECK-BE-NEXT:    blr446entry:447  %cmp = icmp ne i8 %a, %b448  %conv3 = zext i1 %cmp to i8449  store i8 %conv3, ptr @globalVal, align 1450  ret void451}452 453define dso_local void @setbcr26(i32 signext %a, i32 signext %b) {454; CHECK-LE-LABEL: setbcr26:455; CHECK-LE:       # %bb.0: # %entry456; CHECK-LE-NEXT:    cmpw r3, r4457; CHECK-LE-NEXT:    setbcr r3, eq458; CHECK-LE-NEXT:    pstw r3, globalVal2@PCREL(0), 1459; CHECK-LE-NEXT:    blr460;461; CHECK-BE-LABEL: setbcr26:462; CHECK-BE:       # %bb.0: # %entry463; CHECK-BE-NEXT:    cmpw r3, r4464; CHECK-BE-NEXT:    addis r4, r2, globalVal2@toc@ha465; CHECK-BE-NEXT:    setbcr r3, eq466; CHECK-BE-NEXT:    stw r3, globalVal2@toc@l(r4)467; CHECK-BE-NEXT:    blr468entry:469  %cmp = icmp ne i32 %a, %b470  %conv = zext i1 %cmp to i32471  store i32 %conv, ptr @globalVal2, align 4472  ret void473}474 475define dso_local signext i32 @setbcr27(i64 %a, i64 %b) {476; CHECK-LABEL: setbcr27:477; CHECK:       # %bb.0: # %entry478; CHECK-NEXT:    cmpd r3, r4479; CHECK-NEXT:    setbcr r3, eq480; CHECK-NEXT:    blr481entry:482  %cmp = icmp ne i64 %a, %b483  %conv = zext i1 %cmp to i32484  ret i32 %conv485}486 487define dso_local void @setbcr28(i64 %a, i64 %b) {488; CHECK-LE-LABEL: setbcr28:489; CHECK-LE:       # %bb.0: # %entry490; CHECK-LE-NEXT:    cmpd r3, r4491; CHECK-LE-NEXT:    setbcr r3, eq492; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1493; CHECK-LE-NEXT:    blr494;495; CHECK-BE-LABEL: setbcr28:496; CHECK-BE:       # %bb.0: # %entry497; CHECK-BE-NEXT:    cmpd r3, r4498; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha499; CHECK-BE-NEXT:    setbcr r3, eq500; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)501; CHECK-BE-NEXT:    blr502entry:503  %cmp = icmp ne i64 %a, %b504  %conv1 = zext i1 %cmp to i64505  store i64 %conv1, ptr @globalVal3, align 8506  ret void507}508 509define dso_local signext i32 @setbcr29(i16 signext %a, i16 signext %b) {510; CHECK-LABEL: setbcr29:511; CHECK:       # %bb.0: # %entry512; CHECK-NEXT:    cmpw r3, r4513; CHECK-NEXT:    setbcr r3, eq514; CHECK-NEXT:    blr515entry:516  %cmp = icmp ne i16 %a, %b517  %conv2 = zext i1 %cmp to i32518  ret i32 %conv2519}520 521define dso_local void @setbcr30(i16 signext %a, i16 signext %b) {522; CHECK-LE-LABEL: setbcr30:523; CHECK-LE:       # %bb.0: # %entry524; CHECK-LE-NEXT:    cmpw r3, r4525; CHECK-LE-NEXT:    setbcr r3, eq526; CHECK-LE-NEXT:    psth r3, globalVal4@PCREL(0), 1527; CHECK-LE-NEXT:    blr528;529; CHECK-BE-LABEL: setbcr30:530; CHECK-BE:       # %bb.0: # %entry531; CHECK-BE-NEXT:    cmpw r3, r4532; CHECK-BE-NEXT:    addis r4, r2, globalVal4@toc@ha533; CHECK-BE-NEXT:    setbcr r3, eq534; CHECK-BE-NEXT:    sth r3, globalVal4@toc@l(r4)535; CHECK-BE-NEXT:    blr536entry:537  %cmp = icmp ne i16 %a, %b538  %conv3 = zext i1 %cmp to i16539  store i16 %conv3, ptr @globalVal4, align 2540  ret void541}542 543define dso_local signext i32 @setbcr31(i8 zeroext %a, i8 zeroext %b) {544; CHECK-LABEL: setbcr31:545; CHECK:       # %bb.0: # %entry546; CHECK-NEXT:    cmpw r3, r4547; CHECK-NEXT:    setbcr r3, eq548; CHECK-NEXT:    blr549entry:550  %cmp = icmp ne i8 %a, %b551  %conv2 = zext i1 %cmp to i32552  ret i32 %conv2553}554 555define dso_local void @setbcr32(i8 zeroext %a, i8 zeroext %b) {556; CHECK-LE-LABEL: setbcr32:557; CHECK-LE:       # %bb.0: # %entry558; CHECK-LE-NEXT:    cmpw r3, r4559; CHECK-LE-NEXT:    setbcr r3, eq560; CHECK-LE-NEXT:    pstb r3, globalVal@PCREL(0), 1561; CHECK-LE-NEXT:    blr562;563; CHECK-BE-LABEL: setbcr32:564; CHECK-BE:       # %bb.0: # %entry565; CHECK-BE-NEXT:    cmpw r3, r4566; CHECK-BE-NEXT:    addis r4, r2, globalVal@toc@ha567; CHECK-BE-NEXT:    setbcr r3, eq568; CHECK-BE-NEXT:    stb r3, globalVal@toc@l(r4)569; CHECK-BE-NEXT:    blr570entry:571  %cmp = icmp ne i8 %a, %b572  %conv3 = zext i1 %cmp to i8573  store i8 %conv3, ptr @globalVal, align 1574  ret void575}576 577define dso_local signext i32 @setbcr33(i32 zeroext %a, i32 zeroext %b) {578; CHECK-LABEL: setbcr33:579; CHECK:       # %bb.0: # %entry580; CHECK-NEXT:    cmpw r3, r4581; CHECK-NEXT:    setbcr r3, eq582; CHECK-NEXT:    blr583entry:584  %cmp = icmp ne i32 %a, %b585  %conv = zext i1 %cmp to i32586  ret i32 %conv587}588 589define dso_local void @setbcr34(i32 zeroext %a, i32 zeroext %b) {590; CHECK-LE-LABEL: setbcr34:591; CHECK-LE:       # %bb.0: # %entry592; CHECK-LE-NEXT:    cmpw r3, r4593; CHECK-LE-NEXT:    setbcr r3, eq594; CHECK-LE-NEXT:    pstw r3, globalVal2@PCREL(0), 1595; CHECK-LE-NEXT:    blr596;597; CHECK-BE-LABEL: setbcr34:598; CHECK-BE:       # %bb.0: # %entry599; CHECK-BE-NEXT:    cmpw r3, r4600; CHECK-BE-NEXT:    addis r4, r2, globalVal2@toc@ha601; CHECK-BE-NEXT:    setbcr r3, eq602; CHECK-BE-NEXT:    stw r3, globalVal2@toc@l(r4)603; CHECK-BE-NEXT:    blr604entry:605  %cmp = icmp ne i32 %a, %b606  %conv = zext i1 %cmp to i32607  store i32 %conv, ptr @globalVal2, align 4608  ret void609}610 611define dso_local signext i32 @setbcr35(i16 zeroext %a, i16 zeroext %b) {612; CHECK-LABEL: setbcr35:613; CHECK:       # %bb.0: # %entry614; CHECK-NEXT:    cmpw r3, r4615; CHECK-NEXT:    setbcr r3, eq616; CHECK-NEXT:    blr617entry:618  %cmp = icmp ne i16 %a, %b619  %conv2 = zext i1 %cmp to i32620  ret i32 %conv2621}622 623define dso_local void @setbcr36(i16 zeroext %a, i16 zeroext %b) {624; CHECK-LE-LABEL: setbcr36:625; CHECK-LE:       # %bb.0: # %entry626; CHECK-LE-NEXT:    cmpw r3, r4627; CHECK-LE-NEXT:    setbcr r3, eq628; CHECK-LE-NEXT:    psth r3, globalVal4@PCREL(0), 1629; CHECK-LE-NEXT:    blr630;631; CHECK-BE-LABEL: setbcr36:632; CHECK-BE:       # %bb.0: # %entry633; CHECK-BE-NEXT:    cmpw r3, r4634; CHECK-BE-NEXT:    addis r4, r2, globalVal4@toc@ha635; CHECK-BE-NEXT:    setbcr r3, eq636; CHECK-BE-NEXT:    sth r3, globalVal4@toc@l(r4)637; CHECK-BE-NEXT:    blr638entry:639  %cmp = icmp ne i16 %a, %b640  %conv3 = zext i1 %cmp to i16641  store i16 %conv3, ptr @globalVal4, align 2642  ret void643}644 645define i64 @setbcr37(i8 signext %a, i8 signext %b) {646; CHECK-LABEL: setbcr37:647; CHECK:       # %bb.0: # %entry648; CHECK-NEXT:    cmpw r3, r4649; CHECK-NEXT:    setbcr r3, lt650; CHECK-NEXT:    blr651entry:652  %cmp = icmp sge i8 %a, %b653  %conv3 = zext i1 %cmp to i64654  ret i64 %conv3655}656 657define dso_local void @setbcr38(i8 signext %a, i8 signext %b) {658; CHECK-LE-LABEL: setbcr38:659; CHECK-LE:       # %bb.0: # %entry660; CHECK-LE-NEXT:    cmpw r3, r4661; CHECK-LE-NEXT:    setbcr r3, lt662; CHECK-LE-NEXT:    pstb r3, globalVal@PCREL(0), 1663; CHECK-LE-NEXT:    blr664;665; CHECK-BE-LABEL: setbcr38:666; CHECK-BE:       # %bb.0: # %entry667; CHECK-BE-NEXT:    cmpw r3, r4668; CHECK-BE-NEXT:    addis r4, r2, globalVal@toc@ha669; CHECK-BE-NEXT:    setbcr r3, lt670; CHECK-BE-NEXT:    stb r3, globalVal@toc@l(r4)671; CHECK-BE-NEXT:    blr672entry:673  %cmp = icmp sge i8 %a, %b674  %conv3 = zext i1 %cmp to i8675  store i8 %conv3, ptr @globalVal, align 1676  ret void677}678 679define i64 @setbcr39(i32 signext %a, i32 signext %b) {680; CHECK-LABEL: setbcr39:681; CHECK:       # %bb.0: # %entry682; CHECK-NEXT:    cmpw r3, r4683; CHECK-NEXT:    setbcr r3, lt684; CHECK-NEXT:    blr685entry:686  %cmp = icmp sge i32 %a, %b687  %conv1 = zext i1 %cmp to i64688  ret i64 %conv1689}690 691define dso_local void @setbcr40(i32 signext %a, i32 signext %b) {692; CHECK-LE-LABEL: setbcr40:693; CHECK-LE:       # %bb.0: # %entry694; CHECK-LE-NEXT:    cmpw r3, r4695; CHECK-LE-NEXT:    setbcr r3, lt696; CHECK-LE-NEXT:    pstw r3, globalVal2@PCREL(0), 1697; CHECK-LE-NEXT:    blr698;699; CHECK-BE-LABEL: setbcr40:700; CHECK-BE:       # %bb.0: # %entry701; CHECK-BE-NEXT:    cmpw r3, r4702; CHECK-BE-NEXT:    addis r4, r2, globalVal2@toc@ha703; CHECK-BE-NEXT:    setbcr r3, lt704; CHECK-BE-NEXT:    stw r3, globalVal2@toc@l(r4)705; CHECK-BE-NEXT:    blr706entry:707  %cmp = icmp sge i32 %a, %b708  %conv = zext i1 %cmp to i32709  store i32 %conv, ptr @globalVal2, align 4710  ret void711}712 713define i64 @setbcr41(i64 %a, i64 %b) {714; CHECK-LABEL: setbcr41:715; CHECK:       # %bb.0: # %entry716; CHECK-NEXT:    cmpd r3, r4717; CHECK-NEXT:    setbcr r3, lt718; CHECK-NEXT:    blr719entry:720  %cmp = icmp sge i64 %a, %b721  %conv1 = zext i1 %cmp to i64722  ret i64 %conv1723}724 725define dso_local void @setbcr42(i64 %a, i64 %b) {726; CHECK-LE-LABEL: setbcr42:727; CHECK-LE:       # %bb.0: # %entry728; CHECK-LE-NEXT:    cmpd r3, r4729; CHECK-LE-NEXT:    setbcr r3, lt730; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1731; CHECK-LE-NEXT:    blr732;733; CHECK-BE-LABEL: setbcr42:734; CHECK-BE:       # %bb.0: # %entry735; CHECK-BE-NEXT:    cmpd r3, r4736; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha737; CHECK-BE-NEXT:    setbcr r3, lt738; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)739; CHECK-BE-NEXT:    blr740entry:741  %cmp = icmp sge i64 %a, %b742  %conv1 = zext i1 %cmp to i64743  store i64 %conv1, ptr @globalVal3, align 8744  ret void745}746 747define i64 @setbcr43(i16 signext %a, i16 signext %b) {748; CHECK-LABEL: setbcr43:749; CHECK:       # %bb.0: # %entry750; CHECK-NEXT:    cmpw r3, r4751; CHECK-NEXT:    setbcr r3, lt752; CHECK-NEXT:    blr753entry:754  %cmp = icmp sge i16 %a, %b755  %conv3 = zext i1 %cmp to i64756  ret i64 %conv3757}758 759define dso_local void @setbcr44(i16 signext %a, i16 signext %b) {760; CHECK-LE-LABEL: setbcr44:761; CHECK-LE:       # %bb.0: # %entry762; CHECK-LE-NEXT:    cmpw r3, r4763; CHECK-LE-NEXT:    setbcr r3, lt764; CHECK-LE-NEXT:    psth r3, globalVal4@PCREL(0), 1765; CHECK-LE-NEXT:    blr766;767; CHECK-BE-LABEL: setbcr44:768; CHECK-BE:       # %bb.0: # %entry769; CHECK-BE-NEXT:    cmpw r3, r4770; CHECK-BE-NEXT:    addis r4, r2, globalVal4@toc@ha771; CHECK-BE-NEXT:    setbcr r3, lt772; CHECK-BE-NEXT:    sth r3, globalVal4@toc@l(r4)773; CHECK-BE-NEXT:    blr774entry:775  %cmp = icmp sge i16 %a, %b776  %conv3 = zext i1 %cmp to i16777  store i16 %conv3, ptr @globalVal4, align 2778  ret void779}780 781 782define i64 @setbcr45(i64 %a, i64 %b) {783; CHECK-LABEL: setbcr45:784; CHECK:       # %bb.0: # %entry785; CHECK-NEXT:    cmpld r3, r4786; CHECK-NEXT:    setbcr r3, lt787; CHECK-NEXT:    blr788entry:789  %cmp = icmp uge i64 %a, %b790  %conv1 = zext i1 %cmp to i64791  ret i64 %conv1792}793 794 795define dso_local void @setbcr46(i64 %a, i64 %b) {796; CHECK-LE-LABEL: setbcr46:797; CHECK-LE:       # %bb.0: # %entry798; CHECK-LE-NEXT:    cmpld r3, r4799; CHECK-LE-NEXT:    setbcr r3, lt800; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1801; CHECK-LE-NEXT:    blr802;803; CHECK-BE-LABEL: setbcr46:804; CHECK-BE:       # %bb.0: # %entry805; CHECK-BE-NEXT:    cmpld r3, r4806; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha807; CHECK-BE-NEXT:    setbcr r3, lt808; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)809; CHECK-BE-NEXT:    blr810entry:811  %cmp = icmp uge i64 %a, %b812  %conv1 = zext i1 %cmp to i64813  store i64 %conv1, ptr @globalVal3814  ret void815}816 817define i64 @setbcr47(i8 signext %a, i8 signext %b) {818; CHECK-LABEL: setbcr47:819; CHECK:       # %bb.0: # %entry820; CHECK-NEXT:    cmpw r3, r4821; CHECK-NEXT:    setbcr r3, gt822; CHECK-NEXT:    blr823entry:824  %cmp = icmp sle i8 %a, %b825  %conv3 = zext i1 %cmp to i64826  ret i64 %conv3827}828 829define dso_local void @setbcr48(i8 signext %a, i8 signext %b) {830; CHECK-LE-LABEL: setbcr48:831; CHECK-LE:       # %bb.0: # %entry832; CHECK-LE-NEXT:    cmpw r3, r4833; CHECK-LE-NEXT:    setbcr r3, gt834; CHECK-LE-NEXT:    pstb r3, globalVal@PCREL(0), 1835; CHECK-LE-NEXT:    blr836;837; CHECK-BE-LABEL: setbcr48:838; CHECK-BE:       # %bb.0: # %entry839; CHECK-BE-NEXT:    cmpw r3, r4840; CHECK-BE-NEXT:    addis r4, r2, globalVal@toc@ha841; CHECK-BE-NEXT:    setbcr r3, gt842; CHECK-BE-NEXT:    stb r3, globalVal@toc@l(r4)843; CHECK-BE-NEXT:    blr844entry:845  %cmp = icmp sle i8 %a, %b846  %conv3 = zext i1 %cmp to i8847  store i8 %conv3, ptr @globalVal, align 1848  ret void849}850 851define i64 @setbcr49(i32 signext %a, i32 signext %b)  {852; CHECK-LABEL: setbcr49:853; CHECK:       # %bb.0: # %entry854; CHECK-NEXT:    cmpw r3, r4855; CHECK-NEXT:    setbcr r3, gt856; CHECK-NEXT:    blr857entry:858  %cmp = icmp sle i32 %a, %b859  %conv1 = zext i1 %cmp to i64860  ret i64 %conv1861}862 863define dso_local void @setbcr50(i32 signext %a, i32 signext %b) {864; CHECK-LE-LABEL: setbcr50:865; CHECK-LE:       # %bb.0: # %entry866; CHECK-LE-NEXT:    cmpw r3, r4867; CHECK-LE-NEXT:    setbcr r3, gt868; CHECK-LE-NEXT:    pstw r3, globalVal2@PCREL(0), 1869; CHECK-LE-NEXT:    blr870;871; CHECK-BE-LABEL: setbcr50:872; CHECK-BE:       # %bb.0: # %entry873; CHECK-BE-NEXT:    cmpw r3, r4874; CHECK-BE-NEXT:    addis r4, r2, globalVal2@toc@ha875; CHECK-BE-NEXT:    setbcr r3, gt876; CHECK-BE-NEXT:    stw r3, globalVal2@toc@l(r4)877; CHECK-BE-NEXT:    blr878entry:879  %cmp = icmp sle i32 %a, %b880  %conv = zext i1 %cmp to i32881  store i32 %conv, ptr @globalVal2, align 4882  ret void883}884 885 886define i64 @setbcr51(i64 %a, i64 %b)  {887; CHECK-LABEL: setbcr51:888; CHECK:       # %bb.0: # %entry889; CHECK-NEXT:    cmpd r3, r4890; CHECK-NEXT:    setbcr r3, gt891; CHECK-NEXT:    blr892entry:893  %cmp = icmp sle i64 %a, %b894  %conv1 = zext i1 %cmp to i64895  ret i64 %conv1896}897 898 899define dso_local void @setbcr52(i64 %a, i64 %b) {900; CHECK-LE-LABEL: setbcr52:901; CHECK-LE:       # %bb.0: # %entry902; CHECK-LE-NEXT:    cmpd r3, r4903; CHECK-LE-NEXT:    setbcr r3, gt904; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1905; CHECK-LE-NEXT:    blr906;907; CHECK-BE-LABEL: setbcr52:908; CHECK-BE:       # %bb.0: # %entry909; CHECK-BE-NEXT:    cmpd r3, r4910; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha911; CHECK-BE-NEXT:    setbcr r3, gt912; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)913; CHECK-BE-NEXT:    blr914entry:915  %cmp = icmp sle i64 %a, %b916  %conv1 = zext i1 %cmp to i64917  store i64 %conv1, ptr @globalVal3, align 8918  ret void919}920 921define i64 @setbcr53(i16 signext %a, i16 signext %b)  {922; CHECK-LABEL: setbcr53:923; CHECK:       # %bb.0: # %entry924; CHECK-NEXT:    cmpw r3, r4925; CHECK-NEXT:    setbcr r3, gt926; CHECK-NEXT:    blr927entry:928  %cmp = icmp sle i16 %a, %b929  %conv3 = zext i1 %cmp to i64930  ret i64 %conv3931}932 933define dso_local void @setbcr54(i16 signext %a, i16 signext %b) {934; CHECK-LE-LABEL: setbcr54:935; CHECK-LE:       # %bb.0: # %entry936; CHECK-LE-NEXT:    cmpw r3, r4937; CHECK-LE-NEXT:    setbcr r3, gt938; CHECK-LE-NEXT:    psth r3, globalVal4@PCREL(0), 1939; CHECK-LE-NEXT:    blr940;941; CHECK-BE-LABEL: setbcr54:942; CHECK-BE:       # %bb.0: # %entry943; CHECK-BE-NEXT:    cmpw r3, r4944; CHECK-BE-NEXT:    addis r4, r2, globalVal4@toc@ha945; CHECK-BE-NEXT:    setbcr r3, gt946; CHECK-BE-NEXT:    sth r3, globalVal4@toc@l(r4)947; CHECK-BE-NEXT:    blr948entry:949  %cmp = icmp sle i16 %a, %b950  %conv3 = zext i1 %cmp to i16951  store i16 %conv3, ptr @globalVal4, align 2952  ret void953}954 955 956define i64 @setbcr55(i64 %a, i64 %b) {957; CHECK-LABEL: setbcr55:958; CHECK:       # %bb.0: # %entry959; CHECK-NEXT:    cmpld r3, r4960; CHECK-NEXT:    setbcr r3, gt961; CHECK-NEXT:    blr962entry:963  %cmp = icmp ule i64 %a, %b964  %conv1 = zext i1 %cmp to i64965  ret i64 %conv1966}967 968 969define dso_local void @setbcr56(i64 %a, i64 %b) {970; CHECK-LE-LABEL: setbcr56:971; CHECK-LE:       # %bb.0: # %entry972; CHECK-LE-NEXT:    cmpld r3, r4973; CHECK-LE-NEXT:    setbcr r3, gt974; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 1975; CHECK-LE-NEXT:    blr976;977; CHECK-BE-LABEL: setbcr56:978; CHECK-BE:       # %bb.0: # %entry979; CHECK-BE-NEXT:    cmpld r3, r4980; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha981; CHECK-BE-NEXT:    setbcr r3, gt982; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)983; CHECK-BE-NEXT:    blr984entry:985  %cmp = icmp ule i64 %a, %b986  %conv1 = zext i1 %cmp to i64987  store i64 %conv1, ptr @globalVal3988  ret void989}990 991define i64 @setbcr57(i64 %a, i64 %b) {992; CHECK-LABEL: setbcr57:993; CHECK:       # %bb.0: # %entry994; CHECK-NEXT:    cmpd r3, r4995; CHECK-NEXT:    setbcr r3, eq996; CHECK-NEXT:    blr997entry:998  %cmp = icmp ne i64 %a, %b999  %conv1 = zext i1 %cmp to i641000  ret i64 %conv11001}1002 1003define dso_local void @setbcr58(i64 %a, i64 %b) {1004; CHECK-LE-LABEL: setbcr58:1005; CHECK-LE:       # %bb.0: # %entry1006; CHECK-LE-NEXT:    cmpd r3, r41007; CHECK-LE-NEXT:    setbcr r3, eq1008; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 11009; CHECK-LE-NEXT:    blr1010;1011; CHECK-BE-LABEL: setbcr58:1012; CHECK-BE:       # %bb.0: # %entry1013; CHECK-BE-NEXT:    cmpd r3, r41014; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha1015; CHECK-BE-NEXT:    setbcr r3, eq1016; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)1017; CHECK-BE-NEXT:    blr1018entry:1019  %cmp = icmp ne i64 %a, %b1020  %conv1 = zext i1 %cmp to i641021  store i64 %conv1, ptr @globalVal3, align 81022  ret void1023}1024 1025define i64 @setbcr59(i64 %a, i64 %b) {1026; CHECK-LABEL: setbcr59:1027; CHECK:       # %bb.0: # %entry1028; CHECK-NEXT:    cmpd r3, r41029; CHECK-NEXT:    setbcr r3, eq1030; CHECK-NEXT:    blr1031entry:1032  %cmp = icmp ne i64 %a, %b1033  %conv1 = zext i1 %cmp to i641034  ret i64 %conv11035}1036 1037define dso_local void @setbcr60(i64 %a, i64 %b) {1038; CHECK-LE-LABEL: setbcr60:1039; CHECK-LE:       # %bb.0: # %entry1040; CHECK-LE-NEXT:    cmpd r3, r41041; CHECK-LE-NEXT:    setbcr r3, eq1042; CHECK-LE-NEXT:    pstd r3, globalVal3@PCREL(0), 11043; CHECK-LE-NEXT:    blr1044;1045; CHECK-BE-LABEL: setbcr60:1046; CHECK-BE:       # %bb.0: # %entry1047; CHECK-BE-NEXT:    cmpd r3, r41048; CHECK-BE-NEXT:    addis r4, r2, globalVal3@toc@ha1049; CHECK-BE-NEXT:    setbcr r3, eq1050; CHECK-BE-NEXT:    std r3, globalVal3@toc@l(r4)1051; CHECK-BE-NEXT:    blr1052entry:1053  %cmp = icmp ne i64 %a, %b1054  %conv1 = zext i1 %cmp to i641055  store i64 %conv1, ptr @globalVal3, align 81056  ret void1057}1058