6839 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky -mattr=+2e3 | FileCheck %s3; RUN: llc -verify-machineinstrs -csky-no-aliases < %s -mtriple=csky | FileCheck %s --check-prefix=GENERIC4 5;EQ6define i32 @brRR_eq(i32 %x, i32 %y) {7; CHECK-LABEL: brRR_eq:8; CHECK: # %bb.0: # %entry9; CHECK-NEXT: cmpne16 a1, a010; CHECK-NEXT: bt32 .LBB0_211; CHECK-NEXT: # %bb.1: # %label112; CHECK-NEXT: movi16 a0, 113; CHECK-NEXT: rts1614; CHECK-NEXT: .LBB0_2: # %label215; CHECK-NEXT: movi16 a0, 016; CHECK-NEXT: rts1617;18; GENERIC-LABEL: brRR_eq:19; GENERIC: # %bb.0: # %entry20; GENERIC-NEXT: .cfi_def_cfa_offset 021; GENERIC-NEXT: subi16 sp, sp, 422; GENERIC-NEXT: .cfi_def_cfa_offset 423; GENERIC-NEXT: cmpne16 a1, a024; GENERIC-NEXT: bt16 .LBB0_225; GENERIC-NEXT: # %bb.1: # %label126; GENERIC-NEXT: movi16 a0, 127; GENERIC-NEXT: addi16 sp, sp, 428; GENERIC-NEXT: rts1629; GENERIC-NEXT: .LBB0_2: # %label230; GENERIC-NEXT: movi16 a0, 031; GENERIC-NEXT: addi16 sp, sp, 432; GENERIC-NEXT: rts1633entry:34 %icmp = icmp eq i32 %y, %x35 br i1 %icmp, label %label1, label %label236label1:37 ret i32 138label2:39 ret i32 040}41 42define i32 @brRI_eq(i32 %x) {43; CHECK-LABEL: brRI_eq:44; CHECK: # %bb.0: # %entry45; CHECK-NEXT: cmpnei16 a0, 1046; CHECK-NEXT: bt32 .LBB1_247; CHECK-NEXT: # %bb.1: # %label148; CHECK-NEXT: movi16 a0, 149; CHECK-NEXT: rts1650; CHECK-NEXT: .LBB1_2: # %label251; CHECK-NEXT: movi16 a0, 052; CHECK-NEXT: rts1653;54; GENERIC-LABEL: brRI_eq:55; GENERIC: # %bb.0: # %entry56; GENERIC-NEXT: .cfi_def_cfa_offset 057; GENERIC-NEXT: subi16 sp, sp, 458; GENERIC-NEXT: .cfi_def_cfa_offset 459; GENERIC-NEXT: cmpnei16 a0, 1060; GENERIC-NEXT: bt16 .LBB1_261; GENERIC-NEXT: # %bb.1: # %label162; GENERIC-NEXT: movi16 a0, 163; GENERIC-NEXT: addi16 sp, sp, 464; GENERIC-NEXT: rts1665; GENERIC-NEXT: .LBB1_2: # %label266; GENERIC-NEXT: movi16 a0, 067; GENERIC-NEXT: addi16 sp, sp, 468; GENERIC-NEXT: rts1669entry:70 %icmp = icmp eq i32 %x, 1071 br i1 %icmp, label %label1, label %label272label1:73 ret i32 174label2:75 ret i32 076}77 78define i32 @brR0_eq(i32 %x) {79; CHECK-LABEL: brR0_eq:80; CHECK: # %bb.0: # %entry81; CHECK-NEXT: bez32 a0, .LBB2_282; CHECK-NEXT: # %bb.1: # %label283; CHECK-NEXT: movi16 a0, 084; CHECK-NEXT: rts1685; CHECK-NEXT: .LBB2_2: # %label186; CHECK-NEXT: movi16 a0, 187; CHECK-NEXT: rts1688;89; GENERIC-LABEL: brR0_eq:90; GENERIC: # %bb.0: # %entry91; GENERIC-NEXT: .cfi_def_cfa_offset 092; GENERIC-NEXT: subi16 sp, sp, 493; GENERIC-NEXT: .cfi_def_cfa_offset 494; GENERIC-NEXT: cmpnei16 a0, 095; GENERIC-NEXT: bf16 .LBB2_296; GENERIC-NEXT: # %bb.1: # %label297; GENERIC-NEXT: movi16 a0, 098; GENERIC-NEXT: addi16 sp, sp, 499; GENERIC-NEXT: rts16100; GENERIC-NEXT: .LBB2_2: # %label1101; GENERIC-NEXT: movi16 a0, 1102; GENERIC-NEXT: addi16 sp, sp, 4103; GENERIC-NEXT: rts16104entry:105 %icmp = icmp eq i32 %x, 0106 br i1 %icmp, label %label1, label %label2107label1:108 ret i32 1109label2:110 ret i32 0111}112 113;NE114define i32 @brRR_ne(i32 %x, i32 %y) {115; CHECK-LABEL: brRR_ne:116; CHECK: # %bb.0: # %entry117; CHECK-NEXT: cmpne16 a1, a0118; CHECK-NEXT: bf32 .LBB3_2119; CHECK-NEXT: # %bb.1: # %label1120; CHECK-NEXT: movi16 a0, 1121; CHECK-NEXT: rts16122; CHECK-NEXT: .LBB3_2: # %label2123; CHECK-NEXT: movi16 a0, 0124; CHECK-NEXT: rts16125;126; GENERIC-LABEL: brRR_ne:127; GENERIC: # %bb.0: # %entry128; GENERIC-NEXT: .cfi_def_cfa_offset 0129; GENERIC-NEXT: subi16 sp, sp, 4130; GENERIC-NEXT: .cfi_def_cfa_offset 4131; GENERIC-NEXT: cmpne16 a1, a0132; GENERIC-NEXT: bf16 .LBB3_2133; GENERIC-NEXT: # %bb.1: # %label1134; GENERIC-NEXT: movi16 a0, 1135; GENERIC-NEXT: addi16 sp, sp, 4136; GENERIC-NEXT: rts16137; GENERIC-NEXT: .LBB3_2: # %label2138; GENERIC-NEXT: movi16 a0, 0139; GENERIC-NEXT: addi16 sp, sp, 4140; GENERIC-NEXT: rts16141entry:142 %icmp = icmp ne i32 %y, %x143 br i1 %icmp, label %label1, label %label2144label1:145 ret i32 1146label2:147 ret i32 0148}149 150define i32 @brRI_ne(i32 %x) {151; CHECK-LABEL: brRI_ne:152; CHECK: # %bb.0: # %entry153; CHECK-NEXT: cmpnei16 a0, 10154; CHECK-NEXT: bf32 .LBB4_2155; CHECK-NEXT: # %bb.1: # %label1156; CHECK-NEXT: movi16 a0, 1157; CHECK-NEXT: rts16158; CHECK-NEXT: .LBB4_2: # %label2159; CHECK-NEXT: movi16 a0, 0160; CHECK-NEXT: rts16161;162; GENERIC-LABEL: brRI_ne:163; GENERIC: # %bb.0: # %entry164; GENERIC-NEXT: .cfi_def_cfa_offset 0165; GENERIC-NEXT: subi16 sp, sp, 4166; GENERIC-NEXT: .cfi_def_cfa_offset 4167; GENERIC-NEXT: cmpnei16 a0, 10168; GENERIC-NEXT: bf16 .LBB4_2169; GENERIC-NEXT: # %bb.1: # %label1170; GENERIC-NEXT: movi16 a0, 1171; GENERIC-NEXT: addi16 sp, sp, 4172; GENERIC-NEXT: rts16173; GENERIC-NEXT: .LBB4_2: # %label2174; GENERIC-NEXT: movi16 a0, 0175; GENERIC-NEXT: addi16 sp, sp, 4176; GENERIC-NEXT: rts16177entry:178 %icmp = icmp ne i32 %x, 10179 br i1 %icmp, label %label1, label %label2180label1:181 ret i32 1182label2:183 ret i32 0184}185 186define i32 @brR0_ne(i32 %x) {187; CHECK-LABEL: brR0_ne:188; CHECK: # %bb.0: # %entry189; CHECK-NEXT: bez32 a0, .LBB5_2190; CHECK-NEXT: # %bb.1: # %label1191; CHECK-NEXT: movi16 a0, 1192; CHECK-NEXT: rts16193; CHECK-NEXT: .LBB5_2: # %label2194; CHECK-NEXT: movi16 a0, 0195; CHECK-NEXT: rts16196;197; GENERIC-LABEL: brR0_ne:198; GENERIC: # %bb.0: # %entry199; GENERIC-NEXT: .cfi_def_cfa_offset 0200; GENERIC-NEXT: subi16 sp, sp, 4201; GENERIC-NEXT: .cfi_def_cfa_offset 4202; GENERIC-NEXT: cmpnei16 a0, 0203; GENERIC-NEXT: bf16 .LBB5_2204; GENERIC-NEXT: # %bb.1: # %label1205; GENERIC-NEXT: movi16 a0, 1206; GENERIC-NEXT: addi16 sp, sp, 4207; GENERIC-NEXT: rts16208; GENERIC-NEXT: .LBB5_2: # %label2209; GENERIC-NEXT: movi16 a0, 0210; GENERIC-NEXT: addi16 sp, sp, 4211; GENERIC-NEXT: rts16212entry:213 %icmp = icmp ne i32 %x, 0214 br i1 %icmp, label %label1, label %label2215label1:216 ret i32 1217label2:218 ret i32 0219}220 221;UGT222define i32 @brRR_ugt(i32 %x, i32 %y) {223; CHECK-LABEL: brRR_ugt:224; CHECK: # %bb.0: # %entry225; CHECK-NEXT: cmphs16 a0, a1226; CHECK-NEXT: bt32 .LBB6_2227; CHECK-NEXT: # %bb.1: # %label1228; CHECK-NEXT: movi16 a0, 1229; CHECK-NEXT: rts16230; CHECK-NEXT: .LBB6_2: # %label2231; CHECK-NEXT: movi16 a0, 0232; CHECK-NEXT: rts16233;234; GENERIC-LABEL: brRR_ugt:235; GENERIC: # %bb.0: # %entry236; GENERIC-NEXT: .cfi_def_cfa_offset 0237; GENERIC-NEXT: subi16 sp, sp, 4238; GENERIC-NEXT: .cfi_def_cfa_offset 4239; GENERIC-NEXT: cmphs16 a0, a1240; GENERIC-NEXT: bt16 .LBB6_2241; GENERIC-NEXT: # %bb.1: # %label1242; GENERIC-NEXT: movi16 a0, 1243; GENERIC-NEXT: addi16 sp, sp, 4244; GENERIC-NEXT: rts16245; GENERIC-NEXT: .LBB6_2: # %label2246; GENERIC-NEXT: movi16 a0, 0247; GENERIC-NEXT: addi16 sp, sp, 4248; GENERIC-NEXT: rts16249; CHECK-UGTXT: icmpu32 a0, a1, a0250; CHECK-UGTXT: rts16251entry:252 %icmp = icmp ugt i32 %y, %x253 br i1 %icmp, label %label1, label %label2254label1:255 ret i32 1256label2:257 ret i32 0258}259 260define i32 @brRI_ugt(i32 %x) {261; CHECK-LABEL: brRI_ugt:262; CHECK: # %bb.0: # %entry263; CHECK-NEXT: cmphsi16 a0, 11264; CHECK-NEXT: bf32 .LBB7_2265; CHECK-NEXT: # %bb.1: # %label1266; CHECK-NEXT: movi16 a0, 1267; CHECK-NEXT: rts16268; CHECK-NEXT: .LBB7_2: # %label2269; CHECK-NEXT: movi16 a0, 0270; CHECK-NEXT: rts16271;272; GENERIC-LABEL: brRI_ugt:273; GENERIC: # %bb.0: # %entry274; GENERIC-NEXT: .cfi_def_cfa_offset 0275; GENERIC-NEXT: subi16 sp, sp, 4276; GENERIC-NEXT: .cfi_def_cfa_offset 4277; GENERIC-NEXT: cmphsi16 a0, 11278; GENERIC-NEXT: bf16 .LBB7_2279; GENERIC-NEXT: # %bb.1: # %label1280; GENERIC-NEXT: movi16 a0, 1281; GENERIC-NEXT: addi16 sp, sp, 4282; GENERIC-NEXT: rts16283; GENERIC-NEXT: .LBB7_2: # %label2284; GENERIC-NEXT: movi16 a0, 0285; GENERIC-NEXT: addi16 sp, sp, 4286; GENERIC-NEXT: rts16287; CHECK-UGTXT: icmpu32 a0, a1, a0288; CHECK-UGTXT: rts16289entry:290 %icmp = icmp ugt i32 %x, 10291 br i1 %icmp, label %label1, label %label2292label1:293 ret i32 1294label2:295 ret i32 0296}297 298define i32 @brR0_ugt(i32 %x) {299; CHECK-LABEL: brR0_ugt:300; CHECK: # %bb.0: # %entry301; CHECK-NEXT: bez32 a0, .LBB8_2302; CHECK-NEXT: # %bb.1: # %label1303; CHECK-NEXT: movi16 a0, 1304; CHECK-NEXT: rts16305; CHECK-NEXT: .LBB8_2: # %label2306; CHECK-NEXT: movi16 a0, 0307; CHECK-NEXT: rts16308;309; GENERIC-LABEL: brR0_ugt:310; GENERIC: # %bb.0: # %entry311; GENERIC-NEXT: .cfi_def_cfa_offset 0312; GENERIC-NEXT: subi16 sp, sp, 4313; GENERIC-NEXT: .cfi_def_cfa_offset 4314; GENERIC-NEXT: cmpnei16 a0, 0315; GENERIC-NEXT: bf16 .LBB8_2316; GENERIC-NEXT: # %bb.1: # %label1317; GENERIC-NEXT: movi16 a0, 1318; GENERIC-NEXT: addi16 sp, sp, 4319; GENERIC-NEXT: rts16320; GENERIC-NEXT: .LBB8_2: # %label2321; GENERIC-NEXT: movi16 a0, 0322; GENERIC-NEXT: addi16 sp, sp, 4323; GENERIC-NEXT: rts16324; CHECK-UGTXT: icmpu32 a0, a1, a0325; CHECK-UGTXT: rts16326entry:327 %icmp = icmp ugt i32 %x, 0328 br i1 %icmp, label %label1, label %label2329label1:330 ret i32 1331label2:332 ret i32 0333}334 335;UGE336define i32 @brRR_uge(i32 %x, i32 %y) {337; CHECK-LABEL: brRR_uge:338; CHECK: # %bb.0: # %entry339; CHECK-NEXT: cmphs16 a1, a0340; CHECK-NEXT: bf32 .LBB9_2341; CHECK-NEXT: # %bb.1: # %label1342; CHECK-NEXT: movi16 a0, 1343; CHECK-NEXT: rts16344; CHECK-NEXT: .LBB9_2: # %label2345; CHECK-NEXT: movi16 a0, 0346; CHECK-NEXT: rts16347;348; GENERIC-LABEL: brRR_uge:349; GENERIC: # %bb.0: # %entry350; GENERIC-NEXT: .cfi_def_cfa_offset 0351; GENERIC-NEXT: subi16 sp, sp, 4352; GENERIC-NEXT: .cfi_def_cfa_offset 4353; GENERIC-NEXT: cmphs16 a1, a0354; GENERIC-NEXT: bf16 .LBB9_2355; GENERIC-NEXT: # %bb.1: # %label1356; GENERIC-NEXT: movi16 a0, 1357; GENERIC-NEXT: addi16 sp, sp, 4358; GENERIC-NEXT: rts16359; GENERIC-NEXT: .LBB9_2: # %label2360; GENERIC-NEXT: movi16 a0, 0361; GENERIC-NEXT: addi16 sp, sp, 4362; GENERIC-NEXT: rts16363; CHECK-UGTXT: icmpu32 a0, a1, a0364; CHECK-UGTXT: rts16365entry:366 %icmp = icmp uge i32 %y, %x367 br i1 %icmp, label %label1, label %label2368label1:369 ret i32 1370label2:371 ret i32 0372}373 374define i32 @brRI_uge(i32 %x) {375; CHECK-LABEL: brRI_uge:376; CHECK: # %bb.0: # %entry377; CHECK-NEXT: cmphsi16 a0, 10378; CHECK-NEXT: bf32 .LBB10_2379; CHECK-NEXT: # %bb.1: # %label1380; CHECK-NEXT: movi16 a0, 1381; CHECK-NEXT: rts16382; CHECK-NEXT: .LBB10_2: # %label2383; CHECK-NEXT: movi16 a0, 0384; CHECK-NEXT: rts16385;386; GENERIC-LABEL: brRI_uge:387; GENERIC: # %bb.0: # %entry388; GENERIC-NEXT: .cfi_def_cfa_offset 0389; GENERIC-NEXT: subi16 sp, sp, 4390; GENERIC-NEXT: .cfi_def_cfa_offset 4391; GENERIC-NEXT: cmphsi16 a0, 10392; GENERIC-NEXT: bf16 .LBB10_2393; GENERIC-NEXT: # %bb.1: # %label1394; GENERIC-NEXT: movi16 a0, 1395; GENERIC-NEXT: addi16 sp, sp, 4396; GENERIC-NEXT: rts16397; GENERIC-NEXT: .LBB10_2: # %label2398; GENERIC-NEXT: movi16 a0, 0399; GENERIC-NEXT: addi16 sp, sp, 4400; GENERIC-NEXT: rts16401; CHECK-UGTXT: icmpu32 a0, a1, a0402; CHECK-UGTXT: rts16403entry:404 %icmp = icmp uge i32 %x, 10405 br i1 %icmp, label %label1, label %label2406label1:407 ret i32 1408label2:409 ret i32 0410}411 412;ULT413define i32 @brRR_ult(i32 %x, i32 %y) {414; CHECK-LABEL: brRR_ult:415; CHECK: # %bb.0: # %entry416; CHECK-NEXT: cmphs16 a1, a0417; CHECK-NEXT: bt32 .LBB11_2418; CHECK-NEXT: # %bb.1: # %label1419; CHECK-NEXT: movi16 a0, 1420; CHECK-NEXT: rts16421; CHECK-NEXT: .LBB11_2: # %label2422; CHECK-NEXT: movi16 a0, 0423; CHECK-NEXT: rts16424;425; GENERIC-LABEL: brRR_ult:426; GENERIC: # %bb.0: # %entry427; GENERIC-NEXT: .cfi_def_cfa_offset 0428; GENERIC-NEXT: subi16 sp, sp, 4429; GENERIC-NEXT: .cfi_def_cfa_offset 4430; GENERIC-NEXT: cmphs16 a1, a0431; GENERIC-NEXT: bt16 .LBB11_2432; GENERIC-NEXT: # %bb.1: # %label1433; GENERIC-NEXT: movi16 a0, 1434; GENERIC-NEXT: addi16 sp, sp, 4435; GENERIC-NEXT: rts16436; GENERIC-NEXT: .LBB11_2: # %label2437; GENERIC-NEXT: movi16 a0, 0438; GENERIC-NEXT: addi16 sp, sp, 4439; GENERIC-NEXT: rts16440; CHECK-UGTXT: icmpu32 a0, a1, a0441; CHECK-UGTXT: rts16442entry:443 %icmp = icmp ult i32 %y, %x444 br i1 %icmp, label %label1, label %label2445label1:446 ret i32 1447label2:448 ret i32 0449}450 451define i32 @brRI_ult(i32 %x) {452; CHECK-LABEL: brRI_ult:453; CHECK: # %bb.0: # %entry454; CHECK-NEXT: movi16 a1, 9455; CHECK-NEXT: cmphs16 a1, a0456; CHECK-NEXT: bf32 .LBB12_2457; CHECK-NEXT: # %bb.1: # %label1458; CHECK-NEXT: movi16 a0, 1459; CHECK-NEXT: rts16460; CHECK-NEXT: .LBB12_2: # %label2461; CHECK-NEXT: movi16 a0, 0462; CHECK-NEXT: rts16463;464; GENERIC-LABEL: brRI_ult:465; GENERIC: # %bb.0: # %entry466; GENERIC-NEXT: .cfi_def_cfa_offset 0467; GENERIC-NEXT: subi16 sp, sp, 4468; GENERIC-NEXT: .cfi_def_cfa_offset 4469; GENERIC-NEXT: movi16 a1, 9470; GENERIC-NEXT: cmphs16 a1, a0471; GENERIC-NEXT: bf16 .LBB12_2472; GENERIC-NEXT: # %bb.1: # %label1473; GENERIC-NEXT: movi16 a0, 1474; GENERIC-NEXT: addi16 sp, sp, 4475; GENERIC-NEXT: rts16476; GENERIC-NEXT: .LBB12_2: # %label2477; GENERIC-NEXT: movi16 a0, 0478; GENERIC-NEXT: addi16 sp, sp, 4479; GENERIC-NEXT: rts16480; CHECK-UGTXT: icmpu32 a0, a1, a0481; CHECK-UGTXT: rts16482entry:483 %icmp = icmp ult i32 %x, 10484 br i1 %icmp, label %label1, label %label2485label1:486 ret i32 1487label2:488 ret i32 0489}490 491 492;ULE493define i32 @brRR_ule(i32 %x, i32 %y) {494; CHECK-LABEL: brRR_ule:495; CHECK: # %bb.0: # %entry496; CHECK-NEXT: cmphs16 a0, a1497; CHECK-NEXT: bf32 .LBB13_2498; CHECK-NEXT: # %bb.1: # %label1499; CHECK-NEXT: movi16 a0, 1500; CHECK-NEXT: rts16501; CHECK-NEXT: .LBB13_2: # %label2502; CHECK-NEXT: movi16 a0, 0503; CHECK-NEXT: rts16504;505; GENERIC-LABEL: brRR_ule:506; GENERIC: # %bb.0: # %entry507; GENERIC-NEXT: .cfi_def_cfa_offset 0508; GENERIC-NEXT: subi16 sp, sp, 4509; GENERIC-NEXT: .cfi_def_cfa_offset 4510; GENERIC-NEXT: cmphs16 a0, a1511; GENERIC-NEXT: bf16 .LBB13_2512; GENERIC-NEXT: # %bb.1: # %label1513; GENERIC-NEXT: movi16 a0, 1514; GENERIC-NEXT: addi16 sp, sp, 4515; GENERIC-NEXT: rts16516; GENERIC-NEXT: .LBB13_2: # %label2517; GENERIC-NEXT: movi16 a0, 0518; GENERIC-NEXT: addi16 sp, sp, 4519; GENERIC-NEXT: rts16520; CHECK-UGTXT: icmpu32 a0, a1, a0521; CHECK-UGTXT: rts16522entry:523 %icmp = icmp ule i32 %y, %x524 br i1 %icmp, label %label1, label %label2525label1:526 ret i32 1527label2:528 ret i32 0529}530 531define i32 @brRI_ule(i32 %x) {532; CHECK-LABEL: brRI_ule:533; CHECK: # %bb.0: # %entry534; CHECK-NEXT: movi16 a1, 10535; CHECK-NEXT: cmphs16 a1, a0536; CHECK-NEXT: bf32 .LBB14_2537; CHECK-NEXT: # %bb.1: # %label1538; CHECK-NEXT: movi16 a0, 1539; CHECK-NEXT: rts16540; CHECK-NEXT: .LBB14_2: # %label2541; CHECK-NEXT: movi16 a0, 0542; CHECK-NEXT: rts16543;544; GENERIC-LABEL: brRI_ule:545; GENERIC: # %bb.0: # %entry546; GENERIC-NEXT: .cfi_def_cfa_offset 0547; GENERIC-NEXT: subi16 sp, sp, 4548; GENERIC-NEXT: .cfi_def_cfa_offset 4549; GENERIC-NEXT: movi16 a1, 10550; GENERIC-NEXT: cmphs16 a1, a0551; GENERIC-NEXT: bf16 .LBB14_2552; GENERIC-NEXT: # %bb.1: # %label1553; GENERIC-NEXT: movi16 a0, 1554; GENERIC-NEXT: addi16 sp, sp, 4555; GENERIC-NEXT: rts16556; GENERIC-NEXT: .LBB14_2: # %label2557; GENERIC-NEXT: movi16 a0, 0558; GENERIC-NEXT: addi16 sp, sp, 4559; GENERIC-NEXT: rts16560; CHECK-UGTXT: icmpu32 a0, a1, a0561; CHECK-UGTXT: rts16562entry:563 %icmp = icmp ule i32 %x, 10564 br i1 %icmp, label %label1, label %label2565label1:566 ret i32 1567label2:568 ret i32 0569}570 571define i32 @brR0_ule(i32 %x) {572; CHECK-LABEL: brR0_ule:573; CHECK: # %bb.0: # %entry574; CHECK-NEXT: bnez32 a0, .LBB15_2575; CHECK-NEXT: # %bb.1: # %label1576; CHECK-NEXT: movi16 a0, 1577; CHECK-NEXT: rts16578; CHECK-NEXT: .LBB15_2: # %label2579; CHECK-NEXT: movi16 a0, 0580; CHECK-NEXT: rts16581;582; GENERIC-LABEL: brR0_ule:583; GENERIC: # %bb.0: # %entry584; GENERIC-NEXT: .cfi_def_cfa_offset 0585; GENERIC-NEXT: subi16 sp, sp, 4586; GENERIC-NEXT: .cfi_def_cfa_offset 4587; GENERIC-NEXT: cmpnei16 a0, 0588; GENERIC-NEXT: bt16 .LBB15_2589; GENERIC-NEXT: # %bb.1: # %label1590; GENERIC-NEXT: movi16 a0, 1591; GENERIC-NEXT: addi16 sp, sp, 4592; GENERIC-NEXT: rts16593; GENERIC-NEXT: .LBB15_2: # %label2594; GENERIC-NEXT: movi16 a0, 0595; GENERIC-NEXT: addi16 sp, sp, 4596; GENERIC-NEXT: rts16597; CHECK-UGTXT: icmpu32 a0, a1, a0598; CHECK-UGTXT: rts16599entry:600 %icmp = icmp ule i32 %x, 0601 br i1 %icmp, label %label1, label %label2602label1:603 ret i32 1604label2:605 ret i32 0606}607 608;SGT609define i32 @brRR_sgt(i32 %x, i32 %y) {610; CHECK-LABEL: brRR_sgt:611; CHECK: # %bb.0: # %entry612; CHECK-NEXT: cmplt16 a0, a1613; CHECK-NEXT: bf32 .LBB16_2614; CHECK-NEXT: # %bb.1: # %label1615; CHECK-NEXT: movi16 a0, 1616; CHECK-NEXT: rts16617; CHECK-NEXT: .LBB16_2: # %label2618; CHECK-NEXT: movi16 a0, 0619; CHECK-NEXT: rts16620;621; GENERIC-LABEL: brRR_sgt:622; GENERIC: # %bb.0: # %entry623; GENERIC-NEXT: .cfi_def_cfa_offset 0624; GENERIC-NEXT: subi16 sp, sp, 4625; GENERIC-NEXT: .cfi_def_cfa_offset 4626; GENERIC-NEXT: cmplt16 a0, a1627; GENERIC-NEXT: bf16 .LBB16_2628; GENERIC-NEXT: # %bb.1: # %label1629; GENERIC-NEXT: movi16 a0, 1630; GENERIC-NEXT: addi16 sp, sp, 4631; GENERIC-NEXT: rts16632; GENERIC-NEXT: .LBB16_2: # %label2633; GENERIC-NEXT: movi16 a0, 0634; GENERIC-NEXT: addi16 sp, sp, 4635; GENERIC-NEXT: rts16636; CHECK-UGTXT: icmpu32 a0, a1, a0637; CHECK-UGTXT: rts16638entry:639 %icmp = icmp sgt i32 %y, %x640 br i1 %icmp, label %label1, label %label2641label1:642 ret i32 1643label2:644 ret i32 0645}646 647define i32 @brRI_sgt(i32 %x) {648; CHECK-LABEL: brRI_sgt:649; CHECK: # %bb.0: # %entry650; CHECK-NEXT: cmplti16 a0, 11651; CHECK-NEXT: bt32 .LBB17_2652; CHECK-NEXT: # %bb.1: # %label1653; CHECK-NEXT: movi16 a0, 1654; CHECK-NEXT: rts16655; CHECK-NEXT: .LBB17_2: # %label2656; CHECK-NEXT: movi16 a0, 0657; CHECK-NEXT: rts16658;659; GENERIC-LABEL: brRI_sgt:660; GENERIC: # %bb.0: # %entry661; GENERIC-NEXT: .cfi_def_cfa_offset 0662; GENERIC-NEXT: subi16 sp, sp, 4663; GENERIC-NEXT: .cfi_def_cfa_offset 4664; GENERIC-NEXT: cmplti16 a0, 11665; GENERIC-NEXT: bt16 .LBB17_2666; GENERIC-NEXT: # %bb.1: # %label1667; GENERIC-NEXT: movi16 a0, 1668; GENERIC-NEXT: addi16 sp, sp, 4669; GENERIC-NEXT: rts16670; GENERIC-NEXT: .LBB17_2: # %label2671; GENERIC-NEXT: movi16 a0, 0672; GENERIC-NEXT: addi16 sp, sp, 4673; GENERIC-NEXT: rts16674; CHECK-UGTXT: icmpu32 a0, a1, a0675; CHECK-UGTXT: rts16676entry:677 %icmp = icmp sgt i32 %x, 10678 br i1 %icmp, label %label1, label %label2679label1:680 ret i32 1681label2:682 ret i32 0683}684 685define i32 @brR0_sgt(i32 %x) {686; CHECK-LABEL: brR0_sgt:687; CHECK: # %bb.0: # %entry688; CHECK-NEXT: blsz32 a0, .LBB18_2689; CHECK-NEXT: # %bb.1: # %label1690; CHECK-NEXT: movi16 a0, 1691; CHECK-NEXT: rts16692; CHECK-NEXT: .LBB18_2: # %label2693; CHECK-NEXT: movi16 a0, 0694; CHECK-NEXT: rts16695;696; GENERIC-LABEL: brR0_sgt:697; GENERIC: # %bb.0: # %entry698; GENERIC-NEXT: .cfi_def_cfa_offset 0699; GENERIC-NEXT: subi16 sp, sp, 4700; GENERIC-NEXT: .cfi_def_cfa_offset 4701; GENERIC-NEXT: cmplti16 a0, 1702; GENERIC-NEXT: bt16 .LBB18_2703; GENERIC-NEXT: # %bb.1: # %label1704; GENERIC-NEXT: movi16 a0, 1705; GENERIC-NEXT: addi16 sp, sp, 4706; GENERIC-NEXT: rts16707; GENERIC-NEXT: .LBB18_2: # %label2708; GENERIC-NEXT: movi16 a0, 0709; GENERIC-NEXT: addi16 sp, sp, 4710; GENERIC-NEXT: rts16711; CHECK-UGTXT: icmpu32 a0, a1, a0712; CHECK-UGTXT: rts16713entry:714 %icmp = icmp sgt i32 %x, 0715 br i1 %icmp, label %label1, label %label2716label1:717 ret i32 1718label2:719 ret i32 0720}721 722;SGE723define i32 @brRR_sge(i32 %x, i32 %y) {724; CHECK-LABEL: brRR_sge:725; CHECK: # %bb.0: # %entry726; CHECK-NEXT: cmplt16 a1, a0727; CHECK-NEXT: bt32 .LBB19_2728; CHECK-NEXT: # %bb.1: # %label1729; CHECK-NEXT: movi16 a0, 1730; CHECK-NEXT: rts16731; CHECK-NEXT: .LBB19_2: # %label2732; CHECK-NEXT: movi16 a0, 0733; CHECK-NEXT: rts16734;735; GENERIC-LABEL: brRR_sge:736; GENERIC: # %bb.0: # %entry737; GENERIC-NEXT: .cfi_def_cfa_offset 0738; GENERIC-NEXT: subi16 sp, sp, 4739; GENERIC-NEXT: .cfi_def_cfa_offset 4740; GENERIC-NEXT: cmplt16 a1, a0741; GENERIC-NEXT: bt16 .LBB19_2742; GENERIC-NEXT: # %bb.1: # %label1743; GENERIC-NEXT: movi16 a0, 1744; GENERIC-NEXT: addi16 sp, sp, 4745; GENERIC-NEXT: rts16746; GENERIC-NEXT: .LBB19_2: # %label2747; GENERIC-NEXT: movi16 a0, 0748; GENERIC-NEXT: addi16 sp, sp, 4749; GENERIC-NEXT: rts16750; CHECK-UGTXT: icmpu32 a0, a1, a0751; CHECK-UGTXT: rts16752entry:753 %icmp = icmp sge i32 %y, %x754 br i1 %icmp, label %label1, label %label2755label1:756 ret i32 1757label2:758 ret i32 0759}760 761define i32 @brRI_sge(i32 %x) {762; CHECK-LABEL: brRI_sge:763; CHECK: # %bb.0: # %entry764; CHECK-NEXT: cmplti16 a0, 10765; CHECK-NEXT: bt32 .LBB20_2766; CHECK-NEXT: # %bb.1: # %label1767; CHECK-NEXT: movi16 a0, 1768; CHECK-NEXT: rts16769; CHECK-NEXT: .LBB20_2: # %label2770; CHECK-NEXT: movi16 a0, 0771; CHECK-NEXT: rts16772;773; GENERIC-LABEL: brRI_sge:774; GENERIC: # %bb.0: # %entry775; GENERIC-NEXT: .cfi_def_cfa_offset 0776; GENERIC-NEXT: subi16 sp, sp, 4777; GENERIC-NEXT: .cfi_def_cfa_offset 4778; GENERIC-NEXT: cmplti16 a0, 10779; GENERIC-NEXT: bt16 .LBB20_2780; GENERIC-NEXT: # %bb.1: # %label1781; GENERIC-NEXT: movi16 a0, 1782; GENERIC-NEXT: addi16 sp, sp, 4783; GENERIC-NEXT: rts16784; GENERIC-NEXT: .LBB20_2: # %label2785; GENERIC-NEXT: movi16 a0, 0786; GENERIC-NEXT: addi16 sp, sp, 4787; GENERIC-NEXT: rts16788; CHECK-UGTXT: icmpu32 a0, a1, a0789; CHECK-UGTXT: rts16790entry:791 %icmp = icmp sge i32 %x, 10792 br i1 %icmp, label %label1, label %label2793label1:794 ret i32 1795label2:796 ret i32 0797}798 799define i32 @brR0_sge(i32 %x) {800; CHECK-LABEL: brR0_sge:801; CHECK: # %bb.0: # %entry802; CHECK-NEXT: blz32 a0, .LBB21_2803; CHECK-NEXT: # %bb.1: # %label1804; CHECK-NEXT: movi16 a0, 1805; CHECK-NEXT: rts16806; CHECK-NEXT: .LBB21_2: # %label2807; CHECK-NEXT: movi16 a0, 0808; CHECK-NEXT: rts16809;810; GENERIC-LABEL: brR0_sge:811; GENERIC: # %bb.0: # %entry812; GENERIC-NEXT: .cfi_def_cfa_offset 0813; GENERIC-NEXT: subi16 sp, sp, 4814; GENERIC-NEXT: .cfi_def_cfa_offset 4815; GENERIC-NEXT: movi16 a1, 0816; GENERIC-NEXT: cmplt16 a0, a1817; GENERIC-NEXT: bt16 .LBB21_2818; GENERIC-NEXT: # %bb.1: # %label1819; GENERIC-NEXT: movi16 a0, 1820; GENERIC-NEXT: addi16 sp, sp, 4821; GENERIC-NEXT: rts16822; GENERIC-NEXT: .LBB21_2: # %label2823; GENERIC-NEXT: movi16 a0, 0824; GENERIC-NEXT: addi16 sp, sp, 4825; GENERIC-NEXT: rts16826; CHECK-UGTXT: icmpu32 a0, a1, a0827; CHECK-UGTXT: rts16828entry:829 %icmp = icmp sge i32 %x, 0830 br i1 %icmp, label %label1, label %label2831label1:832 ret i32 1833label2:834 ret i32 0835}836 837;SLT838define i32 @brRR_slt(i32 %x, i32 %y) {839; CHECK-LABEL: brRR_slt:840; CHECK: # %bb.0: # %entry841; CHECK-NEXT: cmplt16 a1, a0842; CHECK-NEXT: bf32 .LBB22_2843; CHECK-NEXT: # %bb.1: # %label1844; CHECK-NEXT: movi16 a0, 1845; CHECK-NEXT: rts16846; CHECK-NEXT: .LBB22_2: # %label2847; CHECK-NEXT: movi16 a0, 0848; CHECK-NEXT: rts16849;850; GENERIC-LABEL: brRR_slt:851; GENERIC: # %bb.0: # %entry852; GENERIC-NEXT: .cfi_def_cfa_offset 0853; GENERIC-NEXT: subi16 sp, sp, 4854; GENERIC-NEXT: .cfi_def_cfa_offset 4855; GENERIC-NEXT: cmplt16 a1, a0856; GENERIC-NEXT: bf16 .LBB22_2857; GENERIC-NEXT: # %bb.1: # %label1858; GENERIC-NEXT: movi16 a0, 1859; GENERIC-NEXT: addi16 sp, sp, 4860; GENERIC-NEXT: rts16861; GENERIC-NEXT: .LBB22_2: # %label2862; GENERIC-NEXT: movi16 a0, 0863; GENERIC-NEXT: addi16 sp, sp, 4864; GENERIC-NEXT: rts16865; CHECK-UGTXT: icmpu32 a0, a1, a0866; CHECK-UGTXT: rts16867entry:868 %icmp = icmp slt i32 %y, %x869 br i1 %icmp, label %label1, label %label2870label1:871 ret i32 1872label2:873 ret i32 0874}875 876define i32 @brRI_slt(i32 %x) {877; CHECK-LABEL: brRI_slt:878; CHECK: # %bb.0: # %entry879; CHECK-NEXT: movi16 a1, 9880; CHECK-NEXT: cmplt16 a1, a0881; CHECK-NEXT: bt32 .LBB23_2882; CHECK-NEXT: # %bb.1: # %label1883; CHECK-NEXT: movi16 a0, 1884; CHECK-NEXT: rts16885; CHECK-NEXT: .LBB23_2: # %label2886; CHECK-NEXT: movi16 a0, 0887; CHECK-NEXT: rts16888;889; GENERIC-LABEL: brRI_slt:890; GENERIC: # %bb.0: # %entry891; GENERIC-NEXT: .cfi_def_cfa_offset 0892; GENERIC-NEXT: subi16 sp, sp, 4893; GENERIC-NEXT: .cfi_def_cfa_offset 4894; GENERIC-NEXT: movi16 a1, 9895; GENERIC-NEXT: cmplt16 a1, a0896; GENERIC-NEXT: bt16 .LBB23_2897; GENERIC-NEXT: # %bb.1: # %label1898; GENERIC-NEXT: movi16 a0, 1899; GENERIC-NEXT: addi16 sp, sp, 4900; GENERIC-NEXT: rts16901; GENERIC-NEXT: .LBB23_2: # %label2902; GENERIC-NEXT: movi16 a0, 0903; GENERIC-NEXT: addi16 sp, sp, 4904; GENERIC-NEXT: rts16905; CHECK-UGTXT: icmpu32 a0, a1, a0906; CHECK-UGTXT: rts16907entry:908 %icmp = icmp slt i32 %x, 10909 br i1 %icmp, label %label1, label %label2910label1:911 ret i32 1912label2:913 ret i32 0914}915 916define i32 @brR0_slt(i32 %x) {917; CHECK-LABEL: brR0_slt:918; CHECK: # %bb.0: # %entry919; CHECK-NEXT: blz32 a0, .LBB24_2920; CHECK-NEXT: # %bb.1: # %label2921; CHECK-NEXT: movi16 a0, 0922; CHECK-NEXT: rts16923; CHECK-NEXT: .LBB24_2: # %label1924; CHECK-NEXT: movi16 a0, 1925; CHECK-NEXT: rts16926;927; GENERIC-LABEL: brR0_slt:928; GENERIC: # %bb.0: # %entry929; GENERIC-NEXT: .cfi_def_cfa_offset 0930; GENERIC-NEXT: subi16 sp, sp, 4931; GENERIC-NEXT: .cfi_def_cfa_offset 4932; GENERIC-NEXT: movi16 a1, 255933; GENERIC-NEXT: lsli16 a2, a1, 24934; GENERIC-NEXT: lsli16 a3, a1, 16935; GENERIC-NEXT: or16 a3, a2936; GENERIC-NEXT: lsli16 a2, a1, 8937; GENERIC-NEXT: or16 a2, a3938; GENERIC-NEXT: or16 a2, a1939; GENERIC-NEXT: cmplt16 a2, a0940; GENERIC-NEXT: bf16 .LBB24_2941; GENERIC-NEXT: # %bb.1: # %label2942; GENERIC-NEXT: movi16 a0, 0943; GENERIC-NEXT: addi16 sp, sp, 4944; GENERIC-NEXT: rts16945; GENERIC-NEXT: .LBB24_2: # %label1946; GENERIC-NEXT: movi16 a0, 1947; GENERIC-NEXT: addi16 sp, sp, 4948; GENERIC-NEXT: rts16949; CHECK-UGTXT: icmpu32 a0, a1, a0950; CHECK-UGTXT: rts16951entry:952 %icmp = icmp slt i32 %x, 0953 br i1 %icmp, label %label1, label %label2954label1:955 ret i32 1956label2:957 ret i32 0958}959 960;SLE961define i32 @brRR_sle(i32 %x, i32 %y) {962; CHECK-LABEL: brRR_sle:963; CHECK: # %bb.0: # %entry964; CHECK-NEXT: cmplt16 a0, a1965; CHECK-NEXT: bt32 .LBB25_2966; CHECK-NEXT: # %bb.1: # %label1967; CHECK-NEXT: movi16 a0, 1968; CHECK-NEXT: rts16969; CHECK-NEXT: .LBB25_2: # %label2970; CHECK-NEXT: movi16 a0, 0971; CHECK-NEXT: rts16972;973; GENERIC-LABEL: brRR_sle:974; GENERIC: # %bb.0: # %entry975; GENERIC-NEXT: .cfi_def_cfa_offset 0976; GENERIC-NEXT: subi16 sp, sp, 4977; GENERIC-NEXT: .cfi_def_cfa_offset 4978; GENERIC-NEXT: cmplt16 a0, a1979; GENERIC-NEXT: bt16 .LBB25_2980; GENERIC-NEXT: # %bb.1: # %label1981; GENERIC-NEXT: movi16 a0, 1982; GENERIC-NEXT: addi16 sp, sp, 4983; GENERIC-NEXT: rts16984; GENERIC-NEXT: .LBB25_2: # %label2985; GENERIC-NEXT: movi16 a0, 0986; GENERIC-NEXT: addi16 sp, sp, 4987; GENERIC-NEXT: rts16988; CHECK-UGTXT: icmpu32 a0, a1, a0989; CHECK-UGTXT: rts16990entry:991 %icmp = icmp sle i32 %y, %x992 br i1 %icmp, label %label1, label %label2993label1:994 ret i32 1995label2:996 ret i32 0997}998 999define i32 @brRI_sle(i32 %x) {1000; CHECK-LABEL: brRI_sle:1001; CHECK: # %bb.0: # %entry1002; CHECK-NEXT: movi16 a1, 101003; CHECK-NEXT: cmplt16 a1, a01004; CHECK-NEXT: bt32 .LBB26_21005; CHECK-NEXT: # %bb.1: # %label11006; CHECK-NEXT: movi16 a0, 11007; CHECK-NEXT: rts161008; CHECK-NEXT: .LBB26_2: # %label21009; CHECK-NEXT: movi16 a0, 01010; CHECK-NEXT: rts161011;1012; GENERIC-LABEL: brRI_sle:1013; GENERIC: # %bb.0: # %entry1014; GENERIC-NEXT: .cfi_def_cfa_offset 01015; GENERIC-NEXT: subi16 sp, sp, 41016; GENERIC-NEXT: .cfi_def_cfa_offset 41017; GENERIC-NEXT: movi16 a1, 101018; GENERIC-NEXT: cmplt16 a1, a01019; GENERIC-NEXT: bt16 .LBB26_21020; GENERIC-NEXT: # %bb.1: # %label11021; GENERIC-NEXT: movi16 a0, 11022; GENERIC-NEXT: addi16 sp, sp, 41023; GENERIC-NEXT: rts161024; GENERIC-NEXT: .LBB26_2: # %label21025; GENERIC-NEXT: movi16 a0, 01026; GENERIC-NEXT: addi16 sp, sp, 41027; GENERIC-NEXT: rts161028; CHECK-UGTXT: icmpu32 a0, a1, a01029; CHECK-UGTXT: rts161030entry:1031 %icmp = icmp sle i32 %x, 101032 br i1 %icmp, label %label1, label %label21033label1:1034 ret i32 11035label2:1036 ret i32 01037}1038 1039define i32 @brR0_sle(i32 %x) {1040; CHECK-LABEL: brR0_sle:1041; CHECK: # %bb.0: # %entry1042; CHECK-NEXT: bhz32 a0, .LBB27_21043; CHECK-NEXT: # %bb.1: # %label11044; CHECK-NEXT: movi16 a0, 11045; CHECK-NEXT: rts161046; CHECK-NEXT: .LBB27_2: # %label21047; CHECK-NEXT: movi16 a0, 01048; CHECK-NEXT: rts161049;1050; GENERIC-LABEL: brR0_sle:1051; GENERIC: # %bb.0: # %entry1052; GENERIC-NEXT: .cfi_def_cfa_offset 01053; GENERIC-NEXT: subi16 sp, sp, 41054; GENERIC-NEXT: .cfi_def_cfa_offset 41055; GENERIC-NEXT: movi16 a1, 01056; GENERIC-NEXT: cmplt16 a1, a01057; GENERIC-NEXT: bt16 .LBB27_21058; GENERIC-NEXT: # %bb.1: # %label11059; GENERIC-NEXT: movi16 a0, 11060; GENERIC-NEXT: addi16 sp, sp, 41061; GENERIC-NEXT: rts161062; GENERIC-NEXT: .LBB27_2: # %label21063; GENERIC-NEXT: movi16 a0, 01064; GENERIC-NEXT: addi16 sp, sp, 41065; GENERIC-NEXT: rts161066; CHECK-UGTXT: icmpu32 a0, a1, a01067; CHECK-UGTXT: rts161068entry:1069 %icmp = icmp sle i32 %x, 01070 br i1 %icmp, label %label1, label %label21071label1:1072 ret i32 11073label2:1074 ret i32 01075}1076 1077 1078define i32 @brCBit(i1 %c) {1079; CHECK-LABEL: brCBit:1080; CHECK: # %bb.0: # %entry1081; CHECK-NEXT: andi32 a0, a0, 11082; CHECK-NEXT: bez32 a0, .LBB28_21083; CHECK-NEXT: # %bb.1: # %label11084; CHECK-NEXT: movi16 a0, 11085; CHECK-NEXT: rts161086; CHECK-NEXT: .LBB28_2: # %label21087; CHECK-NEXT: movi16 a0, 01088; CHECK-NEXT: rts161089;1090; GENERIC-LABEL: brCBit:1091; GENERIC: # %bb.0: # %entry1092; GENERIC-NEXT: .cfi_def_cfa_offset 01093; GENERIC-NEXT: subi16 sp, sp, 41094; GENERIC-NEXT: .cfi_def_cfa_offset 41095; GENERIC-NEXT: movi16 a1, 11096; GENERIC-NEXT: and16 a1, a01097; GENERIC-NEXT: cmpnei16 a1, 01098; GENERIC-NEXT: bf16 .LBB28_21099; GENERIC-NEXT: # %bb.1: # %label11100; GENERIC-NEXT: movi16 a0, 11101; GENERIC-NEXT: addi16 sp, sp, 41102; GENERIC-NEXT: rts161103; GENERIC-NEXT: .LBB28_2: # %label21104; GENERIC-NEXT: movi16 a0, 01105; GENERIC-NEXT: addi16 sp, sp, 41106; GENERIC-NEXT: rts161107entry:1108 br i1 %c, label %label1, label %label21109label1:1110 ret i32 11111label2:1112 ret i32 01113}1114 1115 1116;EQ1117define i64 @brRR_i64_eq(i64 %x, i64 %y) {1118; CHECK-LABEL: brRR_i64_eq:1119; CHECK: # %bb.0: # %entry1120; CHECK-NEXT: xor16 a1, a31121; CHECK-NEXT: xor16 a0, a21122; CHECK-NEXT: or16 a0, a11123; CHECK-NEXT: bnez32 a0, .LBB29_21124; CHECK-NEXT: # %bb.1: # %label11125; CHECK-NEXT: movi16 a0, 11126; CHECK-NEXT: movi16 a1, 01127; CHECK-NEXT: rts161128; CHECK-NEXT: .LBB29_2: # %label21129; CHECK-NEXT: movi16 a0, 01130; CHECK-NEXT: movi16 a1, 01131; CHECK-NEXT: rts161132;1133; GENERIC-LABEL: brRR_i64_eq:1134; GENERIC: # %bb.0: # %entry1135; GENERIC-NEXT: .cfi_def_cfa_offset 01136; GENERIC-NEXT: subi16 sp, sp, 41137; GENERIC-NEXT: .cfi_def_cfa_offset 41138; GENERIC-NEXT: xor16 a1, a31139; GENERIC-NEXT: xor16 a0, a21140; GENERIC-NEXT: or16 a0, a11141; GENERIC-NEXT: cmpnei16 a0, 01142; GENERIC-NEXT: bt16 .LBB29_21143; GENERIC-NEXT: # %bb.1: # %label11144; GENERIC-NEXT: movi16 a0, 11145; GENERIC-NEXT: br32 .LBB29_31146; GENERIC-NEXT: .LBB29_2: # %label21147; GENERIC-NEXT: movi16 a0, 01148; GENERIC-NEXT: .LBB29_3: # %label11149; GENERIC-NEXT: movi16 a1, 01150; GENERIC-NEXT: addi16 sp, sp, 41151; GENERIC-NEXT: rts161152entry:1153 %icmp = icmp eq i64 %y, %x1154 br i1 %icmp, label %label1, label %label21155label1:1156 ret i64 11157label2:1158 ret i64 01159}1160 1161define i64 @brR0_i64_eq(i64 %x) {1162; CHECK-LABEL: brR0_i64_eq:1163; CHECK: # %bb.0: # %entry1164; CHECK-NEXT: xori32 a0, a0, 101165; CHECK-NEXT: or16 a0, a11166; CHECK-NEXT: bnez32 a0, .LBB30_21167; CHECK-NEXT: # %bb.1: # %label11168; CHECK-NEXT: movi16 a0, 11169; CHECK-NEXT: movi16 a1, 01170; CHECK-NEXT: rts161171; CHECK-NEXT: .LBB30_2: # %label21172; CHECK-NEXT: movi16 a0, 01173; CHECK-NEXT: movi16 a1, 01174; CHECK-NEXT: rts161175;1176; GENERIC-LABEL: brR0_i64_eq:1177; GENERIC: # %bb.0: # %entry1178; GENERIC-NEXT: .cfi_def_cfa_offset 01179; GENERIC-NEXT: subi16 sp, sp, 41180; GENERIC-NEXT: .cfi_def_cfa_offset 41181; GENERIC-NEXT: movi16 a2, 101182; GENERIC-NEXT: xor16 a2, a01183; GENERIC-NEXT: or16 a2, a11184; GENERIC-NEXT: cmpnei16 a2, 01185; GENERIC-NEXT: bt16 .LBB30_21186; GENERIC-NEXT: # %bb.1: # %label11187; GENERIC-NEXT: movi16 a0, 11188; GENERIC-NEXT: br32 .LBB30_31189; GENERIC-NEXT: .LBB30_2: # %label21190; GENERIC-NEXT: movi16 a0, 01191; GENERIC-NEXT: .LBB30_3: # %label11192; GENERIC-NEXT: movi16 a1, 01193; GENERIC-NEXT: addi16 sp, sp, 41194; GENERIC-NEXT: rts161195entry:1196 %icmp = icmp eq i64 %x, 101197 br i1 %icmp, label %label1, label %label21198label1:1199 ret i64 11200label2:1201 ret i64 01202}1203 1204define i64 @brRI_i64_eq(i64 %x) {1205; CHECK-LABEL: brRI_i64_eq:1206; CHECK: # %bb.0: # %entry1207; CHECK-NEXT: or16 a0, a11208; CHECK-NEXT: bez32 a0, .LBB31_21209; CHECK-NEXT: # %bb.1: # %label21210; CHECK-NEXT: movi16 a0, 01211; CHECK-NEXT: movi16 a1, 01212; CHECK-NEXT: rts161213; CHECK-NEXT: .LBB31_2: # %label11214; CHECK-NEXT: movi16 a0, 11215; CHECK-NEXT: movi16 a1, 01216; CHECK-NEXT: rts161217;1218; GENERIC-LABEL: brRI_i64_eq:1219; GENERIC: # %bb.0: # %entry1220; GENERIC-NEXT: .cfi_def_cfa_offset 01221; GENERIC-NEXT: subi16 sp, sp, 41222; GENERIC-NEXT: .cfi_def_cfa_offset 41223; GENERIC-NEXT: or16 a0, a11224; GENERIC-NEXT: cmpnei16 a0, 01225; GENERIC-NEXT: bf16 .LBB31_21226; GENERIC-NEXT: # %bb.1: # %label21227; GENERIC-NEXT: movi16 a0, 01228; GENERIC-NEXT: br32 .LBB31_31229; GENERIC-NEXT: .LBB31_2: # %label11230; GENERIC-NEXT: movi16 a0, 11231; GENERIC-NEXT: .LBB31_3: # %label11232; GENERIC-NEXT: movi16 a1, 01233; GENERIC-NEXT: addi16 sp, sp, 41234; GENERIC-NEXT: rts161235entry:1236 %icmp = icmp eq i64 %x, 01237 br i1 %icmp, label %label1, label %label21238label1:1239 ret i64 11240label2:1241 ret i64 01242}1243 1244;NE1245define i64 @brRR_i64_ne(i64 %x, i64 %y) {1246; CHECK-LABEL: brRR_i64_ne:1247; CHECK: # %bb.0: # %entry1248; CHECK-NEXT: xor16 a1, a31249; CHECK-NEXT: xor16 a0, a21250; CHECK-NEXT: or16 a0, a11251; CHECK-NEXT: bez32 a0, .LBB32_21252; CHECK-NEXT: # %bb.1: # %label11253; CHECK-NEXT: movi16 a0, 11254; CHECK-NEXT: movi16 a1, 01255; CHECK-NEXT: rts161256; CHECK-NEXT: .LBB32_2: # %label21257; CHECK-NEXT: movi16 a0, 01258; CHECK-NEXT: movi16 a1, 01259; CHECK-NEXT: rts161260;1261; GENERIC-LABEL: brRR_i64_ne:1262; GENERIC: # %bb.0: # %entry1263; GENERIC-NEXT: .cfi_def_cfa_offset 01264; GENERIC-NEXT: subi16 sp, sp, 41265; GENERIC-NEXT: .cfi_def_cfa_offset 41266; GENERIC-NEXT: xor16 a1, a31267; GENERIC-NEXT: xor16 a0, a21268; GENERIC-NEXT: or16 a0, a11269; GENERIC-NEXT: cmpnei16 a0, 01270; GENERIC-NEXT: bf16 .LBB32_21271; GENERIC-NEXT: # %bb.1: # %label11272; GENERIC-NEXT: movi16 a0, 11273; GENERIC-NEXT: br32 .LBB32_31274; GENERIC-NEXT: .LBB32_2: # %label21275; GENERIC-NEXT: movi16 a0, 01276; GENERIC-NEXT: .LBB32_3: # %label11277; GENERIC-NEXT: movi16 a1, 01278; GENERIC-NEXT: addi16 sp, sp, 41279; GENERIC-NEXT: rts161280entry:1281 %icmp = icmp ne i64 %y, %x1282 br i1 %icmp, label %label1, label %label21283label1:1284 ret i64 11285label2:1286 ret i64 01287}1288 1289define i64 @brRI_i64_ne(i64 %x) {1290; CHECK-LABEL: brRI_i64_ne:1291; CHECK: # %bb.0: # %entry1292; CHECK-NEXT: xori32 a0, a0, 101293; CHECK-NEXT: or16 a0, a11294; CHECK-NEXT: bez32 a0, .LBB33_21295; CHECK-NEXT: # %bb.1: # %label11296; CHECK-NEXT: movi16 a0, 11297; CHECK-NEXT: movi16 a1, 01298; CHECK-NEXT: rts161299; CHECK-NEXT: .LBB33_2: # %label21300; CHECK-NEXT: movi16 a0, 01301; CHECK-NEXT: movi16 a1, 01302; CHECK-NEXT: rts161303;1304; GENERIC-LABEL: brRI_i64_ne:1305; GENERIC: # %bb.0: # %entry1306; GENERIC-NEXT: .cfi_def_cfa_offset 01307; GENERIC-NEXT: subi16 sp, sp, 41308; GENERIC-NEXT: .cfi_def_cfa_offset 41309; GENERIC-NEXT: movi16 a2, 101310; GENERIC-NEXT: xor16 a2, a01311; GENERIC-NEXT: or16 a2, a11312; GENERIC-NEXT: cmpnei16 a2, 01313; GENERIC-NEXT: bf16 .LBB33_21314; GENERIC-NEXT: # %bb.1: # %label11315; GENERIC-NEXT: movi16 a0, 11316; GENERIC-NEXT: br32 .LBB33_31317; GENERIC-NEXT: .LBB33_2: # %label21318; GENERIC-NEXT: movi16 a0, 01319; GENERIC-NEXT: .LBB33_3: # %label11320; GENERIC-NEXT: movi16 a1, 01321; GENERIC-NEXT: addi16 sp, sp, 41322; GENERIC-NEXT: rts161323entry:1324 %icmp = icmp ne i64 %x, 101325 br i1 %icmp, label %label1, label %label21326label1:1327 ret i64 11328label2:1329 ret i64 01330}1331 1332define i64 @brR0_i64_ne(i64 %x) {1333; CHECK-LABEL: brR0_i64_ne:1334; CHECK: # %bb.0: # %entry1335; CHECK-NEXT: or16 a0, a11336; CHECK-NEXT: bez32 a0, .LBB34_21337; CHECK-NEXT: # %bb.1: # %label11338; CHECK-NEXT: movi16 a0, 11339; CHECK-NEXT: movi16 a1, 01340; CHECK-NEXT: rts161341; CHECK-NEXT: .LBB34_2: # %label21342; CHECK-NEXT: movi16 a0, 01343; CHECK-NEXT: movi16 a1, 01344; CHECK-NEXT: rts161345;1346; GENERIC-LABEL: brR0_i64_ne:1347; GENERIC: # %bb.0: # %entry1348; GENERIC-NEXT: .cfi_def_cfa_offset 01349; GENERIC-NEXT: subi16 sp, sp, 41350; GENERIC-NEXT: .cfi_def_cfa_offset 41351; GENERIC-NEXT: or16 a0, a11352; GENERIC-NEXT: cmpnei16 a0, 01353; GENERIC-NEXT: bf16 .LBB34_21354; GENERIC-NEXT: # %bb.1: # %label11355; GENERIC-NEXT: movi16 a0, 11356; GENERIC-NEXT: br32 .LBB34_31357; GENERIC-NEXT: .LBB34_2: # %label21358; GENERIC-NEXT: movi16 a0, 01359; GENERIC-NEXT: .LBB34_3: # %label11360; GENERIC-NEXT: movi16 a1, 01361; GENERIC-NEXT: addi16 sp, sp, 41362; GENERIC-NEXT: rts161363entry:1364 %icmp = icmp ne i64 %x, 01365 br i1 %icmp, label %label1, label %label21366label1:1367 ret i64 11368label2:1369 ret i64 01370}1371 1372;UGT1373define i64 @brRR_i64_ugt(i64 %x, i64 %y) {1374; CHECK-LABEL: brRR_i64_ugt:1375; CHECK: # %bb.0: # %entry1376; CHECK-NEXT: .cfi_def_cfa_offset 01377; CHECK-NEXT: subi16 sp, sp, 161378; CHECK-NEXT: .cfi_def_cfa_offset 161379; CHECK-NEXT: cmphs16 a1, a31380; CHECK-NEXT: mvc32 t01381; CHECK-NEXT: st32.w t0, (sp, 12)1382; CHECK-NEXT: cmphs16 a0, a21383; CHECK-NEXT: mvc32 a01384; CHECK-NEXT: st16.w a0, (sp, 4)1385; CHECK-NEXT: cmpne16 a3, a11386; CHECK-NEXT: mvc32 a01387; CHECK-NEXT: st16.w a0, (sp, 8)1388; CHECK-NEXT: ld16.w a0, (sp, 4)1389; CHECK-NEXT: btsti16 a0, 01390; CHECK-NEXT: mvc32 a01391; CHECK-NEXT: ld16.w a1, (sp, 12)1392; CHECK-NEXT: btsti16 a1, 01393; CHECK-NEXT: mvc32 a11394; CHECK-NEXT: ld16.w a2, (sp, 8)1395; CHECK-NEXT: btsti16 a2, 01396; CHECK-NEXT: movf32 a1, a01397; CHECK-NEXT: btsti16 a1, 01398; CHECK-NEXT: bt32 .LBB35_21399; CHECK-NEXT: # %bb.1: # %label11400; CHECK-NEXT: movi16 a0, 11401; CHECK-NEXT: br32 .LBB35_31402; CHECK-NEXT: .LBB35_2: # %label21403; CHECK-NEXT: movi16 a0, 01404; CHECK-NEXT: .LBB35_3: # %label11405; CHECK-NEXT: movi16 a1, 01406; CHECK-NEXT: addi16 sp, sp, 161407; CHECK-NEXT: rts161408;1409; GENERIC-LABEL: brRR_i64_ugt:1410; GENERIC: # %bb.0: # %entry1411; GENERIC-NEXT: subi16 sp, sp, 81412; GENERIC-NEXT: .cfi_def_cfa_offset 81413; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1414; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1415; GENERIC-NEXT: .cfi_offset l1, -41416; GENERIC-NEXT: .cfi_offset l0, -81417; GENERIC-NEXT: subi16 sp, sp, 41418; GENERIC-NEXT: .cfi_def_cfa_offset 121419; GENERIC-NEXT: cmphs16 a1, a31420; GENERIC-NEXT: mvcv16 l11421; GENERIC-NEXT: movi16 l0, 11422; GENERIC-NEXT: cmphs16 a0, a21423; GENERIC-NEXT: mvcv16 a01424; GENERIC-NEXT: cmpne16 a3, a11425; GENERIC-NEXT: mvcv16 a11426; GENERIC-NEXT: btsti16 a1, 01427; GENERIC-NEXT: bt16 .LBB35_31428; GENERIC-NEXT: # %bb.1: # %entry1429; GENERIC-NEXT: subu16 l0, l11430; GENERIC-NEXT: btsti16 l0, 01431; GENERIC-NEXT: bf16 .LBB35_41432; GENERIC-NEXT: .LBB35_2: # %label21433; GENERIC-NEXT: movi16 a0, 01434; GENERIC-NEXT: br32 .LBB35_51435; GENERIC-NEXT: .LBB35_3:1436; GENERIC-NEXT: subu16 l0, a01437; GENERIC-NEXT: btsti16 l0, 01438; GENERIC-NEXT: bt16 .LBB35_21439; GENERIC-NEXT: .LBB35_4: # %label11440; GENERIC-NEXT: movi16 a0, 11441; GENERIC-NEXT: .LBB35_5: # %label11442; GENERIC-NEXT: movi16 a1, 01443; GENERIC-NEXT: addi16 sp, sp, 41444; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1445; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1446; GENERIC-NEXT: addi16 sp, sp, 81447; GENERIC-NEXT: rts161448; CHECK-UGTXT: icmpu32 a0, a1, a01449; CHECK-UGTXT: rts161450entry:1451 %icmp = icmp ugt i64 %y, %x1452 br i1 %icmp, label %label1, label %label21453label1:1454 ret i64 11455label2:1456 ret i64 01457}1458 1459define i64 @brRI_i64_ugt(i64 %x) {1460; CHECK-LABEL: brRI_i64_ugt:1461; CHECK: # %bb.0: # %entry1462; CHECK-NEXT: .cfi_def_cfa_offset 01463; CHECK-NEXT: subi16 sp, sp, 81464; CHECK-NEXT: .cfi_def_cfa_offset 81465; CHECK-NEXT: cmpnei16 a1, 01466; CHECK-NEXT: mvc32 a11467; CHECK-NEXT: st16.w a1, (sp, 4)1468; CHECK-NEXT: cmphsi16 a0, 111469; CHECK-NEXT: mvcv16 a01470; CHECK-NEXT: movi16 a1, 01471; CHECK-NEXT: ld16.w a2, (sp, 4)1472; CHECK-NEXT: btsti16 a2, 01473; CHECK-NEXT: movf32 a1, a01474; CHECK-NEXT: btsti16 a1, 01475; CHECK-NEXT: bt32 .LBB36_21476; CHECK-NEXT: # %bb.1: # %label11477; CHECK-NEXT: movi16 a0, 11478; CHECK-NEXT: br32 .LBB36_31479; CHECK-NEXT: .LBB36_2: # %label21480; CHECK-NEXT: movi16 a0, 01481; CHECK-NEXT: .LBB36_3: # %label11482; CHECK-NEXT: movi16 a1, 01483; CHECK-NEXT: addi16 sp, sp, 81484; CHECK-NEXT: rts161485;1486; GENERIC-LABEL: brRI_i64_ugt:1487; GENERIC: # %bb.0: # %entry1488; GENERIC-NEXT: .cfi_def_cfa_offset 01489; GENERIC-NEXT: subi16 sp, sp, 41490; GENERIC-NEXT: .cfi_def_cfa_offset 41491; GENERIC-NEXT: cmphsi16 a0, 111492; GENERIC-NEXT: mvcv16 a01493; GENERIC-NEXT: cmpnei16 a1, 01494; GENERIC-NEXT: mvcv16 a11495; GENERIC-NEXT: btsti16 a1, 01496; GENERIC-NEXT: bt16 .LBB36_21497; GENERIC-NEXT: # %bb.1: # %entry1498; GENERIC-NEXT: movi16 a0, 01499; GENERIC-NEXT: .LBB36_2: # %entry1500; GENERIC-NEXT: btsti16 a0, 01501; GENERIC-NEXT: bt16 .LBB36_41502; GENERIC-NEXT: # %bb.3: # %label11503; GENERIC-NEXT: movi16 a0, 11504; GENERIC-NEXT: br32 .LBB36_51505; GENERIC-NEXT: .LBB36_4: # %label21506; GENERIC-NEXT: movi16 a0, 01507; GENERIC-NEXT: .LBB36_5: # %label11508; GENERIC-NEXT: movi16 a1, 01509; GENERIC-NEXT: addi16 sp, sp, 41510; GENERIC-NEXT: rts161511; CHECK-UGTXT: icmpu32 a0, a1, a01512; CHECK-UGTXT: rts161513entry:1514 %icmp = icmp ugt i64 %x, 101515 br i1 %icmp, label %label1, label %label21516label1:1517 ret i64 11518label2:1519 ret i64 01520}1521 1522define i64 @brR0_i64_ugt(i64 %x) {1523; CHECK-LABEL: brR0_i64_ugt:1524; CHECK: # %bb.0: # %entry1525; CHECK-NEXT: or16 a0, a11526; CHECK-NEXT: bez32 a0, .LBB37_21527; CHECK-NEXT: # %bb.1: # %label11528; CHECK-NEXT: movi16 a0, 11529; CHECK-NEXT: movi16 a1, 01530; CHECK-NEXT: rts161531; CHECK-NEXT: .LBB37_2: # %label21532; CHECK-NEXT: movi16 a0, 01533; CHECK-NEXT: movi16 a1, 01534; CHECK-NEXT: rts161535;1536; GENERIC-LABEL: brR0_i64_ugt:1537; GENERIC: # %bb.0: # %entry1538; GENERIC-NEXT: .cfi_def_cfa_offset 01539; GENERIC-NEXT: subi16 sp, sp, 41540; GENERIC-NEXT: .cfi_def_cfa_offset 41541; GENERIC-NEXT: or16 a0, a11542; GENERIC-NEXT: cmpnei16 a0, 01543; GENERIC-NEXT: bf16 .LBB37_21544; GENERIC-NEXT: # %bb.1: # %label11545; GENERIC-NEXT: movi16 a0, 11546; GENERIC-NEXT: br32 .LBB37_31547; GENERIC-NEXT: .LBB37_2: # %label21548; GENERIC-NEXT: movi16 a0, 01549; GENERIC-NEXT: .LBB37_3: # %label11550; GENERIC-NEXT: movi16 a1, 01551; GENERIC-NEXT: addi16 sp, sp, 41552; GENERIC-NEXT: rts161553; CHECK-UGTXT: icmpu32 a0, a1, a01554; CHECK-UGTXT: rts161555entry:1556 %icmp = icmp ugt i64 %x, 01557 br i1 %icmp, label %label1, label %label21558label1:1559 ret i64 11560label2:1561 ret i64 01562}1563 1564;UGE1565define i64 @brRR_i64_uge(i64 %x, i64 %y) {1566; CHECK-LABEL: brRR_i64_uge:1567; CHECK: # %bb.0: # %entry1568; CHECK-NEXT: .cfi_def_cfa_offset 01569; CHECK-NEXT: subi16 sp, sp, 81570; CHECK-NEXT: .cfi_def_cfa_offset 81571; CHECK-NEXT: cmpne16 a3, a11572; CHECK-NEXT: mvc32 t01573; CHECK-NEXT: st32.w t0, (sp, 4)1574; CHECK-NEXT: cmphs16 a3, a11575; CHECK-NEXT: mvcv16 a11576; CHECK-NEXT: cmphs16 a2, a01577; CHECK-NEXT: mvcv16 a01578; CHECK-NEXT: ld16.w a2, (sp, 4)1579; CHECK-NEXT: btsti16 a2, 01580; CHECK-NEXT: movf32 a1, a01581; CHECK-NEXT: btsti16 a1, 01582; CHECK-NEXT: bt32 .LBB38_21583; CHECK-NEXT: # %bb.1: # %label11584; CHECK-NEXT: movi16 a0, 11585; CHECK-NEXT: br32 .LBB38_31586; CHECK-NEXT: .LBB38_2: # %label21587; CHECK-NEXT: movi16 a0, 01588; CHECK-NEXT: .LBB38_3: # %label11589; CHECK-NEXT: movi16 a1, 01590; CHECK-NEXT: addi16 sp, sp, 81591; CHECK-NEXT: rts161592;1593; GENERIC-LABEL: brRR_i64_uge:1594; GENERIC: # %bb.0: # %entry1595; GENERIC-NEXT: subi16 sp, sp, 41596; GENERIC-NEXT: .cfi_def_cfa_offset 41597; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1598; GENERIC-NEXT: .cfi_offset l0, -41599; GENERIC-NEXT: subi16 sp, sp, 41600; GENERIC-NEXT: .cfi_def_cfa_offset 81601; GENERIC-NEXT: cmphs16 a3, a11602; GENERIC-NEXT: mvcv16 l01603; GENERIC-NEXT: cmphs16 a2, a01604; GENERIC-NEXT: mvcv16 a01605; GENERIC-NEXT: cmpne16 a3, a11606; GENERIC-NEXT: mvcv16 a11607; GENERIC-NEXT: btsti16 a1, 01608; GENERIC-NEXT: bt16 .LBB38_21609; GENERIC-NEXT: # %bb.1: # %entry1610; GENERIC-NEXT: mov16 a0, l01611; GENERIC-NEXT: .LBB38_2: # %entry1612; GENERIC-NEXT: btsti16 a0, 01613; GENERIC-NEXT: bt16 .LBB38_41614; GENERIC-NEXT: # %bb.3: # %label11615; GENERIC-NEXT: movi16 a0, 11616; GENERIC-NEXT: br32 .LBB38_51617; GENERIC-NEXT: .LBB38_4: # %label21618; GENERIC-NEXT: movi16 a0, 01619; GENERIC-NEXT: .LBB38_5: # %label11620; GENERIC-NEXT: movi16 a1, 01621; GENERIC-NEXT: addi16 sp, sp, 41622; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1623; GENERIC-NEXT: addi16 sp, sp, 41624; GENERIC-NEXT: rts161625; CHECK-UGTXT: icmpu32 a0, a1, a01626; CHECK-UGTXT: rts161627entry:1628 %icmp = icmp uge i64 %y, %x1629 br i1 %icmp, label %label1, label %label21630label1:1631 ret i64 11632label2:1633 ret i64 01634}1635 1636define i64 @brRI_i64_uge(i64 %x) {1637; CHECK-LABEL: brRI_i64_uge:1638; CHECK: # %bb.0: # %entry1639; CHECK-NEXT: .cfi_def_cfa_offset 01640; CHECK-NEXT: subi16 sp, sp, 81641; CHECK-NEXT: .cfi_def_cfa_offset 81642; CHECK-NEXT: cmpnei16 a1, 01643; CHECK-NEXT: mvc32 a11644; CHECK-NEXT: st16.w a1, (sp, 4)1645; CHECK-NEXT: cmphsi16 a0, 101646; CHECK-NEXT: mvcv16 a01647; CHECK-NEXT: movi16 a1, 01648; CHECK-NEXT: ld16.w a2, (sp, 4)1649; CHECK-NEXT: btsti16 a2, 01650; CHECK-NEXT: movf32 a1, a01651; CHECK-NEXT: btsti16 a1, 01652; CHECK-NEXT: bt32 .LBB39_21653; CHECK-NEXT: # %bb.1: # %label11654; CHECK-NEXT: movi16 a0, 11655; CHECK-NEXT: br32 .LBB39_31656; CHECK-NEXT: .LBB39_2: # %label21657; CHECK-NEXT: movi16 a0, 01658; CHECK-NEXT: .LBB39_3: # %label11659; CHECK-NEXT: movi16 a1, 01660; CHECK-NEXT: addi16 sp, sp, 81661; CHECK-NEXT: rts161662;1663; GENERIC-LABEL: brRI_i64_uge:1664; GENERIC: # %bb.0: # %entry1665; GENERIC-NEXT: .cfi_def_cfa_offset 01666; GENERIC-NEXT: subi16 sp, sp, 41667; GENERIC-NEXT: .cfi_def_cfa_offset 41668; GENERIC-NEXT: cmphsi16 a0, 101669; GENERIC-NEXT: mvcv16 a01670; GENERIC-NEXT: cmpnei16 a1, 01671; GENERIC-NEXT: mvcv16 a11672; GENERIC-NEXT: btsti16 a1, 01673; GENERIC-NEXT: bt16 .LBB39_21674; GENERIC-NEXT: # %bb.1: # %entry1675; GENERIC-NEXT: movi16 a0, 01676; GENERIC-NEXT: .LBB39_2: # %entry1677; GENERIC-NEXT: btsti16 a0, 01678; GENERIC-NEXT: bt16 .LBB39_41679; GENERIC-NEXT: # %bb.3: # %label11680; GENERIC-NEXT: movi16 a0, 11681; GENERIC-NEXT: br32 .LBB39_51682; GENERIC-NEXT: .LBB39_4: # %label21683; GENERIC-NEXT: movi16 a0, 01684; GENERIC-NEXT: .LBB39_5: # %label11685; GENERIC-NEXT: movi16 a1, 01686; GENERIC-NEXT: addi16 sp, sp, 41687; GENERIC-NEXT: rts161688; CHECK-UGTXT: icmpu32 a0, a1, a01689; CHECK-UGTXT: rts161690entry:1691 %icmp = icmp uge i64 %x, 101692 br i1 %icmp, label %label1, label %label21693label1:1694 ret i64 11695label2:1696 ret i64 01697}1698 1699;ULT1700define i64 @brRR_i64_ult(i64 %x, i64 %y) {1701; CHECK-LABEL: brRR_i64_ult:1702; CHECK: # %bb.0: # %entry1703; CHECK-NEXT: .cfi_def_cfa_offset 01704; CHECK-NEXT: subi16 sp, sp, 161705; CHECK-NEXT: .cfi_def_cfa_offset 161706; CHECK-NEXT: cmphs16 a3, a11707; CHECK-NEXT: mvc32 t01708; CHECK-NEXT: st32.w t0, (sp, 12)1709; CHECK-NEXT: cmphs16 a2, a01710; CHECK-NEXT: mvc32 a01711; CHECK-NEXT: st16.w a0, (sp, 4)1712; CHECK-NEXT: cmpne16 a3, a11713; CHECK-NEXT: mvc32 a01714; CHECK-NEXT: st16.w a0, (sp, 8)1715; CHECK-NEXT: ld16.w a0, (sp, 4)1716; CHECK-NEXT: btsti16 a0, 01717; CHECK-NEXT: mvc32 a01718; CHECK-NEXT: ld16.w a1, (sp, 12)1719; CHECK-NEXT: btsti16 a1, 01720; CHECK-NEXT: mvc32 a11721; CHECK-NEXT: ld16.w a2, (sp, 8)1722; CHECK-NEXT: btsti16 a2, 01723; CHECK-NEXT: movf32 a1, a01724; CHECK-NEXT: btsti16 a1, 01725; CHECK-NEXT: bt32 .LBB40_21726; CHECK-NEXT: # %bb.1: # %label11727; CHECK-NEXT: movi16 a0, 11728; CHECK-NEXT: br32 .LBB40_31729; CHECK-NEXT: .LBB40_2: # %label21730; CHECK-NEXT: movi16 a0, 01731; CHECK-NEXT: .LBB40_3: # %label11732; CHECK-NEXT: movi16 a1, 01733; CHECK-NEXT: addi16 sp, sp, 161734; CHECK-NEXT: rts161735;1736; GENERIC-LABEL: brRR_i64_ult:1737; GENERIC: # %bb.0: # %entry1738; GENERIC-NEXT: subi16 sp, sp, 81739; GENERIC-NEXT: .cfi_def_cfa_offset 81740; GENERIC-NEXT: st16.w l1, (sp, 4) # 4-byte Folded Spill1741; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1742; GENERIC-NEXT: .cfi_offset l1, -41743; GENERIC-NEXT: .cfi_offset l0, -81744; GENERIC-NEXT: subi16 sp, sp, 41745; GENERIC-NEXT: .cfi_def_cfa_offset 121746; GENERIC-NEXT: cmphs16 a3, a11747; GENERIC-NEXT: mvcv16 l11748; GENERIC-NEXT: movi16 l0, 11749; GENERIC-NEXT: cmphs16 a2, a01750; GENERIC-NEXT: mvcv16 a01751; GENERIC-NEXT: cmpne16 a3, a11752; GENERIC-NEXT: mvcv16 a11753; GENERIC-NEXT: btsti16 a1, 01754; GENERIC-NEXT: bt16 .LBB40_31755; GENERIC-NEXT: # %bb.1: # %entry1756; GENERIC-NEXT: subu16 l0, l11757; GENERIC-NEXT: btsti16 l0, 01758; GENERIC-NEXT: bf16 .LBB40_41759; GENERIC-NEXT: .LBB40_2: # %label21760; GENERIC-NEXT: movi16 a0, 01761; GENERIC-NEXT: br32 .LBB40_51762; GENERIC-NEXT: .LBB40_3:1763; GENERIC-NEXT: subu16 l0, a01764; GENERIC-NEXT: btsti16 l0, 01765; GENERIC-NEXT: bt16 .LBB40_21766; GENERIC-NEXT: .LBB40_4: # %label11767; GENERIC-NEXT: movi16 a0, 11768; GENERIC-NEXT: .LBB40_5: # %label11769; GENERIC-NEXT: movi16 a1, 01770; GENERIC-NEXT: addi16 sp, sp, 41771; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1772; GENERIC-NEXT: ld16.w l1, (sp, 4) # 4-byte Folded Reload1773; GENERIC-NEXT: addi16 sp, sp, 81774; GENERIC-NEXT: rts161775; CHECK-UGTXT: icmpu32 a0, a1, a01776; CHECK-UGTXT: rts161777entry:1778 %icmp = icmp ult i64 %y, %x1779 br i1 %icmp, label %label1, label %label21780label1:1781 ret i64 11782label2:1783 ret i64 01784}1785 1786define i64 @brRI_i64_ult(i64 %x) {1787; CHECK-LABEL: brRI_i64_ult:1788; CHECK: # %bb.0: # %entry1789; CHECK-NEXT: movi16 a2, 91790; CHECK-NEXT: cmphs16 a2, a01791; CHECK-NEXT: mvcv16 a01792; CHECK-NEXT: cmpnei16 a1, 01793; CHECK-NEXT: mvc32 a11794; CHECK-NEXT: movf32 a1, a01795; CHECK-NEXT: btsti16 a1, 01796; CHECK-NEXT: bt32 .LBB41_21797; CHECK-NEXT: # %bb.1: # %label11798; CHECK-NEXT: movi16 a0, 11799; CHECK-NEXT: movi16 a1, 01800; CHECK-NEXT: rts161801; CHECK-NEXT: .LBB41_2: # %label21802; CHECK-NEXT: movi16 a0, 01803; CHECK-NEXT: movi16 a1, 01804; CHECK-NEXT: rts161805;1806; GENERIC-LABEL: brRI_i64_ult:1807; GENERIC: # %bb.0: # %entry1808; GENERIC-NEXT: .cfi_def_cfa_offset 01809; GENERIC-NEXT: subi16 sp, sp, 41810; GENERIC-NEXT: .cfi_def_cfa_offset 41811; GENERIC-NEXT: cmpnei16 a1, 01812; GENERIC-NEXT: mvcv16 a11813; GENERIC-NEXT: movi16 a2, 91814; GENERIC-NEXT: cmphs16 a2, a01815; GENERIC-NEXT: mvcv16 a01816; GENERIC-NEXT: btsti16 a1, 01817; GENERIC-NEXT: bt16 .LBB41_21818; GENERIC-NEXT: # %bb.1: # %entry1819; GENERIC-NEXT: movi16 a0, 11820; GENERIC-NEXT: subu16 a0, a11821; GENERIC-NEXT: .LBB41_2: # %entry1822; GENERIC-NEXT: btsti16 a0, 01823; GENERIC-NEXT: bt16 .LBB41_41824; GENERIC-NEXT: # %bb.3: # %label11825; GENERIC-NEXT: movi16 a0, 11826; GENERIC-NEXT: br32 .LBB41_51827; GENERIC-NEXT: .LBB41_4: # %label21828; GENERIC-NEXT: movi16 a0, 01829; GENERIC-NEXT: .LBB41_5: # %label11830; GENERIC-NEXT: movi16 a1, 01831; GENERIC-NEXT: addi16 sp, sp, 41832; GENERIC-NEXT: rts161833; CHECK-UGTXT: icmpu32 a0, a1, a01834; CHECK-UGTXT: rts161835entry:1836 %icmp = icmp ult i64 %x, 101837 br i1 %icmp, label %label1, label %label21838label1:1839 ret i64 11840label2:1841 ret i64 01842}1843 1844 1845;ULE1846define i64 @brRR_i64_ule(i64 %x, i64 %y) {1847; CHECK-LABEL: brRR_i64_ule:1848; CHECK: # %bb.0: # %entry1849; CHECK-NEXT: .cfi_def_cfa_offset 01850; CHECK-NEXT: subi16 sp, sp, 81851; CHECK-NEXT: .cfi_def_cfa_offset 81852; CHECK-NEXT: cmpne16 a3, a11853; CHECK-NEXT: mvc32 t01854; CHECK-NEXT: st32.w t0, (sp, 4)1855; CHECK-NEXT: cmphs16 a1, a31856; CHECK-NEXT: mvcv16 a11857; CHECK-NEXT: cmphs16 a0, a21858; CHECK-NEXT: mvcv16 a01859; CHECK-NEXT: ld16.w a2, (sp, 4)1860; CHECK-NEXT: btsti16 a2, 01861; CHECK-NEXT: movf32 a1, a01862; CHECK-NEXT: btsti16 a1, 01863; CHECK-NEXT: bt32 .LBB42_21864; CHECK-NEXT: # %bb.1: # %label11865; CHECK-NEXT: movi16 a0, 11866; CHECK-NEXT: br32 .LBB42_31867; CHECK-NEXT: .LBB42_2: # %label21868; CHECK-NEXT: movi16 a0, 01869; CHECK-NEXT: .LBB42_3: # %label11870; CHECK-NEXT: movi16 a1, 01871; CHECK-NEXT: addi16 sp, sp, 81872; CHECK-NEXT: rts161873;1874; GENERIC-LABEL: brRR_i64_ule:1875; GENERIC: # %bb.0: # %entry1876; GENERIC-NEXT: subi16 sp, sp, 41877; GENERIC-NEXT: .cfi_def_cfa_offset 41878; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill1879; GENERIC-NEXT: .cfi_offset l0, -41880; GENERIC-NEXT: subi16 sp, sp, 41881; GENERIC-NEXT: .cfi_def_cfa_offset 81882; GENERIC-NEXT: cmphs16 a1, a31883; GENERIC-NEXT: mvcv16 l01884; GENERIC-NEXT: cmphs16 a0, a21885; GENERIC-NEXT: mvcv16 a01886; GENERIC-NEXT: cmpne16 a3, a11887; GENERIC-NEXT: mvcv16 a11888; GENERIC-NEXT: btsti16 a1, 01889; GENERIC-NEXT: bt16 .LBB42_21890; GENERIC-NEXT: # %bb.1: # %entry1891; GENERIC-NEXT: mov16 a0, l01892; GENERIC-NEXT: .LBB42_2: # %entry1893; GENERIC-NEXT: btsti16 a0, 01894; GENERIC-NEXT: bt16 .LBB42_41895; GENERIC-NEXT: # %bb.3: # %label11896; GENERIC-NEXT: movi16 a0, 11897; GENERIC-NEXT: br32 .LBB42_51898; GENERIC-NEXT: .LBB42_4: # %label21899; GENERIC-NEXT: movi16 a0, 01900; GENERIC-NEXT: .LBB42_5: # %label11901; GENERIC-NEXT: movi16 a1, 01902; GENERIC-NEXT: addi16 sp, sp, 41903; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload1904; GENERIC-NEXT: addi16 sp, sp, 41905; GENERIC-NEXT: rts161906; CHECK-UGTXT: icmpu32 a0, a1, a01907; CHECK-UGTXT: rts161908entry:1909 %icmp = icmp ule i64 %y, %x1910 br i1 %icmp, label %label1, label %label21911label1:1912 ret i64 11913label2:1914 ret i64 01915}1916 1917define i64 @brRI_i64_ule(i64 %x) {1918; CHECK-LABEL: brRI_i64_ule:1919; CHECK: # %bb.0: # %entry1920; CHECK-NEXT: movi16 a2, 101921; CHECK-NEXT: cmphs16 a2, a01922; CHECK-NEXT: mvcv16 a01923; CHECK-NEXT: cmpnei16 a1, 01924; CHECK-NEXT: mvc32 a11925; CHECK-NEXT: movf32 a1, a01926; CHECK-NEXT: btsti16 a1, 01927; CHECK-NEXT: bt32 .LBB43_21928; CHECK-NEXT: # %bb.1: # %label11929; CHECK-NEXT: movi16 a0, 11930; CHECK-NEXT: movi16 a1, 01931; CHECK-NEXT: rts161932; CHECK-NEXT: .LBB43_2: # %label21933; CHECK-NEXT: movi16 a0, 01934; CHECK-NEXT: movi16 a1, 01935; CHECK-NEXT: rts161936;1937; GENERIC-LABEL: brRI_i64_ule:1938; GENERIC: # %bb.0: # %entry1939; GENERIC-NEXT: .cfi_def_cfa_offset 01940; GENERIC-NEXT: subi16 sp, sp, 41941; GENERIC-NEXT: .cfi_def_cfa_offset 41942; GENERIC-NEXT: cmpnei16 a1, 01943; GENERIC-NEXT: mvcv16 a11944; GENERIC-NEXT: movi16 a2, 101945; GENERIC-NEXT: cmphs16 a2, a01946; GENERIC-NEXT: mvcv16 a01947; GENERIC-NEXT: btsti16 a1, 01948; GENERIC-NEXT: bt16 .LBB43_21949; GENERIC-NEXT: # %bb.1: # %entry1950; GENERIC-NEXT: movi16 a0, 11951; GENERIC-NEXT: subu16 a0, a11952; GENERIC-NEXT: .LBB43_2: # %entry1953; GENERIC-NEXT: btsti16 a0, 01954; GENERIC-NEXT: bt16 .LBB43_41955; GENERIC-NEXT: # %bb.3: # %label11956; GENERIC-NEXT: movi16 a0, 11957; GENERIC-NEXT: br32 .LBB43_51958; GENERIC-NEXT: .LBB43_4: # %label21959; GENERIC-NEXT: movi16 a0, 01960; GENERIC-NEXT: .LBB43_5: # %label11961; GENERIC-NEXT: movi16 a1, 01962; GENERIC-NEXT: addi16 sp, sp, 41963; GENERIC-NEXT: rts161964; CHECK-UGTXT: icmpu32 a0, a1, a01965; CHECK-UGTXT: rts161966entry:1967 %icmp = icmp ule i64 %x, 101968 br i1 %icmp, label %label1, label %label21969label1:1970 ret i64 11971label2:1972 ret i64 01973}1974 1975define i64 @brR0_i64_ule(i64 %x) {1976; CHECK-LABEL: brR0_i64_ule:1977; CHECK: # %bb.0: # %entry1978; CHECK-NEXT: or16 a0, a11979; CHECK-NEXT: bnez32 a0, .LBB44_21980; CHECK-NEXT: # %bb.1: # %label11981; CHECK-NEXT: movi16 a0, 11982; CHECK-NEXT: movi16 a1, 01983; CHECK-NEXT: rts161984; CHECK-NEXT: .LBB44_2: # %label21985; CHECK-NEXT: movi16 a0, 01986; CHECK-NEXT: movi16 a1, 01987; CHECK-NEXT: rts161988;1989; GENERIC-LABEL: brR0_i64_ule:1990; GENERIC: # %bb.0: # %entry1991; GENERIC-NEXT: .cfi_def_cfa_offset 01992; GENERIC-NEXT: subi16 sp, sp, 41993; GENERIC-NEXT: .cfi_def_cfa_offset 41994; GENERIC-NEXT: or16 a0, a11995; GENERIC-NEXT: cmpnei16 a0, 01996; GENERIC-NEXT: bt16 .LBB44_21997; GENERIC-NEXT: # %bb.1: # %label11998; GENERIC-NEXT: movi16 a0, 11999; GENERIC-NEXT: br32 .LBB44_32000; GENERIC-NEXT: .LBB44_2: # %label22001; GENERIC-NEXT: movi16 a0, 02002; GENERIC-NEXT: .LBB44_3: # %label12003; GENERIC-NEXT: movi16 a1, 02004; GENERIC-NEXT: addi16 sp, sp, 42005; GENERIC-NEXT: rts162006; CHECK-UGTXT: icmpu32 a0, a1, a02007; CHECK-UGTXT: rts162008entry:2009 %icmp = icmp ule i64 %x, 02010 br i1 %icmp, label %label1, label %label22011label1:2012 ret i64 12013label2:2014 ret i64 02015}2016 2017;SGT2018define i64 @brRR_i64_sgt(i64 %x, i64 %y) {2019; CHECK-LABEL: brRR_i64_sgt:2020; CHECK: # %bb.0: # %entry2021; CHECK-NEXT: .cfi_def_cfa_offset 02022; CHECK-NEXT: subi16 sp, sp, 122023; CHECK-NEXT: .cfi_def_cfa_offset 122024; CHECK-NEXT: cmphs16 a0, a22025; CHECK-NEXT: mvc32 a02026; CHECK-NEXT: st16.w a0, (sp, 4)2027; CHECK-NEXT: cmpne16 a3, a12028; CHECK-NEXT: mvc32 a02029; CHECK-NEXT: st16.w a0, (sp, 8)2030; CHECK-NEXT: cmplt16 a1, a32031; CHECK-NEXT: mvcv16 a02032; CHECK-NEXT: ld16.w a1, (sp, 4)2033; CHECK-NEXT: btsti16 a1, 02034; CHECK-NEXT: mvc32 a12035; CHECK-NEXT: ld16.w a2, (sp, 8)2036; CHECK-NEXT: btsti16 a2, 02037; CHECK-NEXT: movf32 a0, a12038; CHECK-NEXT: btsti16 a0, 02039; CHECK-NEXT: bt32 .LBB45_22040; CHECK-NEXT: # %bb.1: # %label12041; CHECK-NEXT: movi16 a0, 12042; CHECK-NEXT: br32 .LBB45_32043; CHECK-NEXT: .LBB45_2: # %label22044; CHECK-NEXT: movi16 a0, 02045; CHECK-NEXT: .LBB45_3: # %label12046; CHECK-NEXT: movi16 a1, 02047; CHECK-NEXT: addi16 sp, sp, 122048; CHECK-NEXT: rts162049;2050; GENERIC-LABEL: brRR_i64_sgt:2051; GENERIC: # %bb.0: # %entry2052; GENERIC-NEXT: .cfi_def_cfa_offset 02053; GENERIC-NEXT: subi16 sp, sp, 42054; GENERIC-NEXT: .cfi_def_cfa_offset 42055; GENERIC-NEXT: cmphs16 a0, a22056; GENERIC-NEXT: mvcv16 a22057; GENERIC-NEXT: cmplt16 a1, a32058; GENERIC-NEXT: mvcv16 a02059; GENERIC-NEXT: cmpne16 a3, a12060; GENERIC-NEXT: mvcv16 a12061; GENERIC-NEXT: btsti16 a1, 02062; GENERIC-NEXT: bf16 .LBB45_22063; GENERIC-NEXT: # %bb.1:2064; GENERIC-NEXT: movi16 a0, 12065; GENERIC-NEXT: subu16 a0, a22066; GENERIC-NEXT: .LBB45_2: # %entry2067; GENERIC-NEXT: btsti16 a0, 02068; GENERIC-NEXT: bt16 .LBB45_42069; GENERIC-NEXT: # %bb.3: # %label12070; GENERIC-NEXT: movi16 a0, 12071; GENERIC-NEXT: br32 .LBB45_52072; GENERIC-NEXT: .LBB45_4: # %label22073; GENERIC-NEXT: movi16 a0, 02074; GENERIC-NEXT: .LBB45_5: # %label12075; GENERIC-NEXT: movi16 a1, 02076; GENERIC-NEXT: addi16 sp, sp, 42077; GENERIC-NEXT: rts162078; CHECK-UGTXT: icmpu32 a0, a1, a02079; CHECK-UGTXT: rts162080entry:2081 %icmp = icmp sgt i64 %y, %x2082 br i1 %icmp, label %label1, label %label22083label1:2084 ret i64 12085label2:2086 ret i64 02087}2088 2089define i64 @brRI_i64_sgt(i64 %x) {2090; CHECK-LABEL: brRI_i64_sgt:2091; CHECK: # %bb.0: # %entry2092; CHECK-NEXT: .cfi_def_cfa_offset 02093; CHECK-NEXT: subi16 sp, sp, 122094; CHECK-NEXT: .cfi_def_cfa_offset 122095; CHECK-NEXT: movi16 a2, 02096; CHECK-NEXT: cmplt16 a1, a22097; CHECK-NEXT: mvc32 a22098; CHECK-NEXT: st16.w a2, (sp, 4)2099; CHECK-NEXT: cmpnei16 a1, 02100; CHECK-NEXT: mvc32 a12101; CHECK-NEXT: st16.w a1, (sp, 8)2102; CHECK-NEXT: cmphsi16 a0, 112103; CHECK-NEXT: mvcv16 a02104; CHECK-NEXT: ld16.w a1, (sp, 4)2105; CHECK-NEXT: btsti16 a1, 02106; CHECK-NEXT: mvc32 a12107; CHECK-NEXT: ld16.w a2, (sp, 8)2108; CHECK-NEXT: btsti16 a2, 02109; CHECK-NEXT: movf32 a1, a02110; CHECK-NEXT: btsti16 a1, 02111; CHECK-NEXT: bt32 .LBB46_22112; CHECK-NEXT: # %bb.1: # %label12113; CHECK-NEXT: movi16 a0, 12114; CHECK-NEXT: br32 .LBB46_32115; CHECK-NEXT: .LBB46_2: # %label22116; CHECK-NEXT: movi16 a0, 02117; CHECK-NEXT: .LBB46_3: # %label12118; CHECK-NEXT: movi16 a1, 02119; CHECK-NEXT: addi16 sp, sp, 122120; CHECK-NEXT: rts162121;2122; GENERIC-LABEL: brRI_i64_sgt:2123; GENERIC: # %bb.0: # %entry2124; GENERIC-NEXT: .cfi_def_cfa_offset 02125; GENERIC-NEXT: subi16 sp, sp, 42126; GENERIC-NEXT: .cfi_def_cfa_offset 42127; GENERIC-NEXT: movi16 a2, 02128; GENERIC-NEXT: cmplt16 a1, a22129; GENERIC-NEXT: mvcv16 a22130; GENERIC-NEXT: cmphsi16 a0, 112131; GENERIC-NEXT: mvcv16 a02132; GENERIC-NEXT: cmpnei16 a1, 02133; GENERIC-NEXT: mvcv16 a12134; GENERIC-NEXT: btsti16 a1, 02135; GENERIC-NEXT: bt16 .LBB46_22136; GENERIC-NEXT: # %bb.1: # %entry2137; GENERIC-NEXT: movi16 a0, 12138; GENERIC-NEXT: subu16 a0, a22139; GENERIC-NEXT: .LBB46_2: # %entry2140; GENERIC-NEXT: btsti16 a0, 02141; GENERIC-NEXT: bt16 .LBB46_42142; GENERIC-NEXT: # %bb.3: # %label12143; GENERIC-NEXT: movi16 a0, 12144; GENERIC-NEXT: br32 .LBB46_52145; GENERIC-NEXT: .LBB46_4: # %label22146; GENERIC-NEXT: movi16 a0, 02147; GENERIC-NEXT: .LBB46_5: # %label12148; GENERIC-NEXT: movi16 a1, 02149; GENERIC-NEXT: addi16 sp, sp, 42150; GENERIC-NEXT: rts162151; CHECK-UGTXT: icmpu32 a0, a1, a02152; CHECK-UGTXT: rts162153entry:2154 %icmp = icmp sgt i64 %x, 102155 br i1 %icmp, label %label1, label %label22156label1:2157 ret i64 12158label2:2159 ret i64 02160}2161 2162define i64 @brR0_i64_sgt(i64 %x) {2163; CHECK-LABEL: brR0_i64_sgt:2164; CHECK: # %bb.0: # %entry2165; CHECK-NEXT: .cfi_def_cfa_offset 02166; CHECK-NEXT: subi16 sp, sp, 122167; CHECK-NEXT: .cfi_def_cfa_offset 122168; CHECK-NEXT: movi16 a2, 02169; CHECK-NEXT: cmplt16 a1, a22170; CHECK-NEXT: mvc32 a22171; CHECK-NEXT: st16.w a2, (sp, 4)2172; CHECK-NEXT: cmpnei16 a1, 02173; CHECK-NEXT: mvc32 a12174; CHECK-NEXT: st16.w a1, (sp, 8)2175; CHECK-NEXT: cmpnei16 a0, 02176; CHECK-NEXT: mvcv16 a02177; CHECK-NEXT: ld16.w a1, (sp, 4)2178; CHECK-NEXT: btsti16 a1, 02179; CHECK-NEXT: mvc32 a12180; CHECK-NEXT: ld16.w a2, (sp, 8)2181; CHECK-NEXT: btsti16 a2, 02182; CHECK-NEXT: movf32 a1, a02183; CHECK-NEXT: btsti16 a1, 02184; CHECK-NEXT: bt32 .LBB47_22185; CHECK-NEXT: # %bb.1: # %label12186; CHECK-NEXT: movi16 a0, 12187; CHECK-NEXT: br32 .LBB47_32188; CHECK-NEXT: .LBB47_2: # %label22189; CHECK-NEXT: movi16 a0, 02190; CHECK-NEXT: .LBB47_3: # %label12191; CHECK-NEXT: movi16 a1, 02192; CHECK-NEXT: addi16 sp, sp, 122193; CHECK-NEXT: rts162194;2195; GENERIC-LABEL: brR0_i64_sgt:2196; GENERIC: # %bb.0: # %entry2197; GENERIC-NEXT: .cfi_def_cfa_offset 02198; GENERIC-NEXT: subi16 sp, sp, 42199; GENERIC-NEXT: .cfi_def_cfa_offset 42200; GENERIC-NEXT: movi16 a2, 02201; GENERIC-NEXT: cmplt16 a1, a22202; GENERIC-NEXT: mvcv16 a22203; GENERIC-NEXT: cmpnei16 a0, 02204; GENERIC-NEXT: mvcv16 a02205; GENERIC-NEXT: cmpnei16 a1, 02206; GENERIC-NEXT: mvcv16 a12207; GENERIC-NEXT: btsti16 a1, 02208; GENERIC-NEXT: bt16 .LBB47_22209; GENERIC-NEXT: # %bb.1: # %entry2210; GENERIC-NEXT: movi16 a0, 12211; GENERIC-NEXT: subu16 a0, a22212; GENERIC-NEXT: .LBB47_2: # %entry2213; GENERIC-NEXT: btsti16 a0, 02214; GENERIC-NEXT: bt16 .LBB47_42215; GENERIC-NEXT: # %bb.3: # %label12216; GENERIC-NEXT: movi16 a0, 12217; GENERIC-NEXT: br32 .LBB47_52218; GENERIC-NEXT: .LBB47_4: # %label22219; GENERIC-NEXT: movi16 a0, 02220; GENERIC-NEXT: .LBB47_5: # %label12221; GENERIC-NEXT: movi16 a1, 02222; GENERIC-NEXT: addi16 sp, sp, 42223; GENERIC-NEXT: rts162224; CHECK-UGTXT: icmpu32 a0, a1, a02225; CHECK-UGTXT: rts162226entry:2227 %icmp = icmp sgt i64 %x, 02228 br i1 %icmp, label %label1, label %label22229label1:2230 ret i64 12231label2:2232 ret i64 02233}2234 2235;SGE2236define i64 @brRR_i64_sge(i64 %x, i64 %y) {2237; CHECK-LABEL: brRR_i64_sge:2238; CHECK: # %bb.0: # %entry2239; CHECK-NEXT: .cfi_def_cfa_offset 02240; CHECK-NEXT: subi16 sp, sp, 122241; CHECK-NEXT: .cfi_def_cfa_offset 122242; CHECK-NEXT: cmplt16 a3, a12243; CHECK-NEXT: mvc32 t02244; CHECK-NEXT: st32.w t0, (sp, 4)2245; CHECK-NEXT: cmpne16 a3, a12246; CHECK-NEXT: mvc32 a12247; CHECK-NEXT: st16.w a1, (sp, 8)2248; CHECK-NEXT: cmphs16 a2, a02249; CHECK-NEXT: mvcv16 a02250; CHECK-NEXT: ld16.w a1, (sp, 4)2251; CHECK-NEXT: btsti16 a1, 02252; CHECK-NEXT: mvc32 a12253; CHECK-NEXT: ld16.w a2, (sp, 8)2254; CHECK-NEXT: btsti16 a2, 02255; CHECK-NEXT: movf32 a1, a02256; CHECK-NEXT: btsti16 a1, 02257; CHECK-NEXT: bt32 .LBB48_22258; CHECK-NEXT: # %bb.1: # %label12259; CHECK-NEXT: movi16 a0, 12260; CHECK-NEXT: br32 .LBB48_32261; CHECK-NEXT: .LBB48_2: # %label22262; CHECK-NEXT: movi16 a0, 02263; CHECK-NEXT: .LBB48_3: # %label12264; CHECK-NEXT: movi16 a1, 02265; CHECK-NEXT: addi16 sp, sp, 122266; CHECK-NEXT: rts162267;2268; GENERIC-LABEL: brRR_i64_sge:2269; GENERIC: # %bb.0: # %entry2270; GENERIC-NEXT: subi16 sp, sp, 42271; GENERIC-NEXT: .cfi_def_cfa_offset 42272; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2273; GENERIC-NEXT: .cfi_offset l0, -42274; GENERIC-NEXT: subi16 sp, sp, 42275; GENERIC-NEXT: .cfi_def_cfa_offset 82276; GENERIC-NEXT: cmplt16 a3, a12277; GENERIC-NEXT: mvcv16 l02278; GENERIC-NEXT: cmphs16 a2, a02279; GENERIC-NEXT: mvcv16 a02280; GENERIC-NEXT: cmpne16 a3, a12281; GENERIC-NEXT: mvcv16 a12282; GENERIC-NEXT: btsti16 a1, 02283; GENERIC-NEXT: bt16 .LBB48_22284; GENERIC-NEXT: # %bb.1: # %entry2285; GENERIC-NEXT: movi16 a0, 12286; GENERIC-NEXT: subu16 a0, l02287; GENERIC-NEXT: .LBB48_2: # %entry2288; GENERIC-NEXT: btsti16 a0, 02289; GENERIC-NEXT: bt16 .LBB48_42290; GENERIC-NEXT: # %bb.3: # %label12291; GENERIC-NEXT: movi16 a0, 12292; GENERIC-NEXT: br32 .LBB48_52293; GENERIC-NEXT: .LBB48_4: # %label22294; GENERIC-NEXT: movi16 a0, 02295; GENERIC-NEXT: .LBB48_5: # %label12296; GENERIC-NEXT: movi16 a1, 02297; GENERIC-NEXT: addi16 sp, sp, 42298; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2299; GENERIC-NEXT: addi16 sp, sp, 42300; GENERIC-NEXT: rts162301; CHECK-UGTXT: icmpu32 a0, a1, a02302; CHECK-UGTXT: rts162303entry:2304 %icmp = icmp sge i64 %y, %x2305 br i1 %icmp, label %label1, label %label22306label1:2307 ret i64 12308label2:2309 ret i64 02310}2311 2312define i64 @brRI_i64_sge(i64 %x) {2313; CHECK-LABEL: brRI_i64_sge:2314; CHECK: # %bb.0: # %entry2315; CHECK-NEXT: .cfi_def_cfa_offset 02316; CHECK-NEXT: subi16 sp, sp, 122317; CHECK-NEXT: .cfi_def_cfa_offset 122318; CHECK-NEXT: movi16 a2, 02319; CHECK-NEXT: cmplt16 a1, a22320; CHECK-NEXT: mvc32 a22321; CHECK-NEXT: st16.w a2, (sp, 4)2322; CHECK-NEXT: cmpnei16 a1, 02323; CHECK-NEXT: mvc32 a12324; CHECK-NEXT: st16.w a1, (sp, 8)2325; CHECK-NEXT: cmphsi16 a0, 102326; CHECK-NEXT: mvcv16 a02327; CHECK-NEXT: ld16.w a1, (sp, 4)2328; CHECK-NEXT: btsti16 a1, 02329; CHECK-NEXT: mvc32 a12330; CHECK-NEXT: ld16.w a2, (sp, 8)2331; CHECK-NEXT: btsti16 a2, 02332; CHECK-NEXT: movf32 a1, a02333; CHECK-NEXT: btsti16 a1, 02334; CHECK-NEXT: bt32 .LBB49_22335; CHECK-NEXT: # %bb.1: # %label12336; CHECK-NEXT: movi16 a0, 12337; CHECK-NEXT: br32 .LBB49_32338; CHECK-NEXT: .LBB49_2: # %label22339; CHECK-NEXT: movi16 a0, 02340; CHECK-NEXT: .LBB49_3: # %label12341; CHECK-NEXT: movi16 a1, 02342; CHECK-NEXT: addi16 sp, sp, 122343; CHECK-NEXT: rts162344;2345; GENERIC-LABEL: brRI_i64_sge:2346; GENERIC: # %bb.0: # %entry2347; GENERIC-NEXT: .cfi_def_cfa_offset 02348; GENERIC-NEXT: subi16 sp, sp, 42349; GENERIC-NEXT: .cfi_def_cfa_offset 42350; GENERIC-NEXT: movi16 a2, 02351; GENERIC-NEXT: cmplt16 a1, a22352; GENERIC-NEXT: mvcv16 a22353; GENERIC-NEXT: cmphsi16 a0, 102354; GENERIC-NEXT: mvcv16 a02355; GENERIC-NEXT: cmpnei16 a1, 02356; GENERIC-NEXT: mvcv16 a12357; GENERIC-NEXT: btsti16 a1, 02358; GENERIC-NEXT: bt16 .LBB49_22359; GENERIC-NEXT: # %bb.1: # %entry2360; GENERIC-NEXT: movi16 a0, 12361; GENERIC-NEXT: subu16 a0, a22362; GENERIC-NEXT: .LBB49_2: # %entry2363; GENERIC-NEXT: btsti16 a0, 02364; GENERIC-NEXT: bt16 .LBB49_42365; GENERIC-NEXT: # %bb.3: # %label12366; GENERIC-NEXT: movi16 a0, 12367; GENERIC-NEXT: br32 .LBB49_52368; GENERIC-NEXT: .LBB49_4: # %label22369; GENERIC-NEXT: movi16 a0, 02370; GENERIC-NEXT: .LBB49_5: # %label12371; GENERIC-NEXT: movi16 a1, 02372; GENERIC-NEXT: addi16 sp, sp, 42373; GENERIC-NEXT: rts162374; CHECK-UGTXT: icmpu32 a0, a1, a02375; CHECK-UGTXT: rts162376entry:2377 %icmp = icmp sge i64 %x, 102378 br i1 %icmp, label %label1, label %label22379label1:2380 ret i64 12381label2:2382 ret i64 02383}2384 2385define i64 @brR0_i64_sge(i64 %x) {2386; CHECK-LABEL: brR0_i64_sge:2387; CHECK: # %bb.0: # %entry2388; CHECK-NEXT: blz32 a1, .LBB50_22389; CHECK-NEXT: # %bb.1: # %label12390; CHECK-NEXT: movi16 a0, 12391; CHECK-NEXT: movi16 a1, 02392; CHECK-NEXT: rts162393; CHECK-NEXT: .LBB50_2: # %label22394; CHECK-NEXT: movi16 a0, 02395; CHECK-NEXT: movi16 a1, 02396; CHECK-NEXT: rts162397;2398; GENERIC-LABEL: brR0_i64_sge:2399; GENERIC: # %bb.0: # %entry2400; GENERIC-NEXT: .cfi_def_cfa_offset 02401; GENERIC-NEXT: subi16 sp, sp, 42402; GENERIC-NEXT: .cfi_def_cfa_offset 42403; GENERIC-NEXT: movi16 a0, 02404; GENERIC-NEXT: cmplt16 a1, a02405; GENERIC-NEXT: bt16 .LBB50_22406; GENERIC-NEXT: # %bb.1: # %label12407; GENERIC-NEXT: movi16 a0, 12408; GENERIC-NEXT: .LBB50_2: # %label22409; GENERIC-NEXT: movi16 a1, 02410; GENERIC-NEXT: addi16 sp, sp, 42411; GENERIC-NEXT: rts162412; CHECK-UGTXT: icmpu32 a0, a1, a02413; CHECK-UGTXT: rts162414entry:2415 %icmp = icmp sge i64 %x, 02416 br i1 %icmp, label %label1, label %label22417label1:2418 ret i64 12419label2:2420 ret i64 02421}2422 2423;SLT2424define i64 @brRR_i64_slt(i64 %x, i64 %y) {2425; CHECK-LABEL: brRR_i64_slt:2426; CHECK: # %bb.0: # %entry2427; CHECK-NEXT: .cfi_def_cfa_offset 02428; CHECK-NEXT: subi16 sp, sp, 122429; CHECK-NEXT: .cfi_def_cfa_offset 122430; CHECK-NEXT: cmphs16 a2, a02431; CHECK-NEXT: mvc32 a02432; CHECK-NEXT: st16.w a0, (sp, 4)2433; CHECK-NEXT: cmpne16 a3, a12434; CHECK-NEXT: mvc32 a02435; CHECK-NEXT: st16.w a0, (sp, 8)2436; CHECK-NEXT: cmplt16 a3, a12437; CHECK-NEXT: mvcv16 a02438; CHECK-NEXT: ld16.w a1, (sp, 4)2439; CHECK-NEXT: btsti16 a1, 02440; CHECK-NEXT: mvc32 a12441; CHECK-NEXT: ld16.w a2, (sp, 8)2442; CHECK-NEXT: btsti16 a2, 02443; CHECK-NEXT: movf32 a0, a12444; CHECK-NEXT: btsti16 a0, 02445; CHECK-NEXT: bt32 .LBB51_22446; CHECK-NEXT: # %bb.1: # %label12447; CHECK-NEXT: movi16 a0, 12448; CHECK-NEXT: br32 .LBB51_32449; CHECK-NEXT: .LBB51_2: # %label22450; CHECK-NEXT: movi16 a0, 02451; CHECK-NEXT: .LBB51_3: # %label12452; CHECK-NEXT: movi16 a1, 02453; CHECK-NEXT: addi16 sp, sp, 122454; CHECK-NEXT: rts162455;2456; GENERIC-LABEL: brRR_i64_slt:2457; GENERIC: # %bb.0: # %entry2458; GENERIC-NEXT: .cfi_def_cfa_offset 02459; GENERIC-NEXT: subi16 sp, sp, 42460; GENERIC-NEXT: .cfi_def_cfa_offset 42461; GENERIC-NEXT: cmphs16 a2, a02462; GENERIC-NEXT: mvcv16 a22463; GENERIC-NEXT: cmplt16 a3, a12464; GENERIC-NEXT: mvcv16 a02465; GENERIC-NEXT: cmpne16 a3, a12466; GENERIC-NEXT: mvcv16 a12467; GENERIC-NEXT: btsti16 a1, 02468; GENERIC-NEXT: bf16 .LBB51_22469; GENERIC-NEXT: # %bb.1:2470; GENERIC-NEXT: movi16 a0, 12471; GENERIC-NEXT: subu16 a0, a22472; GENERIC-NEXT: .LBB51_2: # %entry2473; GENERIC-NEXT: btsti16 a0, 02474; GENERIC-NEXT: bt16 .LBB51_42475; GENERIC-NEXT: # %bb.3: # %label12476; GENERIC-NEXT: movi16 a0, 12477; GENERIC-NEXT: br32 .LBB51_52478; GENERIC-NEXT: .LBB51_4: # %label22479; GENERIC-NEXT: movi16 a0, 02480; GENERIC-NEXT: .LBB51_5: # %label12481; GENERIC-NEXT: movi16 a1, 02482; GENERIC-NEXT: addi16 sp, sp, 42483; GENERIC-NEXT: rts162484; CHECK-UGTXT: icmpu32 a0, a1, a02485; CHECK-UGTXT: rts162486entry:2487 %icmp = icmp slt i64 %y, %x2488 br i1 %icmp, label %label1, label %label22489label1:2490 ret i64 12491label2:2492 ret i64 02493}2494 2495define i64 @brRI_i64_slt(i64 %x) {2496; CHECK-LABEL: brRI_i64_slt:2497; CHECK: # %bb.0: # %entry2498; CHECK-NEXT: .cfi_def_cfa_offset 02499; CHECK-NEXT: subi16 sp, sp, 122500; CHECK-NEXT: .cfi_def_cfa_offset 122501; CHECK-NEXT: movi16 a2, 02502; CHECK-NEXT: cmplt16 a2, a12503; CHECK-NEXT: mvc32 a22504; CHECK-NEXT: st16.w a2, (sp, 8)2505; CHECK-NEXT: movi16 a2, 92506; CHECK-NEXT: cmphs16 a2, a02507; CHECK-NEXT: mvcv16 a02508; CHECK-NEXT: cmpnei16 a1, 02509; CHECK-NEXT: mvc32 a12510; CHECK-NEXT: st16.w a1, (sp, 4)2511; CHECK-NEXT: ld16.w a1, (sp, 8)2512; CHECK-NEXT: btsti16 a1, 02513; CHECK-NEXT: mvc32 a12514; CHECK-NEXT: ld16.w a2, (sp, 4)2515; CHECK-NEXT: btsti16 a2, 02516; CHECK-NEXT: movf32 a1, a02517; CHECK-NEXT: btsti16 a1, 02518; CHECK-NEXT: bt32 .LBB52_22519; CHECK-NEXT: # %bb.1: # %label12520; CHECK-NEXT: movi16 a0, 12521; CHECK-NEXT: br32 .LBB52_32522; CHECK-NEXT: .LBB52_2: # %label22523; CHECK-NEXT: movi16 a0, 02524; CHECK-NEXT: .LBB52_3: # %label12525; CHECK-NEXT: movi16 a1, 02526; CHECK-NEXT: addi16 sp, sp, 122527; CHECK-NEXT: rts162528;2529; GENERIC-LABEL: brRI_i64_slt:2530; GENERIC: # %bb.0: # %entry2531; GENERIC-NEXT: .cfi_def_cfa_offset 02532; GENERIC-NEXT: subi16 sp, sp, 42533; GENERIC-NEXT: .cfi_def_cfa_offset 42534; GENERIC-NEXT: movi16 a2, 02535; GENERIC-NEXT: cmplt16 a2, a12536; GENERIC-NEXT: mvcv16 a22537; GENERIC-NEXT: movi16 a3, 92538; GENERIC-NEXT: cmphs16 a3, a02539; GENERIC-NEXT: mvcv16 a02540; GENERIC-NEXT: cmpnei16 a1, 02541; GENERIC-NEXT: mvcv16 a12542; GENERIC-NEXT: btsti16 a1, 02543; GENERIC-NEXT: bt16 .LBB52_22544; GENERIC-NEXT: # %bb.1: # %entry2545; GENERIC-NEXT: movi16 a0, 12546; GENERIC-NEXT: subu16 a0, a22547; GENERIC-NEXT: .LBB52_2: # %entry2548; GENERIC-NEXT: btsti16 a0, 02549; GENERIC-NEXT: bt16 .LBB52_42550; GENERIC-NEXT: # %bb.3: # %label12551; GENERIC-NEXT: movi16 a0, 12552; GENERIC-NEXT: br32 .LBB52_52553; GENERIC-NEXT: .LBB52_4: # %label22554; GENERIC-NEXT: movi16 a0, 02555; GENERIC-NEXT: .LBB52_5: # %label12556; GENERIC-NEXT: movi16 a1, 02557; GENERIC-NEXT: addi16 sp, sp, 42558; GENERIC-NEXT: rts162559; CHECK-UGTXT: icmpu32 a0, a1, a02560; CHECK-UGTXT: rts162561entry:2562 %icmp = icmp slt i64 %x, 102563 br i1 %icmp, label %label1, label %label22564label1:2565 ret i64 12566label2:2567 ret i64 02568}2569 2570define i64 @brR0_i64_slt(i64 %x) {2571; CHECK-LABEL: brR0_i64_slt:2572; CHECK: # %bb.0: # %entry2573; CHECK-NEXT: blz32 a1, .LBB53_22574; CHECK-NEXT: # %bb.1: # %label22575; CHECK-NEXT: movi16 a0, 02576; CHECK-NEXT: movi16 a1, 02577; CHECK-NEXT: rts162578; CHECK-NEXT: .LBB53_2: # %label12579; CHECK-NEXT: movi16 a0, 12580; CHECK-NEXT: movi16 a1, 02581; CHECK-NEXT: rts162582;2583; GENERIC-LABEL: brR0_i64_slt:2584; GENERIC: # %bb.0: # %entry2585; GENERIC-NEXT: .cfi_def_cfa_offset 02586; GENERIC-NEXT: subi16 sp, sp, 42587; GENERIC-NEXT: .cfi_def_cfa_offset 42588; GENERIC-NEXT: movi16 a0, 2552589; GENERIC-NEXT: lsli16 a2, a0, 242590; GENERIC-NEXT: lsli16 a3, a0, 162591; GENERIC-NEXT: or16 a3, a22592; GENERIC-NEXT: lsli16 a2, a0, 82593; GENERIC-NEXT: or16 a2, a32594; GENERIC-NEXT: or16 a2, a02595; GENERIC-NEXT: cmplt16 a2, a12596; GENERIC-NEXT: bf16 .LBB53_22597; GENERIC-NEXT: # %bb.1: # %label22598; GENERIC-NEXT: movi16 a0, 02599; GENERIC-NEXT: br32 .LBB53_32600; GENERIC-NEXT: .LBB53_2: # %label12601; GENERIC-NEXT: movi16 a0, 12602; GENERIC-NEXT: .LBB53_3: # %label12603; GENERIC-NEXT: movi16 a1, 02604; GENERIC-NEXT: addi16 sp, sp, 42605; GENERIC-NEXT: rts162606; CHECK-UGTXT: icmpu32 a0, a1, a02607; CHECK-UGTXT: rts162608entry:2609 %icmp = icmp slt i64 %x, 02610 br i1 %icmp, label %label1, label %label22611label1:2612 ret i64 12613label2:2614 ret i64 02615}2616 2617;SLE2618define i64 @brRR_i64_sle(i64 %x, i64 %y) {2619; CHECK-LABEL: brRR_i64_sle:2620; CHECK: # %bb.0: # %entry2621; CHECK-NEXT: .cfi_def_cfa_offset 02622; CHECK-NEXT: subi16 sp, sp, 122623; CHECK-NEXT: .cfi_def_cfa_offset 122624; CHECK-NEXT: cmplt16 a1, a32625; CHECK-NEXT: mvc32 t02626; CHECK-NEXT: st32.w t0, (sp, 4)2627; CHECK-NEXT: cmpne16 a3, a12628; CHECK-NEXT: mvc32 a12629; CHECK-NEXT: st16.w a1, (sp, 8)2630; CHECK-NEXT: cmphs16 a0, a22631; CHECK-NEXT: mvcv16 a02632; CHECK-NEXT: ld16.w a1, (sp, 4)2633; CHECK-NEXT: btsti16 a1, 02634; CHECK-NEXT: mvc32 a12635; CHECK-NEXT: ld16.w a2, (sp, 8)2636; CHECK-NEXT: btsti16 a2, 02637; CHECK-NEXT: movf32 a1, a02638; CHECK-NEXT: btsti16 a1, 02639; CHECK-NEXT: bt32 .LBB54_22640; CHECK-NEXT: # %bb.1: # %label12641; CHECK-NEXT: movi16 a0, 12642; CHECK-NEXT: br32 .LBB54_32643; CHECK-NEXT: .LBB54_2: # %label22644; CHECK-NEXT: movi16 a0, 02645; CHECK-NEXT: .LBB54_3: # %label12646; CHECK-NEXT: movi16 a1, 02647; CHECK-NEXT: addi16 sp, sp, 122648; CHECK-NEXT: rts162649;2650; GENERIC-LABEL: brRR_i64_sle:2651; GENERIC: # %bb.0: # %entry2652; GENERIC-NEXT: subi16 sp, sp, 42653; GENERIC-NEXT: .cfi_def_cfa_offset 42654; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2655; GENERIC-NEXT: .cfi_offset l0, -42656; GENERIC-NEXT: subi16 sp, sp, 42657; GENERIC-NEXT: .cfi_def_cfa_offset 82658; GENERIC-NEXT: cmplt16 a1, a32659; GENERIC-NEXT: mvcv16 l02660; GENERIC-NEXT: cmphs16 a0, a22661; GENERIC-NEXT: mvcv16 a02662; GENERIC-NEXT: cmpne16 a3, a12663; GENERIC-NEXT: mvcv16 a12664; GENERIC-NEXT: btsti16 a1, 02665; GENERIC-NEXT: bt16 .LBB54_22666; GENERIC-NEXT: # %bb.1: # %entry2667; GENERIC-NEXT: movi16 a0, 12668; GENERIC-NEXT: subu16 a0, l02669; GENERIC-NEXT: .LBB54_2: # %entry2670; GENERIC-NEXT: btsti16 a0, 02671; GENERIC-NEXT: bt16 .LBB54_42672; GENERIC-NEXT: # %bb.3: # %label12673; GENERIC-NEXT: movi16 a0, 12674; GENERIC-NEXT: br32 .LBB54_52675; GENERIC-NEXT: .LBB54_4: # %label22676; GENERIC-NEXT: movi16 a0, 02677; GENERIC-NEXT: .LBB54_5: # %label12678; GENERIC-NEXT: movi16 a1, 02679; GENERIC-NEXT: addi16 sp, sp, 42680; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2681; GENERIC-NEXT: addi16 sp, sp, 42682; GENERIC-NEXT: rts162683; CHECK-UGTXT: icmpu32 a0, a1, a02684; CHECK-UGTXT: rts162685entry:2686 %icmp = icmp sle i64 %y, %x2687 br i1 %icmp, label %label1, label %label22688label1:2689 ret i64 12690label2:2691 ret i64 02692}2693 2694define i64 @brRI_i64_sle(i64 %x) {2695; CHECK-LABEL: brRI_i64_sle:2696; CHECK: # %bb.0: # %entry2697; CHECK-NEXT: .cfi_def_cfa_offset 02698; CHECK-NEXT: subi16 sp, sp, 122699; CHECK-NEXT: .cfi_def_cfa_offset 122700; CHECK-NEXT: movi16 a2, 02701; CHECK-NEXT: cmplt16 a2, a12702; CHECK-NEXT: mvc32 a22703; CHECK-NEXT: st16.w a2, (sp, 8)2704; CHECK-NEXT: movi16 a2, 102705; CHECK-NEXT: cmphs16 a2, a02706; CHECK-NEXT: mvcv16 a02707; CHECK-NEXT: cmpnei16 a1, 02708; CHECK-NEXT: mvc32 a12709; CHECK-NEXT: st16.w a1, (sp, 4)2710; CHECK-NEXT: ld16.w a1, (sp, 8)2711; CHECK-NEXT: btsti16 a1, 02712; CHECK-NEXT: mvc32 a12713; CHECK-NEXT: ld16.w a2, (sp, 4)2714; CHECK-NEXT: btsti16 a2, 02715; CHECK-NEXT: movf32 a1, a02716; CHECK-NEXT: btsti16 a1, 02717; CHECK-NEXT: bt32 .LBB55_22718; CHECK-NEXT: # %bb.1: # %label12719; CHECK-NEXT: movi16 a0, 12720; CHECK-NEXT: br32 .LBB55_32721; CHECK-NEXT: .LBB55_2: # %label22722; CHECK-NEXT: movi16 a0, 02723; CHECK-NEXT: .LBB55_3: # %label12724; CHECK-NEXT: movi16 a1, 02725; CHECK-NEXT: addi16 sp, sp, 122726; CHECK-NEXT: rts162727;2728; GENERIC-LABEL: brRI_i64_sle:2729; GENERIC: # %bb.0: # %entry2730; GENERIC-NEXT: .cfi_def_cfa_offset 02731; GENERIC-NEXT: subi16 sp, sp, 42732; GENERIC-NEXT: .cfi_def_cfa_offset 42733; GENERIC-NEXT: movi16 a2, 02734; GENERIC-NEXT: cmplt16 a2, a12735; GENERIC-NEXT: mvcv16 a22736; GENERIC-NEXT: movi16 a3, 102737; GENERIC-NEXT: cmphs16 a3, a02738; GENERIC-NEXT: mvcv16 a02739; GENERIC-NEXT: cmpnei16 a1, 02740; GENERIC-NEXT: mvcv16 a12741; GENERIC-NEXT: btsti16 a1, 02742; GENERIC-NEXT: bt16 .LBB55_22743; GENERIC-NEXT: # %bb.1: # %entry2744; GENERIC-NEXT: movi16 a0, 12745; GENERIC-NEXT: subu16 a0, a22746; GENERIC-NEXT: .LBB55_2: # %entry2747; GENERIC-NEXT: btsti16 a0, 02748; GENERIC-NEXT: bt16 .LBB55_42749; GENERIC-NEXT: # %bb.3: # %label12750; GENERIC-NEXT: movi16 a0, 12751; GENERIC-NEXT: br32 .LBB55_52752; GENERIC-NEXT: .LBB55_4: # %label22753; GENERIC-NEXT: movi16 a0, 02754; GENERIC-NEXT: .LBB55_5: # %label12755; GENERIC-NEXT: movi16 a1, 02756; GENERIC-NEXT: addi16 sp, sp, 42757; GENERIC-NEXT: rts162758; CHECK-UGTXT: icmpu32 a0, a1, a02759; CHECK-UGTXT: rts162760entry:2761 %icmp = icmp sle i64 %x, 102762 br i1 %icmp, label %label1, label %label22763label1:2764 ret i64 12765label2:2766 ret i64 02767}2768 2769define i64 @brR0_i64_sle(i64 %x) {2770; CHECK-LABEL: brR0_i64_sle:2771; CHECK: # %bb.0: # %entry2772; CHECK-NEXT: .cfi_def_cfa_offset 02773; CHECK-NEXT: subi16 sp, sp, 162774; CHECK-NEXT: .cfi_def_cfa_offset 162775; CHECK-NEXT: movi16 a2, 02776; CHECK-NEXT: cmplt16 a2, a12777; CHECK-NEXT: mvc32 a22778; CHECK-NEXT: st16.w a2, (sp, 12)2779; CHECK-NEXT: cmpnei16 a0, 02780; CHECK-NEXT: mvc32 a02781; CHECK-NEXT: st16.w a0, (sp, 4)2782; CHECK-NEXT: cmpnei16 a1, 02783; CHECK-NEXT: mvc32 a02784; CHECK-NEXT: st16.w a0, (sp, 8)2785; CHECK-NEXT: ld16.w a0, (sp, 4)2786; CHECK-NEXT: btsti16 a0, 02787; CHECK-NEXT: mvc32 a02788; CHECK-NEXT: ld16.w a1, (sp, 12)2789; CHECK-NEXT: btsti16 a1, 02790; CHECK-NEXT: mvc32 a12791; CHECK-NEXT: ld16.w a2, (sp, 8)2792; CHECK-NEXT: btsti16 a2, 02793; CHECK-NEXT: movf32 a1, a02794; CHECK-NEXT: btsti16 a1, 02795; CHECK-NEXT: bt32 .LBB56_22796; CHECK-NEXT: # %bb.1: # %label12797; CHECK-NEXT: movi16 a0, 12798; CHECK-NEXT: br32 .LBB56_32799; CHECK-NEXT: .LBB56_2: # %label22800; CHECK-NEXT: movi16 a0, 02801; CHECK-NEXT: .LBB56_3: # %label12802; CHECK-NEXT: movi16 a1, 02803; CHECK-NEXT: addi16 sp, sp, 162804; CHECK-NEXT: rts162805;2806; GENERIC-LABEL: brR0_i64_sle:2807; GENERIC: # %bb.0: # %entry2808; GENERIC-NEXT: .cfi_def_cfa_offset 02809; GENERIC-NEXT: subi16 sp, sp, 42810; GENERIC-NEXT: .cfi_def_cfa_offset 42811; GENERIC-NEXT: movi16 a2, 02812; GENERIC-NEXT: cmplt16 a2, a12813; GENERIC-NEXT: mvcv16 a32814; GENERIC-NEXT: movi16 a2, 12815; GENERIC-NEXT: cmpnei16 a0, 02816; GENERIC-NEXT: mvcv16 a02817; GENERIC-NEXT: cmpnei16 a1, 02818; GENERIC-NEXT: mvcv16 a12819; GENERIC-NEXT: btsti16 a1, 02820; GENERIC-NEXT: bt16 .LBB56_32821; GENERIC-NEXT: # %bb.1: # %entry2822; GENERIC-NEXT: subu16 a2, a32823; GENERIC-NEXT: btsti16 a2, 02824; GENERIC-NEXT: bf16 .LBB56_42825; GENERIC-NEXT: .LBB56_2: # %label22826; GENERIC-NEXT: movi16 a0, 02827; GENERIC-NEXT: br32 .LBB56_52828; GENERIC-NEXT: .LBB56_3:2829; GENERIC-NEXT: subu16 a2, a02830; GENERIC-NEXT: btsti16 a2, 02831; GENERIC-NEXT: bt16 .LBB56_22832; GENERIC-NEXT: .LBB56_4: # %label12833; GENERIC-NEXT: movi16 a0, 12834; GENERIC-NEXT: .LBB56_5: # %label12835; GENERIC-NEXT: movi16 a1, 02836; GENERIC-NEXT: addi16 sp, sp, 42837; GENERIC-NEXT: rts162838; CHECK-UGTXT: icmpu32 a0, a1, a02839; CHECK-UGTXT: rts162840entry:2841 %icmp = icmp sle i64 %x, 02842 br i1 %icmp, label %label1, label %label22843label1:2844 ret i64 12845label2:2846 ret i64 02847}2848 2849 2850define i64 @brCBit_i64(i1 %c) {2851; CHECK-LABEL: brCBit_i64:2852; CHECK: # %bb.0: # %entry2853; CHECK-NEXT: andi32 a0, a0, 12854; CHECK-NEXT: bez32 a0, .LBB57_22855; CHECK-NEXT: # %bb.1: # %label12856; CHECK-NEXT: movi16 a0, 12857; CHECK-NEXT: movi16 a1, 02858; CHECK-NEXT: rts162859; CHECK-NEXT: .LBB57_2: # %label22860; CHECK-NEXT: movi16 a0, 02861; CHECK-NEXT: movi16 a1, 02862; CHECK-NEXT: rts162863;2864; GENERIC-LABEL: brCBit_i64:2865; GENERIC: # %bb.0: # %entry2866; GENERIC-NEXT: .cfi_def_cfa_offset 02867; GENERIC-NEXT: subi16 sp, sp, 42868; GENERIC-NEXT: .cfi_def_cfa_offset 42869; GENERIC-NEXT: movi16 a1, 12870; GENERIC-NEXT: and16 a1, a02871; GENERIC-NEXT: cmpnei16 a1, 02872; GENERIC-NEXT: bf16 .LBB57_22873; GENERIC-NEXT: # %bb.1: # %label12874; GENERIC-NEXT: movi16 a0, 12875; GENERIC-NEXT: br32 .LBB57_32876; GENERIC-NEXT: .LBB57_2: # %label22877; GENERIC-NEXT: movi16 a0, 02878; GENERIC-NEXT: .LBB57_3: # %label12879; GENERIC-NEXT: movi16 a1, 02880; GENERIC-NEXT: addi16 sp, sp, 42881; GENERIC-NEXT: rts162882entry:2883 br i1 %c, label %label1, label %label22884label1:2885 ret i64 12886label2:2887 ret i64 02888}2889 2890 2891;EQ2892define i16 @brRR_i16_eq(i16 %x, i16 %y) {2893; CHECK-LABEL: brRR_i16_eq:2894; CHECK: # %bb.0: # %entry2895; CHECK-NEXT: zexth16 a0, a02896; CHECK-NEXT: zexth16 a1, a12897; CHECK-NEXT: cmpne16 a1, a02898; CHECK-NEXT: bt32 .LBB58_22899; CHECK-NEXT: # %bb.1: # %label12900; CHECK-NEXT: movi16 a0, 12901; CHECK-NEXT: rts162902; CHECK-NEXT: .LBB58_2: # %label22903; CHECK-NEXT: movi16 a0, 02904; CHECK-NEXT: rts162905;2906; GENERIC-LABEL: brRR_i16_eq:2907; GENERIC: # %bb.0: # %entry2908; GENERIC-NEXT: subi16 sp, sp, 42909; GENERIC-NEXT: .cfi_def_cfa_offset 42910; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill2911; GENERIC-NEXT: .cfi_offset l0, -42912; GENERIC-NEXT: subi16 sp, sp, 42913; GENERIC-NEXT: .cfi_def_cfa_offset 82914; GENERIC-NEXT: movi16 a2, 02915; GENERIC-NEXT: lsli16 a3, a2, 242916; GENERIC-NEXT: lsli16 a2, a2, 162917; GENERIC-NEXT: or16 a2, a32918; GENERIC-NEXT: movi16 a3, 2552919; GENERIC-NEXT: lsli16 l0, a3, 82920; GENERIC-NEXT: or16 l0, a22921; GENERIC-NEXT: or16 l0, a32922; GENERIC-NEXT: and16 a0, l02923; GENERIC-NEXT: and16 l0, a12924; GENERIC-NEXT: cmpne16 l0, a02925; GENERIC-NEXT: bt16 .LBB58_22926; GENERIC-NEXT: # %bb.1: # %label12927; GENERIC-NEXT: movi16 a0, 12928; GENERIC-NEXT: br32 .LBB58_32929; GENERIC-NEXT: .LBB58_2: # %label22930; GENERIC-NEXT: movi16 a0, 02931; GENERIC-NEXT: .LBB58_3: # %label12932; GENERIC-NEXT: addi16 sp, sp, 42933; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload2934; GENERIC-NEXT: addi16 sp, sp, 42935; GENERIC-NEXT: rts162936entry:2937 %icmp = icmp eq i16 %y, %x2938 br i1 %icmp, label %label1, label %label22939label1:2940 ret i16 12941label2:2942 ret i16 02943}2944 2945define i16 @brRI_i16_eq(i16 %x) {2946; CHECK-LABEL: brRI_i16_eq:2947; CHECK: # %bb.0: # %entry2948; CHECK-NEXT: zexth16 a0, a02949; CHECK-NEXT: cmpnei16 a0, 102950; CHECK-NEXT: bt32 .LBB59_22951; CHECK-NEXT: # %bb.1: # %label12952; CHECK-NEXT: movi16 a0, 12953; CHECK-NEXT: rts162954; CHECK-NEXT: .LBB59_2: # %label22955; CHECK-NEXT: movi16 a0, 02956; CHECK-NEXT: rts162957;2958; GENERIC-LABEL: brRI_i16_eq:2959; GENERIC: # %bb.0: # %entry2960; GENERIC-NEXT: .cfi_def_cfa_offset 02961; GENERIC-NEXT: subi16 sp, sp, 42962; GENERIC-NEXT: .cfi_def_cfa_offset 42963; GENERIC-NEXT: movi16 a1, 02964; GENERIC-NEXT: lsli16 a2, a1, 242965; GENERIC-NEXT: lsli16 a1, a1, 162966; GENERIC-NEXT: or16 a1, a22967; GENERIC-NEXT: movi16 a2, 2552968; GENERIC-NEXT: lsli16 a3, a2, 82969; GENERIC-NEXT: or16 a3, a12970; GENERIC-NEXT: or16 a3, a22971; GENERIC-NEXT: and16 a3, a02972; GENERIC-NEXT: cmpnei16 a3, 102973; GENERIC-NEXT: bt16 .LBB59_22974; GENERIC-NEXT: # %bb.1: # %label12975; GENERIC-NEXT: movi16 a0, 12976; GENERIC-NEXT: addi16 sp, sp, 42977; GENERIC-NEXT: rts162978; GENERIC-NEXT: .LBB59_2: # %label22979; GENERIC-NEXT: movi16 a0, 02980; GENERIC-NEXT: addi16 sp, sp, 42981; GENERIC-NEXT: rts162982entry:2983 %icmp = icmp eq i16 %x, 102984 br i1 %icmp, label %label1, label %label22985label1:2986 ret i16 12987label2:2988 ret i16 02989}2990 2991define i16 @brR0_i16_eq(i16 %x) {2992; CHECK-LABEL: brR0_i16_eq:2993; CHECK: # %bb.0: # %entry2994; CHECK-NEXT: zexth16 a0, a02995; CHECK-NEXT: bez32 a0, .LBB60_22996; CHECK-NEXT: # %bb.1: # %label22997; CHECK-NEXT: movi16 a0, 02998; CHECK-NEXT: rts162999; CHECK-NEXT: .LBB60_2: # %label13000; CHECK-NEXT: movi16 a0, 13001; CHECK-NEXT: rts163002;3003; GENERIC-LABEL: brR0_i16_eq:3004; GENERIC: # %bb.0: # %entry3005; GENERIC-NEXT: .cfi_def_cfa_offset 03006; GENERIC-NEXT: subi16 sp, sp, 43007; GENERIC-NEXT: .cfi_def_cfa_offset 43008; GENERIC-NEXT: movi16 a1, 03009; GENERIC-NEXT: lsli16 a2, a1, 243010; GENERIC-NEXT: lsli16 a1, a1, 163011; GENERIC-NEXT: or16 a1, a23012; GENERIC-NEXT: movi16 a2, 2553013; GENERIC-NEXT: lsli16 a3, a2, 83014; GENERIC-NEXT: or16 a3, a13015; GENERIC-NEXT: or16 a3, a23016; GENERIC-NEXT: and16 a3, a03017; GENERIC-NEXT: cmpnei16 a3, 03018; GENERIC-NEXT: bf16 .LBB60_23019; GENERIC-NEXT: # %bb.1: # %label23020; GENERIC-NEXT: movi16 a0, 03021; GENERIC-NEXT: addi16 sp, sp, 43022; GENERIC-NEXT: rts163023; GENERIC-NEXT: .LBB60_2: # %label13024; GENERIC-NEXT: movi16 a0, 13025; GENERIC-NEXT: addi16 sp, sp, 43026; GENERIC-NEXT: rts163027entry:3028 %icmp = icmp eq i16 %x, 03029 br i1 %icmp, label %label1, label %label23030label1:3031 ret i16 13032label2:3033 ret i16 03034}3035 3036;NE3037define i16 @brRR_i16_ne(i16 %x, i16 %y) {3038; CHECK-LABEL: brRR_i16_ne:3039; CHECK: # %bb.0: # %entry3040; CHECK-NEXT: zexth16 a0, a03041; CHECK-NEXT: zexth16 a1, a13042; CHECK-NEXT: cmpne16 a1, a03043; CHECK-NEXT: bf32 .LBB61_23044; CHECK-NEXT: # %bb.1: # %label13045; CHECK-NEXT: movi16 a0, 13046; CHECK-NEXT: rts163047; CHECK-NEXT: .LBB61_2: # %label23048; CHECK-NEXT: movi16 a0, 03049; CHECK-NEXT: rts163050;3051; GENERIC-LABEL: brRR_i16_ne:3052; GENERIC: # %bb.0: # %entry3053; GENERIC-NEXT: subi16 sp, sp, 43054; GENERIC-NEXT: .cfi_def_cfa_offset 43055; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3056; GENERIC-NEXT: .cfi_offset l0, -43057; GENERIC-NEXT: subi16 sp, sp, 43058; GENERIC-NEXT: .cfi_def_cfa_offset 83059; GENERIC-NEXT: movi16 a2, 03060; GENERIC-NEXT: lsli16 a3, a2, 243061; GENERIC-NEXT: lsli16 a2, a2, 163062; GENERIC-NEXT: or16 a2, a33063; GENERIC-NEXT: movi16 a3, 2553064; GENERIC-NEXT: lsli16 l0, a3, 83065; GENERIC-NEXT: or16 l0, a23066; GENERIC-NEXT: or16 l0, a33067; GENERIC-NEXT: and16 a0, l03068; GENERIC-NEXT: and16 l0, a13069; GENERIC-NEXT: cmpne16 l0, a03070; GENERIC-NEXT: bf16 .LBB61_23071; GENERIC-NEXT: # %bb.1: # %label13072; GENERIC-NEXT: movi16 a0, 13073; GENERIC-NEXT: br32 .LBB61_33074; GENERIC-NEXT: .LBB61_2: # %label23075; GENERIC-NEXT: movi16 a0, 03076; GENERIC-NEXT: .LBB61_3: # %label13077; GENERIC-NEXT: addi16 sp, sp, 43078; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3079; GENERIC-NEXT: addi16 sp, sp, 43080; GENERIC-NEXT: rts163081entry:3082 %icmp = icmp ne i16 %y, %x3083 br i1 %icmp, label %label1, label %label23084label1:3085 ret i16 13086label2:3087 ret i16 03088}3089 3090define i16 @brRI_i16_ne(i16 %x) {3091; CHECK-LABEL: brRI_i16_ne:3092; CHECK: # %bb.0: # %entry3093; CHECK-NEXT: zexth16 a0, a03094; CHECK-NEXT: cmpnei16 a0, 103095; CHECK-NEXT: bf32 .LBB62_23096; CHECK-NEXT: # %bb.1: # %label13097; CHECK-NEXT: movi16 a0, 13098; CHECK-NEXT: rts163099; CHECK-NEXT: .LBB62_2: # %label23100; CHECK-NEXT: movi16 a0, 03101; CHECK-NEXT: rts163102;3103; GENERIC-LABEL: brRI_i16_ne:3104; GENERIC: # %bb.0: # %entry3105; GENERIC-NEXT: .cfi_def_cfa_offset 03106; GENERIC-NEXT: subi16 sp, sp, 43107; GENERIC-NEXT: .cfi_def_cfa_offset 43108; GENERIC-NEXT: movi16 a1, 03109; GENERIC-NEXT: lsli16 a2, a1, 243110; GENERIC-NEXT: lsli16 a1, a1, 163111; GENERIC-NEXT: or16 a1, a23112; GENERIC-NEXT: movi16 a2, 2553113; GENERIC-NEXT: lsli16 a3, a2, 83114; GENERIC-NEXT: or16 a3, a13115; GENERIC-NEXT: or16 a3, a23116; GENERIC-NEXT: and16 a3, a03117; GENERIC-NEXT: cmpnei16 a3, 103118; GENERIC-NEXT: bf16 .LBB62_23119; GENERIC-NEXT: # %bb.1: # %label13120; GENERIC-NEXT: movi16 a0, 13121; GENERIC-NEXT: addi16 sp, sp, 43122; GENERIC-NEXT: rts163123; GENERIC-NEXT: .LBB62_2: # %label23124; GENERIC-NEXT: movi16 a0, 03125; GENERIC-NEXT: addi16 sp, sp, 43126; GENERIC-NEXT: rts163127entry:3128 %icmp = icmp ne i16 %x, 103129 br i1 %icmp, label %label1, label %label23130label1:3131 ret i16 13132label2:3133 ret i16 03134}3135 3136define i16 @brR0_i16_ne(i16 %x) {3137; CHECK-LABEL: brR0_i16_ne:3138; CHECK: # %bb.0: # %entry3139; CHECK-NEXT: zexth16 a0, a03140; CHECK-NEXT: bez32 a0, .LBB63_23141; CHECK-NEXT: # %bb.1: # %label13142; CHECK-NEXT: movi16 a0, 13143; CHECK-NEXT: rts163144; CHECK-NEXT: .LBB63_2: # %label23145; CHECK-NEXT: movi16 a0, 03146; CHECK-NEXT: rts163147;3148; GENERIC-LABEL: brR0_i16_ne:3149; GENERIC: # %bb.0: # %entry3150; GENERIC-NEXT: .cfi_def_cfa_offset 03151; GENERIC-NEXT: subi16 sp, sp, 43152; GENERIC-NEXT: .cfi_def_cfa_offset 43153; GENERIC-NEXT: movi16 a1, 03154; GENERIC-NEXT: lsli16 a2, a1, 243155; GENERIC-NEXT: lsli16 a1, a1, 163156; GENERIC-NEXT: or16 a1, a23157; GENERIC-NEXT: movi16 a2, 2553158; GENERIC-NEXT: lsli16 a3, a2, 83159; GENERIC-NEXT: or16 a3, a13160; GENERIC-NEXT: or16 a3, a23161; GENERIC-NEXT: and16 a3, a03162; GENERIC-NEXT: cmpnei16 a3, 03163; GENERIC-NEXT: bf16 .LBB63_23164; GENERIC-NEXT: # %bb.1: # %label13165; GENERIC-NEXT: movi16 a0, 13166; GENERIC-NEXT: addi16 sp, sp, 43167; GENERIC-NEXT: rts163168; GENERIC-NEXT: .LBB63_2: # %label23169; GENERIC-NEXT: movi16 a0, 03170; GENERIC-NEXT: addi16 sp, sp, 43171; GENERIC-NEXT: rts163172entry:3173 %icmp = icmp ne i16 %x, 03174 br i1 %icmp, label %label1, label %label23175label1:3176 ret i16 13177label2:3178 ret i16 03179}3180 3181;UGT3182define i16 @brRR_i16_ugt(i16 %x, i16 %y) {3183; CHECK-LABEL: brRR_i16_ugt:3184; CHECK: # %bb.0: # %entry3185; CHECK-NEXT: zexth16 a1, a13186; CHECK-NEXT: zexth16 a0, a03187; CHECK-NEXT: cmphs16 a0, a13188; CHECK-NEXT: bt32 .LBB64_23189; CHECK-NEXT: # %bb.1: # %label13190; CHECK-NEXT: movi16 a0, 13191; CHECK-NEXT: rts163192; CHECK-NEXT: .LBB64_2: # %label23193; CHECK-NEXT: movi16 a0, 03194; CHECK-NEXT: rts163195;3196; GENERIC-LABEL: brRR_i16_ugt:3197; GENERIC: # %bb.0: # %entry3198; GENERIC-NEXT: subi16 sp, sp, 43199; GENERIC-NEXT: .cfi_def_cfa_offset 43200; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3201; GENERIC-NEXT: .cfi_offset l0, -43202; GENERIC-NEXT: subi16 sp, sp, 43203; GENERIC-NEXT: .cfi_def_cfa_offset 83204; GENERIC-NEXT: movi16 a2, 03205; GENERIC-NEXT: lsli16 a3, a2, 243206; GENERIC-NEXT: lsli16 a2, a2, 163207; GENERIC-NEXT: or16 a2, a33208; GENERIC-NEXT: movi16 a3, 2553209; GENERIC-NEXT: lsli16 l0, a3, 83210; GENERIC-NEXT: or16 l0, a23211; GENERIC-NEXT: or16 l0, a33212; GENERIC-NEXT: and16 a1, l03213; GENERIC-NEXT: and16 l0, a03214; GENERIC-NEXT: cmphs16 l0, a13215; GENERIC-NEXT: bt16 .LBB64_23216; GENERIC-NEXT: # %bb.1: # %label13217; GENERIC-NEXT: movi16 a0, 13218; GENERIC-NEXT: br32 .LBB64_33219; GENERIC-NEXT: .LBB64_2: # %label23220; GENERIC-NEXT: movi16 a0, 03221; GENERIC-NEXT: .LBB64_3: # %label13222; GENERIC-NEXT: addi16 sp, sp, 43223; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3224; GENERIC-NEXT: addi16 sp, sp, 43225; GENERIC-NEXT: rts163226; CHECK-UGTXT: icmpu32 a0, a1, a03227; CHECK-UGTXT: rts163228entry:3229 %icmp = icmp ugt i16 %y, %x3230 br i1 %icmp, label %label1, label %label23231label1:3232 ret i16 13233label2:3234 ret i16 03235}3236 3237define i16 @brRI_i16_ugt(i16 %x) {3238; CHECK-LABEL: brRI_i16_ugt:3239; CHECK: # %bb.0: # %entry3240; CHECK-NEXT: zexth16 a0, a03241; CHECK-NEXT: cmphsi16 a0, 113242; CHECK-NEXT: bf32 .LBB65_23243; CHECK-NEXT: # %bb.1: # %label13244; CHECK-NEXT: movi16 a0, 13245; CHECK-NEXT: rts163246; CHECK-NEXT: .LBB65_2: # %label23247; CHECK-NEXT: movi16 a0, 03248; CHECK-NEXT: rts163249;3250; GENERIC-LABEL: brRI_i16_ugt:3251; GENERIC: # %bb.0: # %entry3252; GENERIC-NEXT: .cfi_def_cfa_offset 03253; GENERIC-NEXT: subi16 sp, sp, 43254; GENERIC-NEXT: .cfi_def_cfa_offset 43255; GENERIC-NEXT: movi16 a1, 03256; GENERIC-NEXT: lsli16 a2, a1, 243257; GENERIC-NEXT: lsli16 a1, a1, 163258; GENERIC-NEXT: or16 a1, a23259; GENERIC-NEXT: movi16 a2, 2553260; GENERIC-NEXT: lsli16 a3, a2, 83261; GENERIC-NEXT: or16 a3, a13262; GENERIC-NEXT: or16 a3, a23263; GENERIC-NEXT: and16 a3, a03264; GENERIC-NEXT: cmphsi16 a3, 113265; GENERIC-NEXT: bf16 .LBB65_23266; GENERIC-NEXT: # %bb.1: # %label13267; GENERIC-NEXT: movi16 a0, 13268; GENERIC-NEXT: addi16 sp, sp, 43269; GENERIC-NEXT: rts163270; GENERIC-NEXT: .LBB65_2: # %label23271; GENERIC-NEXT: movi16 a0, 03272; GENERIC-NEXT: addi16 sp, sp, 43273; GENERIC-NEXT: rts163274; CHECK-UGTXT: icmpu32 a0, a1, a03275; CHECK-UGTXT: rts163276entry:3277 %icmp = icmp ugt i16 %x, 103278 br i1 %icmp, label %label1, label %label23279label1:3280 ret i16 13281label2:3282 ret i16 03283}3284 3285define i16 @brR0_i16_ugt(i16 %x) {3286; CHECK-LABEL: brR0_i16_ugt:3287; CHECK: # %bb.0: # %entry3288; CHECK-NEXT: zexth16 a0, a03289; CHECK-NEXT: bez32 a0, .LBB66_23290; CHECK-NEXT: # %bb.1: # %label13291; CHECK-NEXT: movi16 a0, 13292; CHECK-NEXT: rts163293; CHECK-NEXT: .LBB66_2: # %label23294; CHECK-NEXT: movi16 a0, 03295; CHECK-NEXT: rts163296;3297; GENERIC-LABEL: brR0_i16_ugt:3298; GENERIC: # %bb.0: # %entry3299; GENERIC-NEXT: .cfi_def_cfa_offset 03300; GENERIC-NEXT: subi16 sp, sp, 43301; GENERIC-NEXT: .cfi_def_cfa_offset 43302; GENERIC-NEXT: movi16 a1, 03303; GENERIC-NEXT: lsli16 a2, a1, 243304; GENERIC-NEXT: lsli16 a1, a1, 163305; GENERIC-NEXT: or16 a1, a23306; GENERIC-NEXT: movi16 a2, 2553307; GENERIC-NEXT: lsli16 a3, a2, 83308; GENERIC-NEXT: or16 a3, a13309; GENERIC-NEXT: or16 a3, a23310; GENERIC-NEXT: and16 a3, a03311; GENERIC-NEXT: cmpnei16 a3, 03312; GENERIC-NEXT: bf16 .LBB66_23313; GENERIC-NEXT: # %bb.1: # %label13314; GENERIC-NEXT: movi16 a0, 13315; GENERIC-NEXT: addi16 sp, sp, 43316; GENERIC-NEXT: rts163317; GENERIC-NEXT: .LBB66_2: # %label23318; GENERIC-NEXT: movi16 a0, 03319; GENERIC-NEXT: addi16 sp, sp, 43320; GENERIC-NEXT: rts163321; CHECK-UGTXT: icmpu32 a0, a1, a03322; CHECK-UGTXT: rts163323entry:3324 %icmp = icmp ugt i16 %x, 03325 br i1 %icmp, label %label1, label %label23326label1:3327 ret i16 13328label2:3329 ret i16 03330}3331 3332;UGE3333define i16 @brRR_i16_uge(i16 %x, i16 %y) {3334; CHECK-LABEL: brRR_i16_uge:3335; CHECK: # %bb.0: # %entry3336; CHECK-NEXT: zexth16 a0, a03337; CHECK-NEXT: zexth16 a1, a13338; CHECK-NEXT: cmphs16 a1, a03339; CHECK-NEXT: bf32 .LBB67_23340; CHECK-NEXT: # %bb.1: # %label13341; CHECK-NEXT: movi16 a0, 13342; CHECK-NEXT: rts163343; CHECK-NEXT: .LBB67_2: # %label23344; CHECK-NEXT: movi16 a0, 03345; CHECK-NEXT: rts163346;3347; GENERIC-LABEL: brRR_i16_uge:3348; GENERIC: # %bb.0: # %entry3349; GENERIC-NEXT: subi16 sp, sp, 43350; GENERIC-NEXT: .cfi_def_cfa_offset 43351; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3352; GENERIC-NEXT: .cfi_offset l0, -43353; GENERIC-NEXT: subi16 sp, sp, 43354; GENERIC-NEXT: .cfi_def_cfa_offset 83355; GENERIC-NEXT: movi16 a2, 03356; GENERIC-NEXT: lsli16 a3, a2, 243357; GENERIC-NEXT: lsli16 a2, a2, 163358; GENERIC-NEXT: or16 a2, a33359; GENERIC-NEXT: movi16 a3, 2553360; GENERIC-NEXT: lsli16 l0, a3, 83361; GENERIC-NEXT: or16 l0, a23362; GENERIC-NEXT: or16 l0, a33363; GENERIC-NEXT: and16 a0, l03364; GENERIC-NEXT: and16 l0, a13365; GENERIC-NEXT: cmphs16 l0, a03366; GENERIC-NEXT: bf16 .LBB67_23367; GENERIC-NEXT: # %bb.1: # %label13368; GENERIC-NEXT: movi16 a0, 13369; GENERIC-NEXT: br32 .LBB67_33370; GENERIC-NEXT: .LBB67_2: # %label23371; GENERIC-NEXT: movi16 a0, 03372; GENERIC-NEXT: .LBB67_3: # %label13373; GENERIC-NEXT: addi16 sp, sp, 43374; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3375; GENERIC-NEXT: addi16 sp, sp, 43376; GENERIC-NEXT: rts163377; CHECK-UGTXT: icmpu32 a0, a1, a03378; CHECK-UGTXT: rts163379entry:3380 %icmp = icmp uge i16 %y, %x3381 br i1 %icmp, label %label1, label %label23382label1:3383 ret i16 13384label2:3385 ret i16 03386}3387 3388define i16 @brRI_i16_uge(i16 %x) {3389; CHECK-LABEL: brRI_i16_uge:3390; CHECK: # %bb.0: # %entry3391; CHECK-NEXT: zexth16 a0, a03392; CHECK-NEXT: cmphsi16 a0, 103393; CHECK-NEXT: bf32 .LBB68_23394; CHECK-NEXT: # %bb.1: # %label13395; CHECK-NEXT: movi16 a0, 13396; CHECK-NEXT: rts163397; CHECK-NEXT: .LBB68_2: # %label23398; CHECK-NEXT: movi16 a0, 03399; CHECK-NEXT: rts163400;3401; GENERIC-LABEL: brRI_i16_uge:3402; GENERIC: # %bb.0: # %entry3403; GENERIC-NEXT: .cfi_def_cfa_offset 03404; GENERIC-NEXT: subi16 sp, sp, 43405; GENERIC-NEXT: .cfi_def_cfa_offset 43406; GENERIC-NEXT: movi16 a1, 03407; GENERIC-NEXT: lsli16 a2, a1, 243408; GENERIC-NEXT: lsli16 a1, a1, 163409; GENERIC-NEXT: or16 a1, a23410; GENERIC-NEXT: movi16 a2, 2553411; GENERIC-NEXT: lsli16 a3, a2, 83412; GENERIC-NEXT: or16 a3, a13413; GENERIC-NEXT: or16 a3, a23414; GENERIC-NEXT: and16 a3, a03415; GENERIC-NEXT: cmphsi16 a3, 103416; GENERIC-NEXT: bf16 .LBB68_23417; GENERIC-NEXT: # %bb.1: # %label13418; GENERIC-NEXT: movi16 a0, 13419; GENERIC-NEXT: addi16 sp, sp, 43420; GENERIC-NEXT: rts163421; GENERIC-NEXT: .LBB68_2: # %label23422; GENERIC-NEXT: movi16 a0, 03423; GENERIC-NEXT: addi16 sp, sp, 43424; GENERIC-NEXT: rts163425; CHECK-UGTXT: icmpu32 a0, a1, a03426; CHECK-UGTXT: rts163427entry:3428 %icmp = icmp uge i16 %x, 103429 br i1 %icmp, label %label1, label %label23430label1:3431 ret i16 13432label2:3433 ret i16 03434}3435 3436;ULT3437define i16 @brRR_i16_ult(i16 %x, i16 %y) {3438; CHECK-LABEL: brRR_i16_ult:3439; CHECK: # %bb.0: # %entry3440; CHECK-NEXT: zexth16 a0, a03441; CHECK-NEXT: zexth16 a1, a13442; CHECK-NEXT: cmphs16 a1, a03443; CHECK-NEXT: bt32 .LBB69_23444; CHECK-NEXT: # %bb.1: # %label13445; CHECK-NEXT: movi16 a0, 13446; CHECK-NEXT: rts163447; CHECK-NEXT: .LBB69_2: # %label23448; CHECK-NEXT: movi16 a0, 03449; CHECK-NEXT: rts163450;3451; GENERIC-LABEL: brRR_i16_ult:3452; GENERIC: # %bb.0: # %entry3453; GENERIC-NEXT: subi16 sp, sp, 43454; GENERIC-NEXT: .cfi_def_cfa_offset 43455; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3456; GENERIC-NEXT: .cfi_offset l0, -43457; GENERIC-NEXT: subi16 sp, sp, 43458; GENERIC-NEXT: .cfi_def_cfa_offset 83459; GENERIC-NEXT: movi16 a2, 03460; GENERIC-NEXT: lsli16 a3, a2, 243461; GENERIC-NEXT: lsli16 a2, a2, 163462; GENERIC-NEXT: or16 a2, a33463; GENERIC-NEXT: movi16 a3, 2553464; GENERIC-NEXT: lsli16 l0, a3, 83465; GENERIC-NEXT: or16 l0, a23466; GENERIC-NEXT: or16 l0, a33467; GENERIC-NEXT: and16 a0, l03468; GENERIC-NEXT: and16 l0, a13469; GENERIC-NEXT: cmphs16 l0, a03470; GENERIC-NEXT: bt16 .LBB69_23471; GENERIC-NEXT: # %bb.1: # %label13472; GENERIC-NEXT: movi16 a0, 13473; GENERIC-NEXT: br32 .LBB69_33474; GENERIC-NEXT: .LBB69_2: # %label23475; GENERIC-NEXT: movi16 a0, 03476; GENERIC-NEXT: .LBB69_3: # %label13477; GENERIC-NEXT: addi16 sp, sp, 43478; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3479; GENERIC-NEXT: addi16 sp, sp, 43480; GENERIC-NEXT: rts163481; CHECK-UGTXT: icmpu32 a0, a1, a03482; CHECK-UGTXT: rts163483entry:3484 %icmp = icmp ult i16 %y, %x3485 br i1 %icmp, label %label1, label %label23486label1:3487 ret i16 13488label2:3489 ret i16 03490}3491 3492define i16 @brRI_i16_ult(i16 %x) {3493; CHECK-LABEL: brRI_i16_ult:3494; CHECK: # %bb.0: # %entry3495; CHECK-NEXT: zexth16 a0, a03496; CHECK-NEXT: movi16 a1, 93497; CHECK-NEXT: cmphs16 a1, a03498; CHECK-NEXT: bf32 .LBB70_23499; CHECK-NEXT: # %bb.1: # %label13500; CHECK-NEXT: movi16 a0, 13501; CHECK-NEXT: rts163502; CHECK-NEXT: .LBB70_2: # %label23503; CHECK-NEXT: movi16 a0, 03504; CHECK-NEXT: rts163505;3506; GENERIC-LABEL: brRI_i16_ult:3507; GENERIC: # %bb.0: # %entry3508; GENERIC-NEXT: .cfi_def_cfa_offset 03509; GENERIC-NEXT: subi16 sp, sp, 43510; GENERIC-NEXT: .cfi_def_cfa_offset 43511; GENERIC-NEXT: movi16 a1, 03512; GENERIC-NEXT: lsli16 a2, a1, 243513; GENERIC-NEXT: lsli16 a1, a1, 163514; GENERIC-NEXT: or16 a1, a23515; GENERIC-NEXT: movi16 a2, 2553516; GENERIC-NEXT: lsli16 a3, a2, 83517; GENERIC-NEXT: or16 a3, a13518; GENERIC-NEXT: or16 a3, a23519; GENERIC-NEXT: and16 a3, a03520; GENERIC-NEXT: movi16 a0, 93521; GENERIC-NEXT: cmphs16 a0, a33522; GENERIC-NEXT: bf16 .LBB70_23523; GENERIC-NEXT: # %bb.1: # %label13524; GENERIC-NEXT: movi16 a0, 13525; GENERIC-NEXT: addi16 sp, sp, 43526; GENERIC-NEXT: rts163527; GENERIC-NEXT: .LBB70_2: # %label23528; GENERIC-NEXT: movi16 a0, 03529; GENERIC-NEXT: addi16 sp, sp, 43530; GENERIC-NEXT: rts163531; CHECK-UGTXT: icmpu32 a0, a1, a03532; CHECK-UGTXT: rts163533entry:3534 %icmp = icmp ult i16 %x, 103535 br i1 %icmp, label %label1, label %label23536label1:3537 ret i16 13538label2:3539 ret i16 03540}3541 3542 3543;ULE3544define i16 @brRR_i16_ule(i16 %x, i16 %y) {3545; CHECK-LABEL: brRR_i16_ule:3546; CHECK: # %bb.0: # %entry3547; CHECK-NEXT: zexth16 a1, a13548; CHECK-NEXT: zexth16 a0, a03549; CHECK-NEXT: cmphs16 a0, a13550; CHECK-NEXT: bf32 .LBB71_23551; CHECK-NEXT: # %bb.1: # %label13552; CHECK-NEXT: movi16 a0, 13553; CHECK-NEXT: rts163554; CHECK-NEXT: .LBB71_2: # %label23555; CHECK-NEXT: movi16 a0, 03556; CHECK-NEXT: rts163557;3558; GENERIC-LABEL: brRR_i16_ule:3559; GENERIC: # %bb.0: # %entry3560; GENERIC-NEXT: subi16 sp, sp, 43561; GENERIC-NEXT: .cfi_def_cfa_offset 43562; GENERIC-NEXT: st16.w l0, (sp, 0) # 4-byte Folded Spill3563; GENERIC-NEXT: .cfi_offset l0, -43564; GENERIC-NEXT: subi16 sp, sp, 43565; GENERIC-NEXT: .cfi_def_cfa_offset 83566; GENERIC-NEXT: movi16 a2, 03567; GENERIC-NEXT: lsli16 a3, a2, 243568; GENERIC-NEXT: lsli16 a2, a2, 163569; GENERIC-NEXT: or16 a2, a33570; GENERIC-NEXT: movi16 a3, 2553571; GENERIC-NEXT: lsli16 l0, a3, 83572; GENERIC-NEXT: or16 l0, a23573; GENERIC-NEXT: or16 l0, a33574; GENERIC-NEXT: and16 a1, l03575; GENERIC-NEXT: and16 l0, a03576; GENERIC-NEXT: cmphs16 l0, a13577; GENERIC-NEXT: bf16 .LBB71_23578; GENERIC-NEXT: # %bb.1: # %label13579; GENERIC-NEXT: movi16 a0, 13580; GENERIC-NEXT: br32 .LBB71_33581; GENERIC-NEXT: .LBB71_2: # %label23582; GENERIC-NEXT: movi16 a0, 03583; GENERIC-NEXT: .LBB71_3: # %label13584; GENERIC-NEXT: addi16 sp, sp, 43585; GENERIC-NEXT: ld16.w l0, (sp, 0) # 4-byte Folded Reload3586; GENERIC-NEXT: addi16 sp, sp, 43587; GENERIC-NEXT: rts163588; CHECK-UGTXT: icmpu32 a0, a1, a03589; CHECK-UGTXT: rts163590entry:3591 %icmp = icmp ule i16 %y, %x3592 br i1 %icmp, label %label1, label %label23593label1:3594 ret i16 13595label2:3596 ret i16 03597}3598 3599define i16 @brRI_i16_ule(i16 %x) {3600; CHECK-LABEL: brRI_i16_ule:3601; CHECK: # %bb.0: # %entry3602; CHECK-NEXT: zexth16 a0, a03603; CHECK-NEXT: movi16 a1, 103604; CHECK-NEXT: cmphs16 a1, a03605; CHECK-NEXT: bf32 .LBB72_23606; CHECK-NEXT: # %bb.1: # %label13607; CHECK-NEXT: movi16 a0, 13608; CHECK-NEXT: rts163609; CHECK-NEXT: .LBB72_2: # %label23610; CHECK-NEXT: movi16 a0, 03611; CHECK-NEXT: rts163612;3613; GENERIC-LABEL: brRI_i16_ule:3614; GENERIC: # %bb.0: # %entry3615; GENERIC-NEXT: .cfi_def_cfa_offset 03616; GENERIC-NEXT: subi16 sp, sp, 43617; GENERIC-NEXT: .cfi_def_cfa_offset 43618; GENERIC-NEXT: movi16 a1, 03619; GENERIC-NEXT: lsli16 a2, a1, 243620; GENERIC-NEXT: lsli16 a1, a1, 163621; GENERIC-NEXT: or16 a1, a23622; GENERIC-NEXT: movi16 a2, 2553623; GENERIC-NEXT: lsli16 a3, a2, 83624; GENERIC-NEXT: or16 a3, a13625; GENERIC-NEXT: or16 a3, a23626; GENERIC-NEXT: and16 a3, a03627; GENERIC-NEXT: movi16 a0, 103628; GENERIC-NEXT: cmphs16 a0, a33629; GENERIC-NEXT: bf16 .LBB72_23630; GENERIC-NEXT: # %bb.1: # %label13631; GENERIC-NEXT: movi16 a0, 13632; GENERIC-NEXT: addi16 sp, sp, 43633; GENERIC-NEXT: rts163634; GENERIC-NEXT: .LBB72_2: # %label23635; GENERIC-NEXT: movi16 a0, 03636; GENERIC-NEXT: addi16 sp, sp, 43637; GENERIC-NEXT: rts163638; CHECK-UGTXT: icmpu32 a0, a1, a03639; CHECK-UGTXT: rts163640entry:3641 %icmp = icmp ule i16 %x, 103642 br i1 %icmp, label %label1, label %label23643label1:3644 ret i16 13645label2:3646 ret i16 03647}3648 3649define i16 @brR0_i16_ule(i16 %x) {3650; CHECK-LABEL: brR0_i16_ule:3651; CHECK: # %bb.0: # %entry3652; CHECK-NEXT: zexth16 a0, a03653; CHECK-NEXT: bnez32 a0, .LBB73_23654; CHECK-NEXT: # %bb.1: # %label13655; CHECK-NEXT: movi16 a0, 13656; CHECK-NEXT: rts163657; CHECK-NEXT: .LBB73_2: # %label23658; CHECK-NEXT: movi16 a0, 03659; CHECK-NEXT: rts163660;3661; GENERIC-LABEL: brR0_i16_ule:3662; GENERIC: # %bb.0: # %entry3663; GENERIC-NEXT: .cfi_def_cfa_offset 03664; GENERIC-NEXT: subi16 sp, sp, 43665; GENERIC-NEXT: .cfi_def_cfa_offset 43666; GENERIC-NEXT: movi16 a1, 03667; GENERIC-NEXT: lsli16 a2, a1, 243668; GENERIC-NEXT: lsli16 a1, a1, 163669; GENERIC-NEXT: or16 a1, a23670; GENERIC-NEXT: movi16 a2, 2553671; GENERIC-NEXT: lsli16 a3, a2, 83672; GENERIC-NEXT: or16 a3, a13673; GENERIC-NEXT: or16 a3, a23674; GENERIC-NEXT: and16 a3, a03675; GENERIC-NEXT: cmpnei16 a3, 03676; GENERIC-NEXT: bt16 .LBB73_23677; GENERIC-NEXT: # %bb.1: # %label13678; GENERIC-NEXT: movi16 a0, 13679; GENERIC-NEXT: addi16 sp, sp, 43680; GENERIC-NEXT: rts163681; GENERIC-NEXT: .LBB73_2: # %label23682; GENERIC-NEXT: movi16 a0, 03683; GENERIC-NEXT: addi16 sp, sp, 43684; GENERIC-NEXT: rts163685; CHECK-UGTXT: icmpu32 a0, a1, a03686; CHECK-UGTXT: rts163687entry:3688 %icmp = icmp ule i16 %x, 03689 br i1 %icmp, label %label1, label %label23690label1:3691 ret i16 13692label2:3693 ret i16 03694}3695 3696;SGT3697define i16 @brRR_i16_sgt(i16 %x, i16 %y) {3698; CHECK-LABEL: brRR_i16_sgt:3699; CHECK: # %bb.0: # %entry3700; CHECK-NEXT: sexth16 a1, a13701; CHECK-NEXT: sexth16 a0, a03702; CHECK-NEXT: cmplt16 a0, a13703; CHECK-NEXT: bf32 .LBB74_23704; CHECK-NEXT: # %bb.1: # %label13705; CHECK-NEXT: movi16 a0, 13706; CHECK-NEXT: rts163707; CHECK-NEXT: .LBB74_2: # %label23708; CHECK-NEXT: movi16 a0, 03709; CHECK-NEXT: rts163710;3711; GENERIC-LABEL: brRR_i16_sgt:3712; GENERIC: # %bb.0: # %entry3713; GENERIC-NEXT: .cfi_def_cfa_offset 03714; GENERIC-NEXT: subi16 sp, sp, 43715; GENERIC-NEXT: .cfi_def_cfa_offset 43716; GENERIC-NEXT: sexth16 a1, a13717; GENERIC-NEXT: sexth16 a0, a03718; GENERIC-NEXT: cmplt16 a0, a13719; GENERIC-NEXT: bf16 .LBB74_23720; GENERIC-NEXT: # %bb.1: # %label13721; GENERIC-NEXT: movi16 a0, 13722; GENERIC-NEXT: addi16 sp, sp, 43723; GENERIC-NEXT: rts163724; GENERIC-NEXT: .LBB74_2: # %label23725; GENERIC-NEXT: movi16 a0, 03726; GENERIC-NEXT: addi16 sp, sp, 43727; GENERIC-NEXT: rts163728; CHECK-UGTXT: icmpu32 a0, a1, a03729; CHECK-UGTXT: rts163730entry:3731 %icmp = icmp sgt i16 %y, %x3732 br i1 %icmp, label %label1, label %label23733label1:3734 ret i16 13735label2:3736 ret i16 03737}3738 3739define i16 @brRI_i16_sgt(i16 %x) {3740; CHECK-LABEL: brRI_i16_sgt:3741; CHECK: # %bb.0: # %entry3742; CHECK-NEXT: sexth16 a0, a03743; CHECK-NEXT: cmplti16 a0, 113744; CHECK-NEXT: bt32 .LBB75_23745; CHECK-NEXT: # %bb.1: # %label13746; CHECK-NEXT: movi16 a0, 13747; CHECK-NEXT: rts163748; CHECK-NEXT: .LBB75_2: # %label23749; CHECK-NEXT: movi16 a0, 03750; CHECK-NEXT: rts163751;3752; GENERIC-LABEL: brRI_i16_sgt:3753; GENERIC: # %bb.0: # %entry3754; GENERIC-NEXT: .cfi_def_cfa_offset 03755; GENERIC-NEXT: subi16 sp, sp, 43756; GENERIC-NEXT: .cfi_def_cfa_offset 43757; GENERIC-NEXT: sexth16 a0, a03758; GENERIC-NEXT: cmplti16 a0, 113759; GENERIC-NEXT: bt16 .LBB75_23760; GENERIC-NEXT: # %bb.1: # %label13761; GENERIC-NEXT: movi16 a0, 13762; GENERIC-NEXT: addi16 sp, sp, 43763; GENERIC-NEXT: rts163764; GENERIC-NEXT: .LBB75_2: # %label23765; GENERIC-NEXT: movi16 a0, 03766; GENERIC-NEXT: addi16 sp, sp, 43767; GENERIC-NEXT: rts163768; CHECK-UGTXT: icmpu32 a0, a1, a03769; CHECK-UGTXT: rts163770entry:3771 %icmp = icmp sgt i16 %x, 103772 br i1 %icmp, label %label1, label %label23773label1:3774 ret i16 13775label2:3776 ret i16 03777}3778 3779define i16 @brR0_i16_sgt(i16 %x) {3780; CHECK-LABEL: brR0_i16_sgt:3781; CHECK: # %bb.0: # %entry3782; CHECK-NEXT: sexth16 a0, a03783; CHECK-NEXT: blsz32 a0, .LBB76_23784; CHECK-NEXT: # %bb.1: # %label13785; CHECK-NEXT: movi16 a0, 13786; CHECK-NEXT: rts163787; CHECK-NEXT: .LBB76_2: # %label23788; CHECK-NEXT: movi16 a0, 03789; CHECK-NEXT: rts163790;3791; GENERIC-LABEL: brR0_i16_sgt:3792; GENERIC: # %bb.0: # %entry3793; GENERIC-NEXT: .cfi_def_cfa_offset 03794; GENERIC-NEXT: subi16 sp, sp, 43795; GENERIC-NEXT: .cfi_def_cfa_offset 43796; GENERIC-NEXT: sexth16 a0, a03797; GENERIC-NEXT: cmplti16 a0, 13798; GENERIC-NEXT: bt16 .LBB76_23799; GENERIC-NEXT: # %bb.1: # %label13800; GENERIC-NEXT: movi16 a0, 13801; GENERIC-NEXT: addi16 sp, sp, 43802; GENERIC-NEXT: rts163803; GENERIC-NEXT: .LBB76_2: # %label23804; GENERIC-NEXT: movi16 a0, 03805; GENERIC-NEXT: addi16 sp, sp, 43806; GENERIC-NEXT: rts163807; CHECK-UGTXT: icmpu32 a0, a1, a03808; CHECK-UGTXT: rts163809entry:3810 %icmp = icmp sgt i16 %x, 03811 br i1 %icmp, label %label1, label %label23812label1:3813 ret i16 13814label2:3815 ret i16 03816}3817 3818;SGE3819define i16 @brRR_i16_sge(i16 %x, i16 %y) {3820; CHECK-LABEL: brRR_i16_sge:3821; CHECK: # %bb.0: # %entry3822; CHECK-NEXT: sexth16 a0, a03823; CHECK-NEXT: sexth16 a1, a13824; CHECK-NEXT: cmplt16 a1, a03825; CHECK-NEXT: bt32 .LBB77_23826; CHECK-NEXT: # %bb.1: # %label13827; CHECK-NEXT: movi16 a0, 13828; CHECK-NEXT: rts163829; CHECK-NEXT: .LBB77_2: # %label23830; CHECK-NEXT: movi16 a0, 03831; CHECK-NEXT: rts163832;3833; GENERIC-LABEL: brRR_i16_sge:3834; GENERIC: # %bb.0: # %entry3835; GENERIC-NEXT: .cfi_def_cfa_offset 03836; GENERIC-NEXT: subi16 sp, sp, 43837; GENERIC-NEXT: .cfi_def_cfa_offset 43838; GENERIC-NEXT: sexth16 a0, a03839; GENERIC-NEXT: sexth16 a1, a13840; GENERIC-NEXT: cmplt16 a1, a03841; GENERIC-NEXT: bt16 .LBB77_23842; GENERIC-NEXT: # %bb.1: # %label13843; GENERIC-NEXT: movi16 a0, 13844; GENERIC-NEXT: addi16 sp, sp, 43845; GENERIC-NEXT: rts163846; GENERIC-NEXT: .LBB77_2: # %label23847; GENERIC-NEXT: movi16 a0, 03848; GENERIC-NEXT: addi16 sp, sp, 43849; GENERIC-NEXT: rts163850; CHECK-UGTXT: icmpu32 a0, a1, a03851; CHECK-UGTXT: rts163852entry:3853 %icmp = icmp sge i16 %y, %x3854 br i1 %icmp, label %label1, label %label23855label1:3856 ret i16 13857label2:3858 ret i16 03859}3860 3861define i16 @brRI_i16_sge(i16 %x) {3862; CHECK-LABEL: brRI_i16_sge:3863; CHECK: # %bb.0: # %entry3864; CHECK-NEXT: sexth16 a0, a03865; CHECK-NEXT: cmplti16 a0, 103866; CHECK-NEXT: bt32 .LBB78_23867; CHECK-NEXT: # %bb.1: # %label13868; CHECK-NEXT: movi16 a0, 13869; CHECK-NEXT: rts163870; CHECK-NEXT: .LBB78_2: # %label23871; CHECK-NEXT: movi16 a0, 03872; CHECK-NEXT: rts163873;3874; GENERIC-LABEL: brRI_i16_sge:3875; GENERIC: # %bb.0: # %entry3876; GENERIC-NEXT: .cfi_def_cfa_offset 03877; GENERIC-NEXT: subi16 sp, sp, 43878; GENERIC-NEXT: .cfi_def_cfa_offset 43879; GENERIC-NEXT: sexth16 a0, a03880; GENERIC-NEXT: cmplti16 a0, 103881; GENERIC-NEXT: bt16 .LBB78_23882; GENERIC-NEXT: # %bb.1: # %label13883; GENERIC-NEXT: movi16 a0, 13884; GENERIC-NEXT: addi16 sp, sp, 43885; GENERIC-NEXT: rts163886; GENERIC-NEXT: .LBB78_2: # %label23887; GENERIC-NEXT: movi16 a0, 03888; GENERIC-NEXT: addi16 sp, sp, 43889; GENERIC-NEXT: rts163890; CHECK-UGTXT: icmpu32 a0, a1, a03891; CHECK-UGTXT: rts163892entry:3893 %icmp = icmp sge i16 %x, 103894 br i1 %icmp, label %label1, label %label23895label1:3896 ret i16 13897label2:3898 ret i16 03899}3900 3901define i16 @brR0_i16_sge(i16 %x) {3902; CHECK-LABEL: brR0_i16_sge:3903; CHECK: # %bb.0: # %entry3904; CHECK-NEXT: sexth16 a0, a03905; CHECK-NEXT: blz32 a0, .LBB79_23906; CHECK-NEXT: # %bb.1: # %label13907; CHECK-NEXT: movi16 a0, 13908; CHECK-NEXT: rts163909; CHECK-NEXT: .LBB79_2: # %label23910; CHECK-NEXT: movi16 a0, 03911; CHECK-NEXT: rts163912;3913; GENERIC-LABEL: brR0_i16_sge:3914; GENERIC: # %bb.0: # %entry3915; GENERIC-NEXT: .cfi_def_cfa_offset 03916; GENERIC-NEXT: subi16 sp, sp, 43917; GENERIC-NEXT: .cfi_def_cfa_offset 43918; GENERIC-NEXT: sexth16 a0, a03919; GENERIC-NEXT: movi16 a1, 03920; GENERIC-NEXT: cmplt16 a0, a13921; GENERIC-NEXT: bt16 .LBB79_23922; GENERIC-NEXT: # %bb.1: # %label13923; GENERIC-NEXT: movi16 a0, 13924; GENERIC-NEXT: addi16 sp, sp, 43925; GENERIC-NEXT: rts163926; GENERIC-NEXT: .LBB79_2: # %label23927; GENERIC-NEXT: movi16 a0, 03928; GENERIC-NEXT: addi16 sp, sp, 43929; GENERIC-NEXT: rts163930; CHECK-UGTXT: icmpu32 a0, a1, a03931; CHECK-UGTXT: rts163932entry:3933 %icmp = icmp sge i16 %x, 03934 br i1 %icmp, label %label1, label %label23935label1:3936 ret i16 13937label2:3938 ret i16 03939}3940 3941;SLT3942define i16 @brRR_i16_slt(i16 %x, i16 %y) {3943; CHECK-LABEL: brRR_i16_slt:3944; CHECK: # %bb.0: # %entry3945; CHECK-NEXT: sexth16 a0, a03946; CHECK-NEXT: sexth16 a1, a13947; CHECK-NEXT: cmplt16 a1, a03948; CHECK-NEXT: bf32 .LBB80_23949; CHECK-NEXT: # %bb.1: # %label13950; CHECK-NEXT: movi16 a0, 13951; CHECK-NEXT: rts163952; CHECK-NEXT: .LBB80_2: # %label23953; CHECK-NEXT: movi16 a0, 03954; CHECK-NEXT: rts163955;3956; GENERIC-LABEL: brRR_i16_slt:3957; GENERIC: # %bb.0: # %entry3958; GENERIC-NEXT: .cfi_def_cfa_offset 03959; GENERIC-NEXT: subi16 sp, sp, 43960; GENERIC-NEXT: .cfi_def_cfa_offset 43961; GENERIC-NEXT: sexth16 a0, a03962; GENERIC-NEXT: sexth16 a1, a13963; GENERIC-NEXT: cmplt16 a1, a03964; GENERIC-NEXT: bf16 .LBB80_23965; GENERIC-NEXT: # %bb.1: # %label13966; GENERIC-NEXT: movi16 a0, 13967; GENERIC-NEXT: addi16 sp, sp, 43968; GENERIC-NEXT: rts163969; GENERIC-NEXT: .LBB80_2: # %label23970; GENERIC-NEXT: movi16 a0, 03971; GENERIC-NEXT: addi16 sp, sp, 43972; GENERIC-NEXT: rts163973; CHECK-UGTXT: icmpu32 a0, a1, a03974; CHECK-UGTXT: rts163975entry:3976 %icmp = icmp slt i16 %y, %x3977 br i1 %icmp, label %label1, label %label23978label1:3979 ret i16 13980label2:3981 ret i16 03982}3983 3984define i16 @brRI_i16_slt(i16 %x) {3985; CHECK-LABEL: brRI_i16_slt:3986; CHECK: # %bb.0: # %entry3987; CHECK-NEXT: sexth16 a0, a03988; CHECK-NEXT: movi16 a1, 93989; CHECK-NEXT: cmplt16 a1, a03990; CHECK-NEXT: bt32 .LBB81_23991; CHECK-NEXT: # %bb.1: # %label13992; CHECK-NEXT: movi16 a0, 13993; CHECK-NEXT: rts163994; CHECK-NEXT: .LBB81_2: # %label23995; CHECK-NEXT: movi16 a0, 03996; CHECK-NEXT: rts163997;3998; GENERIC-LABEL: brRI_i16_slt:3999; GENERIC: # %bb.0: # %entry4000; GENERIC-NEXT: .cfi_def_cfa_offset 04001; GENERIC-NEXT: subi16 sp, sp, 44002; GENERIC-NEXT: .cfi_def_cfa_offset 44003; GENERIC-NEXT: sexth16 a0, a04004; GENERIC-NEXT: movi16 a1, 94005; GENERIC-NEXT: cmplt16 a1, a04006; GENERIC-NEXT: bt16 .LBB81_24007; GENERIC-NEXT: # %bb.1: # %label14008; GENERIC-NEXT: movi16 a0, 14009; GENERIC-NEXT: addi16 sp, sp, 44010; GENERIC-NEXT: rts164011; GENERIC-NEXT: .LBB81_2: # %label24012; GENERIC-NEXT: movi16 a0, 04013; GENERIC-NEXT: addi16 sp, sp, 44014; GENERIC-NEXT: rts164015; CHECK-UGTXT: icmpu32 a0, a1, a04016; CHECK-UGTXT: rts164017entry:4018 %icmp = icmp slt i16 %x, 104019 br i1 %icmp, label %label1, label %label24020label1:4021 ret i16 14022label2:4023 ret i16 04024}4025 4026define i16 @brR0_i16_slt(i16 %x) {4027; CHECK-LABEL: brR0_i16_slt:4028; CHECK: # %bb.0: # %entry4029; CHECK-NEXT: sexth16 a0, a04030; CHECK-NEXT: blz32 a0, .LBB82_24031; CHECK-NEXT: # %bb.1: # %label24032; CHECK-NEXT: movi16 a0, 04033; CHECK-NEXT: rts164034; CHECK-NEXT: .LBB82_2: # %label14035; CHECK-NEXT: movi16 a0, 14036; CHECK-NEXT: rts164037;4038; GENERIC-LABEL: brR0_i16_slt:4039; GENERIC: # %bb.0: # %entry4040; GENERIC-NEXT: .cfi_def_cfa_offset 04041; GENERIC-NEXT: subi16 sp, sp, 44042; GENERIC-NEXT: .cfi_def_cfa_offset 44043; GENERIC-NEXT: sexth16 a0, a04044; GENERIC-NEXT: movi16 a1, 2554045; GENERIC-NEXT: lsli16 a2, a1, 244046; GENERIC-NEXT: lsli16 a3, a1, 164047; GENERIC-NEXT: or16 a3, a24048; GENERIC-NEXT: lsli16 a2, a1, 84049; GENERIC-NEXT: or16 a2, a34050; GENERIC-NEXT: or16 a2, a14051; GENERIC-NEXT: cmplt16 a2, a04052; GENERIC-NEXT: bf16 .LBB82_24053; GENERIC-NEXT: # %bb.1: # %label24054; GENERIC-NEXT: movi16 a0, 04055; GENERIC-NEXT: addi16 sp, sp, 44056; GENERIC-NEXT: rts164057; GENERIC-NEXT: .LBB82_2: # %label14058; GENERIC-NEXT: movi16 a0, 14059; GENERIC-NEXT: addi16 sp, sp, 44060; GENERIC-NEXT: rts164061; CHECK-UGTXT: icmpu32 a0, a1, a04062; CHECK-UGTXT: rts164063entry:4064 %icmp = icmp slt i16 %x, 04065 br i1 %icmp, label %label1, label %label24066label1:4067 ret i16 14068label2:4069 ret i16 04070}4071 4072;SLE4073define i16 @brRR_i16_sle(i16 %x, i16 %y) {4074; CHECK-LABEL: brRR_i16_sle:4075; CHECK: # %bb.0: # %entry4076; CHECK-NEXT: sexth16 a1, a14077; CHECK-NEXT: sexth16 a0, a04078; CHECK-NEXT: cmplt16 a0, a14079; CHECK-NEXT: bt32 .LBB83_24080; CHECK-NEXT: # %bb.1: # %label14081; CHECK-NEXT: movi16 a0, 14082; CHECK-NEXT: rts164083; CHECK-NEXT: .LBB83_2: # %label24084; CHECK-NEXT: movi16 a0, 04085; CHECK-NEXT: rts164086;4087; GENERIC-LABEL: brRR_i16_sle:4088; GENERIC: # %bb.0: # %entry4089; GENERIC-NEXT: .cfi_def_cfa_offset 04090; GENERIC-NEXT: subi16 sp, sp, 44091; GENERIC-NEXT: .cfi_def_cfa_offset 44092; GENERIC-NEXT: sexth16 a1, a14093; GENERIC-NEXT: sexth16 a0, a04094; GENERIC-NEXT: cmplt16 a0, a14095; GENERIC-NEXT: bt16 .LBB83_24096; GENERIC-NEXT: # %bb.1: # %label14097; GENERIC-NEXT: movi16 a0, 14098; GENERIC-NEXT: addi16 sp, sp, 44099; GENERIC-NEXT: rts164100; GENERIC-NEXT: .LBB83_2: # %label24101; GENERIC-NEXT: movi16 a0, 04102; GENERIC-NEXT: addi16 sp, sp, 44103; GENERIC-NEXT: rts164104; CHECK-UGTXT: icmpu32 a0, a1, a04105; CHECK-UGTXT: rts164106entry:4107 %icmp = icmp sle i16 %y, %x4108 br i1 %icmp, label %label1, label %label24109label1:4110 ret i16 14111label2:4112 ret i16 04113}4114 4115define i16 @brRI_i16_sle(i16 %x) {4116; CHECK-LABEL: brRI_i16_sle:4117; CHECK: # %bb.0: # %entry4118; CHECK-NEXT: sexth16 a0, a04119; CHECK-NEXT: movi16 a1, 104120; CHECK-NEXT: cmplt16 a1, a04121; CHECK-NEXT: bt32 .LBB84_24122; CHECK-NEXT: # %bb.1: # %label14123; CHECK-NEXT: movi16 a0, 14124; CHECK-NEXT: rts164125; CHECK-NEXT: .LBB84_2: # %label24126; CHECK-NEXT: movi16 a0, 04127; CHECK-NEXT: rts164128;4129; GENERIC-LABEL: brRI_i16_sle:4130; GENERIC: # %bb.0: # %entry4131; GENERIC-NEXT: .cfi_def_cfa_offset 04132; GENERIC-NEXT: subi16 sp, sp, 44133; GENERIC-NEXT: .cfi_def_cfa_offset 44134; GENERIC-NEXT: sexth16 a0, a04135; GENERIC-NEXT: movi16 a1, 104136; GENERIC-NEXT: cmplt16 a1, a04137; GENERIC-NEXT: bt16 .LBB84_24138; GENERIC-NEXT: # %bb.1: # %label14139; GENERIC-NEXT: movi16 a0, 14140; GENERIC-NEXT: addi16 sp, sp, 44141; GENERIC-NEXT: rts164142; GENERIC-NEXT: .LBB84_2: # %label24143; GENERIC-NEXT: movi16 a0, 04144; GENERIC-NEXT: addi16 sp, sp, 44145; GENERIC-NEXT: rts164146; CHECK-UGTXT: icmpu32 a0, a1, a04147; CHECK-UGTXT: rts164148entry:4149 %icmp = icmp sle i16 %x, 104150 br i1 %icmp, label %label1, label %label24151label1:4152 ret i16 14153label2:4154 ret i16 04155}4156 4157define i16 @brR0_i16_sle(i16 %x) {4158; CHECK-LABEL: brR0_i16_sle:4159; CHECK: # %bb.0: # %entry4160; CHECK-NEXT: sexth16 a0, a04161; CHECK-NEXT: bhz32 a0, .LBB85_24162; CHECK-NEXT: # %bb.1: # %label14163; CHECK-NEXT: movi16 a0, 14164; CHECK-NEXT: rts164165; CHECK-NEXT: .LBB85_2: # %label24166; CHECK-NEXT: movi16 a0, 04167; CHECK-NEXT: rts164168;4169; GENERIC-LABEL: brR0_i16_sle:4170; GENERIC: # %bb.0: # %entry4171; GENERIC-NEXT: .cfi_def_cfa_offset 04172; GENERIC-NEXT: subi16 sp, sp, 44173; GENERIC-NEXT: .cfi_def_cfa_offset 44174; GENERIC-NEXT: sexth16 a0, a04175; GENERIC-NEXT: movi16 a1, 04176; GENERIC-NEXT: cmplt16 a1, a04177; GENERIC-NEXT: bt16 .LBB85_24178; GENERIC-NEXT: # %bb.1: # %label14179; GENERIC-NEXT: movi16 a0, 14180; GENERIC-NEXT: addi16 sp, sp, 44181; GENERIC-NEXT: rts164182; GENERIC-NEXT: .LBB85_2: # %label24183; GENERIC-NEXT: movi16 a0, 04184; GENERIC-NEXT: addi16 sp, sp, 44185; GENERIC-NEXT: rts164186; CHECK-UGTXT: icmpu32 a0, a1, a04187; CHECK-UGTXT: rts164188entry:4189 %icmp = icmp sle i16 %x, 04190 br i1 %icmp, label %label1, label %label24191label1:4192 ret i16 14193label2:4194 ret i16 04195}4196 4197 4198define i16 @brCBit_i16(i1 %c) {4199; CHECK-LABEL: brCBit_i16:4200; CHECK: # %bb.0: # %entry4201; CHECK-NEXT: andi32 a0, a0, 14202; CHECK-NEXT: bez32 a0, .LBB86_24203; CHECK-NEXT: # %bb.1: # %label14204; CHECK-NEXT: movi16 a0, 14205; CHECK-NEXT: rts164206; CHECK-NEXT: .LBB86_2: # %label24207; CHECK-NEXT: movi16 a0, 04208; CHECK-NEXT: rts164209;4210; GENERIC-LABEL: brCBit_i16:4211; GENERIC: # %bb.0: # %entry4212; GENERIC-NEXT: .cfi_def_cfa_offset 04213; GENERIC-NEXT: subi16 sp, sp, 44214; GENERIC-NEXT: .cfi_def_cfa_offset 44215; GENERIC-NEXT: movi16 a1, 14216; GENERIC-NEXT: and16 a1, a04217; GENERIC-NEXT: cmpnei16 a1, 04218; GENERIC-NEXT: bf16 .LBB86_24219; GENERIC-NEXT: # %bb.1: # %label14220; GENERIC-NEXT: movi16 a0, 14221; GENERIC-NEXT: addi16 sp, sp, 44222; GENERIC-NEXT: rts164223; GENERIC-NEXT: .LBB86_2: # %label24224; GENERIC-NEXT: movi16 a0, 04225; GENERIC-NEXT: addi16 sp, sp, 44226; GENERIC-NEXT: rts164227entry:4228 br i1 %c, label %label1, label %label24229label1:4230 ret i16 14231label2:4232 ret i16 04233}4234 4235 4236;EQ4237define i8 @brRR_i8_eq(i8 %x, i8 %y) {4238; CHECK-LABEL: brRR_i8_eq:4239; CHECK: # %bb.0: # %entry4240; CHECK-NEXT: zextb16 a0, a04241; CHECK-NEXT: zextb16 a1, a14242; CHECK-NEXT: cmpne16 a1, a04243; CHECK-NEXT: bt32 .LBB87_24244; CHECK-NEXT: # %bb.1: # %label14245; CHECK-NEXT: movi16 a0, 14246; CHECK-NEXT: rts164247; CHECK-NEXT: .LBB87_2: # %label24248; CHECK-NEXT: movi16 a0, 04249; CHECK-NEXT: rts164250;4251; GENERIC-LABEL: brRR_i8_eq:4252; GENERIC: # %bb.0: # %entry4253; GENERIC-NEXT: .cfi_def_cfa_offset 04254; GENERIC-NEXT: subi16 sp, sp, 44255; GENERIC-NEXT: .cfi_def_cfa_offset 44256; GENERIC-NEXT: movi16 a2, 2554257; GENERIC-NEXT: and16 a0, a24258; GENERIC-NEXT: and16 a1, a24259; GENERIC-NEXT: cmpne16 a1, a04260; GENERIC-NEXT: bt16 .LBB87_24261; GENERIC-NEXT: # %bb.1: # %label14262; GENERIC-NEXT: movi16 a0, 14263; GENERIC-NEXT: addi16 sp, sp, 44264; GENERIC-NEXT: rts164265; GENERIC-NEXT: .LBB87_2: # %label24266; GENERIC-NEXT: movi16 a0, 04267; GENERIC-NEXT: addi16 sp, sp, 44268; GENERIC-NEXT: rts164269entry:4270 %icmp = icmp eq i8 %y, %x4271 br i1 %icmp, label %label1, label %label24272label1:4273 ret i8 14274label2:4275 ret i8 04276}4277 4278define i8 @brRI_i8_eq(i8 %x) {4279; CHECK-LABEL: brRI_i8_eq:4280; CHECK: # %bb.0: # %entry4281; CHECK-NEXT: zextb16 a0, a04282; CHECK-NEXT: cmpnei16 a0, 104283; CHECK-NEXT: bt32 .LBB88_24284; CHECK-NEXT: # %bb.1: # %label14285; CHECK-NEXT: movi16 a0, 14286; CHECK-NEXT: rts164287; CHECK-NEXT: .LBB88_2: # %label24288; CHECK-NEXT: movi16 a0, 04289; CHECK-NEXT: rts164290;4291; GENERIC-LABEL: brRI_i8_eq:4292; GENERIC: # %bb.0: # %entry4293; GENERIC-NEXT: .cfi_def_cfa_offset 04294; GENERIC-NEXT: subi16 sp, sp, 44295; GENERIC-NEXT: .cfi_def_cfa_offset 44296; GENERIC-NEXT: movi16 a1, 2554297; GENERIC-NEXT: and16 a1, a04298; GENERIC-NEXT: cmpnei16 a1, 104299; GENERIC-NEXT: bt16 .LBB88_24300; GENERIC-NEXT: # %bb.1: # %label14301; GENERIC-NEXT: movi16 a0, 14302; GENERIC-NEXT: addi16 sp, sp, 44303; GENERIC-NEXT: rts164304; GENERIC-NEXT: .LBB88_2: # %label24305; GENERIC-NEXT: movi16 a0, 04306; GENERIC-NEXT: addi16 sp, sp, 44307; GENERIC-NEXT: rts164308entry:4309 %icmp = icmp eq i8 %x, 104310 br i1 %icmp, label %label1, label %label24311label1:4312 ret i8 14313label2:4314 ret i8 04315}4316 4317define i8 @brR0_i8_eq(i8 %x) {4318; CHECK-LABEL: brR0_i8_eq:4319; CHECK: # %bb.0: # %entry4320; CHECK-NEXT: zextb16 a0, a04321; CHECK-NEXT: bez32 a0, .LBB89_24322; CHECK-NEXT: # %bb.1: # %label24323; CHECK-NEXT: movi16 a0, 04324; CHECK-NEXT: rts164325; CHECK-NEXT: .LBB89_2: # %label14326; CHECK-NEXT: movi16 a0, 14327; CHECK-NEXT: rts164328;4329; GENERIC-LABEL: brR0_i8_eq:4330; GENERIC: # %bb.0: # %entry4331; GENERIC-NEXT: .cfi_def_cfa_offset 04332; GENERIC-NEXT: subi16 sp, sp, 44333; GENERIC-NEXT: .cfi_def_cfa_offset 44334; GENERIC-NEXT: movi16 a1, 2554335; GENERIC-NEXT: and16 a1, a04336; GENERIC-NEXT: cmpnei16 a1, 04337; GENERIC-NEXT: bf16 .LBB89_24338; GENERIC-NEXT: # %bb.1: # %label24339; GENERIC-NEXT: movi16 a0, 04340; GENERIC-NEXT: addi16 sp, sp, 44341; GENERIC-NEXT: rts164342; GENERIC-NEXT: .LBB89_2: # %label14343; GENERIC-NEXT: movi16 a0, 14344; GENERIC-NEXT: addi16 sp, sp, 44345; GENERIC-NEXT: rts164346entry:4347 %icmp = icmp eq i8 %x, 04348 br i1 %icmp, label %label1, label %label24349label1:4350 ret i8 14351label2:4352 ret i8 04353}4354 4355;NE4356define i8 @brRR_i8_ne(i8 %x, i8 %y) {4357; CHECK-LABEL: brRR_i8_ne:4358; CHECK: # %bb.0: # %entry4359; CHECK-NEXT: zextb16 a0, a04360; CHECK-NEXT: zextb16 a1, a14361; CHECK-NEXT: cmpne16 a1, a04362; CHECK-NEXT: bf32 .LBB90_24363; CHECK-NEXT: # %bb.1: # %label14364; CHECK-NEXT: movi16 a0, 14365; CHECK-NEXT: rts164366; CHECK-NEXT: .LBB90_2: # %label24367; CHECK-NEXT: movi16 a0, 04368; CHECK-NEXT: rts164369;4370; GENERIC-LABEL: brRR_i8_ne:4371; GENERIC: # %bb.0: # %entry4372; GENERIC-NEXT: .cfi_def_cfa_offset 04373; GENERIC-NEXT: subi16 sp, sp, 44374; GENERIC-NEXT: .cfi_def_cfa_offset 44375; GENERIC-NEXT: movi16 a2, 2554376; GENERIC-NEXT: and16 a0, a24377; GENERIC-NEXT: and16 a1, a24378; GENERIC-NEXT: cmpne16 a1, a04379; GENERIC-NEXT: bf16 .LBB90_24380; GENERIC-NEXT: # %bb.1: # %label14381; GENERIC-NEXT: movi16 a0, 14382; GENERIC-NEXT: addi16 sp, sp, 44383; GENERIC-NEXT: rts164384; GENERIC-NEXT: .LBB90_2: # %label24385; GENERIC-NEXT: movi16 a0, 04386; GENERIC-NEXT: addi16 sp, sp, 44387; GENERIC-NEXT: rts164388entry:4389 %icmp = icmp ne i8 %y, %x4390 br i1 %icmp, label %label1, label %label24391label1:4392 ret i8 14393label2:4394 ret i8 04395}4396 4397define i8 @brRI_i8_ne(i8 %x) {4398; CHECK-LABEL: brRI_i8_ne:4399; CHECK: # %bb.0: # %entry4400; CHECK-NEXT: zextb16 a0, a04401; CHECK-NEXT: cmpnei16 a0, 104402; CHECK-NEXT: bf32 .LBB91_24403; CHECK-NEXT: # %bb.1: # %label14404; CHECK-NEXT: movi16 a0, 14405; CHECK-NEXT: rts164406; CHECK-NEXT: .LBB91_2: # %label24407; CHECK-NEXT: movi16 a0, 04408; CHECK-NEXT: rts164409;4410; GENERIC-LABEL: brRI_i8_ne:4411; GENERIC: # %bb.0: # %entry4412; GENERIC-NEXT: .cfi_def_cfa_offset 04413; GENERIC-NEXT: subi16 sp, sp, 44414; GENERIC-NEXT: .cfi_def_cfa_offset 44415; GENERIC-NEXT: movi16 a1, 2554416; GENERIC-NEXT: and16 a1, a04417; GENERIC-NEXT: cmpnei16 a1, 104418; GENERIC-NEXT: bf16 .LBB91_24419; GENERIC-NEXT: # %bb.1: # %label14420; GENERIC-NEXT: movi16 a0, 14421; GENERIC-NEXT: addi16 sp, sp, 44422; GENERIC-NEXT: rts164423; GENERIC-NEXT: .LBB91_2: # %label24424; GENERIC-NEXT: movi16 a0, 04425; GENERIC-NEXT: addi16 sp, sp, 44426; GENERIC-NEXT: rts164427entry:4428 %icmp = icmp ne i8 %x, 104429 br i1 %icmp, label %label1, label %label24430label1:4431 ret i8 14432label2:4433 ret i8 04434}4435 4436define i8 @brR0_i8_ne(i8 %x) {4437; CHECK-LABEL: brR0_i8_ne:4438; CHECK: # %bb.0: # %entry4439; CHECK-NEXT: zextb16 a0, a04440; CHECK-NEXT: bez32 a0, .LBB92_24441; CHECK-NEXT: # %bb.1: # %label14442; CHECK-NEXT: movi16 a0, 14443; CHECK-NEXT: rts164444; CHECK-NEXT: .LBB92_2: # %label24445; CHECK-NEXT: movi16 a0, 04446; CHECK-NEXT: rts164447;4448; GENERIC-LABEL: brR0_i8_ne:4449; GENERIC: # %bb.0: # %entry4450; GENERIC-NEXT: .cfi_def_cfa_offset 04451; GENERIC-NEXT: subi16 sp, sp, 44452; GENERIC-NEXT: .cfi_def_cfa_offset 44453; GENERIC-NEXT: movi16 a1, 2554454; GENERIC-NEXT: and16 a1, a04455; GENERIC-NEXT: cmpnei16 a1, 04456; GENERIC-NEXT: bf16 .LBB92_24457; GENERIC-NEXT: # %bb.1: # %label14458; GENERIC-NEXT: movi16 a0, 14459; GENERIC-NEXT: addi16 sp, sp, 44460; GENERIC-NEXT: rts164461; GENERIC-NEXT: .LBB92_2: # %label24462; GENERIC-NEXT: movi16 a0, 04463; GENERIC-NEXT: addi16 sp, sp, 44464; GENERIC-NEXT: rts164465entry:4466 %icmp = icmp ne i8 %x, 04467 br i1 %icmp, label %label1, label %label24468label1:4469 ret i8 14470label2:4471 ret i8 04472}4473 4474;UGT4475define i8 @brRR_i8_ugt(i8 %x, i8 %y) {4476; CHECK-LABEL: brRR_i8_ugt:4477; CHECK: # %bb.0: # %entry4478; CHECK-NEXT: zextb16 a1, a14479; CHECK-NEXT: zextb16 a0, a04480; CHECK-NEXT: cmphs16 a0, a14481; CHECK-NEXT: bt32 .LBB93_24482; CHECK-NEXT: # %bb.1: # %label14483; CHECK-NEXT: movi16 a0, 14484; CHECK-NEXT: rts164485; CHECK-NEXT: .LBB93_2: # %label24486; CHECK-NEXT: movi16 a0, 04487; CHECK-NEXT: rts164488;4489; GENERIC-LABEL: brRR_i8_ugt:4490; GENERIC: # %bb.0: # %entry4491; GENERIC-NEXT: .cfi_def_cfa_offset 04492; GENERIC-NEXT: subi16 sp, sp, 44493; GENERIC-NEXT: .cfi_def_cfa_offset 44494; GENERIC-NEXT: movi16 a2, 2554495; GENERIC-NEXT: and16 a1, a24496; GENERIC-NEXT: and16 a0, a24497; GENERIC-NEXT: cmphs16 a0, a14498; GENERIC-NEXT: bt16 .LBB93_24499; GENERIC-NEXT: # %bb.1: # %label14500; GENERIC-NEXT: movi16 a0, 14501; GENERIC-NEXT: addi16 sp, sp, 44502; GENERIC-NEXT: rts164503; GENERIC-NEXT: .LBB93_2: # %label24504; GENERIC-NEXT: movi16 a0, 04505; GENERIC-NEXT: addi16 sp, sp, 44506; GENERIC-NEXT: rts164507; CHECK-UGTXT: icmpu32 a0, a1, a04508; CHECK-UGTXT: rts164509entry:4510 %icmp = icmp ugt i8 %y, %x4511 br i1 %icmp, label %label1, label %label24512label1:4513 ret i8 14514label2:4515 ret i8 04516}4517 4518define i8 @brRI_i8_ugt(i8 %x) {4519; CHECK-LABEL: brRI_i8_ugt:4520; CHECK: # %bb.0: # %entry4521; CHECK-NEXT: zextb16 a0, a04522; CHECK-NEXT: cmphsi16 a0, 114523; CHECK-NEXT: bf32 .LBB94_24524; CHECK-NEXT: # %bb.1: # %label14525; CHECK-NEXT: movi16 a0, 14526; CHECK-NEXT: rts164527; CHECK-NEXT: .LBB94_2: # %label24528; CHECK-NEXT: movi16 a0, 04529; CHECK-NEXT: rts164530;4531; GENERIC-LABEL: brRI_i8_ugt:4532; GENERIC: # %bb.0: # %entry4533; GENERIC-NEXT: .cfi_def_cfa_offset 04534; GENERIC-NEXT: subi16 sp, sp, 44535; GENERIC-NEXT: .cfi_def_cfa_offset 44536; GENERIC-NEXT: movi16 a1, 2554537; GENERIC-NEXT: and16 a1, a04538; GENERIC-NEXT: cmphsi16 a1, 114539; GENERIC-NEXT: bf16 .LBB94_24540; GENERIC-NEXT: # %bb.1: # %label14541; GENERIC-NEXT: movi16 a0, 14542; GENERIC-NEXT: addi16 sp, sp, 44543; GENERIC-NEXT: rts164544; GENERIC-NEXT: .LBB94_2: # %label24545; GENERIC-NEXT: movi16 a0, 04546; GENERIC-NEXT: addi16 sp, sp, 44547; GENERIC-NEXT: rts164548; CHECK-UGTXT: icmpu32 a0, a1, a04549; CHECK-UGTXT: rts164550entry:4551 %icmp = icmp ugt i8 %x, 104552 br i1 %icmp, label %label1, label %label24553label1:4554 ret i8 14555label2:4556 ret i8 04557}4558 4559define i8 @brR0_i8_ugt(i8 %x) {4560; CHECK-LABEL: brR0_i8_ugt:4561; CHECK: # %bb.0: # %entry4562; CHECK-NEXT: zextb16 a0, a04563; CHECK-NEXT: bez32 a0, .LBB95_24564; CHECK-NEXT: # %bb.1: # %label14565; CHECK-NEXT: movi16 a0, 14566; CHECK-NEXT: rts164567; CHECK-NEXT: .LBB95_2: # %label24568; CHECK-NEXT: movi16 a0, 04569; CHECK-NEXT: rts164570;4571; GENERIC-LABEL: brR0_i8_ugt:4572; GENERIC: # %bb.0: # %entry4573; GENERIC-NEXT: .cfi_def_cfa_offset 04574; GENERIC-NEXT: subi16 sp, sp, 44575; GENERIC-NEXT: .cfi_def_cfa_offset 44576; GENERIC-NEXT: movi16 a1, 2554577; GENERIC-NEXT: and16 a1, a04578; GENERIC-NEXT: cmpnei16 a1, 04579; GENERIC-NEXT: bf16 .LBB95_24580; GENERIC-NEXT: # %bb.1: # %label14581; GENERIC-NEXT: movi16 a0, 14582; GENERIC-NEXT: addi16 sp, sp, 44583; GENERIC-NEXT: rts164584; GENERIC-NEXT: .LBB95_2: # %label24585; GENERIC-NEXT: movi16 a0, 04586; GENERIC-NEXT: addi16 sp, sp, 44587; GENERIC-NEXT: rts164588; CHECK-UGTXT: icmpu32 a0, a1, a04589; CHECK-UGTXT: rts164590entry:4591 %icmp = icmp ugt i8 %x, 04592 br i1 %icmp, label %label1, label %label24593label1:4594 ret i8 14595label2:4596 ret i8 04597}4598 4599;UGE4600define i8 @brRR_i8_uge(i8 %x, i8 %y) {4601; CHECK-LABEL: brRR_i8_uge:4602; CHECK: # %bb.0: # %entry4603; CHECK-NEXT: zextb16 a0, a04604; CHECK-NEXT: zextb16 a1, a14605; CHECK-NEXT: cmphs16 a1, a04606; CHECK-NEXT: bf32 .LBB96_24607; CHECK-NEXT: # %bb.1: # %label14608; CHECK-NEXT: movi16 a0, 14609; CHECK-NEXT: rts164610; CHECK-NEXT: .LBB96_2: # %label24611; CHECK-NEXT: movi16 a0, 04612; CHECK-NEXT: rts164613;4614; GENERIC-LABEL: brRR_i8_uge:4615; GENERIC: # %bb.0: # %entry4616; GENERIC-NEXT: .cfi_def_cfa_offset 04617; GENERIC-NEXT: subi16 sp, sp, 44618; GENERIC-NEXT: .cfi_def_cfa_offset 44619; GENERIC-NEXT: movi16 a2, 2554620; GENERIC-NEXT: and16 a0, a24621; GENERIC-NEXT: and16 a1, a24622; GENERIC-NEXT: cmphs16 a1, a04623; GENERIC-NEXT: bf16 .LBB96_24624; GENERIC-NEXT: # %bb.1: # %label14625; GENERIC-NEXT: movi16 a0, 14626; GENERIC-NEXT: addi16 sp, sp, 44627; GENERIC-NEXT: rts164628; GENERIC-NEXT: .LBB96_2: # %label24629; GENERIC-NEXT: movi16 a0, 04630; GENERIC-NEXT: addi16 sp, sp, 44631; GENERIC-NEXT: rts164632; CHECK-UGTXT: icmpu32 a0, a1, a04633; CHECK-UGTXT: rts164634entry:4635 %icmp = icmp uge i8 %y, %x4636 br i1 %icmp, label %label1, label %label24637label1:4638 ret i8 14639label2:4640 ret i8 04641}4642 4643define i8 @brRI_i8_uge(i8 %x) {4644; CHECK-LABEL: brRI_i8_uge:4645; CHECK: # %bb.0: # %entry4646; CHECK-NEXT: zextb16 a0, a04647; CHECK-NEXT: cmphsi16 a0, 104648; CHECK-NEXT: bf32 .LBB97_24649; CHECK-NEXT: # %bb.1: # %label14650; CHECK-NEXT: movi16 a0, 14651; CHECK-NEXT: rts164652; CHECK-NEXT: .LBB97_2: # %label24653; CHECK-NEXT: movi16 a0, 04654; CHECK-NEXT: rts164655;4656; GENERIC-LABEL: brRI_i8_uge:4657; GENERIC: # %bb.0: # %entry4658; GENERIC-NEXT: .cfi_def_cfa_offset 04659; GENERIC-NEXT: subi16 sp, sp, 44660; GENERIC-NEXT: .cfi_def_cfa_offset 44661; GENERIC-NEXT: movi16 a1, 2554662; GENERIC-NEXT: and16 a1, a04663; GENERIC-NEXT: cmphsi16 a1, 104664; GENERIC-NEXT: bf16 .LBB97_24665; GENERIC-NEXT: # %bb.1: # %label14666; GENERIC-NEXT: movi16 a0, 14667; GENERIC-NEXT: addi16 sp, sp, 44668; GENERIC-NEXT: rts164669; GENERIC-NEXT: .LBB97_2: # %label24670; GENERIC-NEXT: movi16 a0, 04671; GENERIC-NEXT: addi16 sp, sp, 44672; GENERIC-NEXT: rts164673; CHECK-UGTXT: icmpu32 a0, a1, a04674; CHECK-UGTXT: rts164675entry:4676 %icmp = icmp uge i8 %x, 104677 br i1 %icmp, label %label1, label %label24678label1:4679 ret i8 14680label2:4681 ret i8 04682}4683 4684;ULT4685define i8 @brRR_i8_ult(i8 %x, i8 %y) {4686; CHECK-LABEL: brRR_i8_ult:4687; CHECK: # %bb.0: # %entry4688; CHECK-NEXT: zextb16 a0, a04689; CHECK-NEXT: zextb16 a1, a14690; CHECK-NEXT: cmphs16 a1, a04691; CHECK-NEXT: bt32 .LBB98_24692; CHECK-NEXT: # %bb.1: # %label14693; CHECK-NEXT: movi16 a0, 14694; CHECK-NEXT: rts164695; CHECK-NEXT: .LBB98_2: # %label24696; CHECK-NEXT: movi16 a0, 04697; CHECK-NEXT: rts164698;4699; GENERIC-LABEL: brRR_i8_ult:4700; GENERIC: # %bb.0: # %entry4701; GENERIC-NEXT: .cfi_def_cfa_offset 04702; GENERIC-NEXT: subi16 sp, sp, 44703; GENERIC-NEXT: .cfi_def_cfa_offset 44704; GENERIC-NEXT: movi16 a2, 2554705; GENERIC-NEXT: and16 a0, a24706; GENERIC-NEXT: and16 a1, a24707; GENERIC-NEXT: cmphs16 a1, a04708; GENERIC-NEXT: bt16 .LBB98_24709; GENERIC-NEXT: # %bb.1: # %label14710; GENERIC-NEXT: movi16 a0, 14711; GENERIC-NEXT: addi16 sp, sp, 44712; GENERIC-NEXT: rts164713; GENERIC-NEXT: .LBB98_2: # %label24714; GENERIC-NEXT: movi16 a0, 04715; GENERIC-NEXT: addi16 sp, sp, 44716; GENERIC-NEXT: rts164717; CHECK-UGTXT: icmpu32 a0, a1, a04718; CHECK-UGTXT: rts164719entry:4720 %icmp = icmp ult i8 %y, %x4721 br i1 %icmp, label %label1, label %label24722label1:4723 ret i8 14724label2:4725 ret i8 04726}4727 4728define i8 @brRI_i8_ult(i8 %x) {4729; CHECK-LABEL: brRI_i8_ult:4730; CHECK: # %bb.0: # %entry4731; CHECK-NEXT: zextb16 a0, a04732; CHECK-NEXT: movi16 a1, 94733; CHECK-NEXT: cmphs16 a1, a04734; CHECK-NEXT: bf32 .LBB99_24735; CHECK-NEXT: # %bb.1: # %label14736; CHECK-NEXT: movi16 a0, 14737; CHECK-NEXT: rts164738; CHECK-NEXT: .LBB99_2: # %label24739; CHECK-NEXT: movi16 a0, 04740; CHECK-NEXT: rts164741;4742; GENERIC-LABEL: brRI_i8_ult:4743; GENERIC: # %bb.0: # %entry4744; GENERIC-NEXT: .cfi_def_cfa_offset 04745; GENERIC-NEXT: subi16 sp, sp, 44746; GENERIC-NEXT: .cfi_def_cfa_offset 44747; GENERIC-NEXT: movi16 a1, 2554748; GENERIC-NEXT: and16 a1, a04749; GENERIC-NEXT: movi16 a0, 94750; GENERIC-NEXT: cmphs16 a0, a14751; GENERIC-NEXT: bf16 .LBB99_24752; GENERIC-NEXT: # %bb.1: # %label14753; GENERIC-NEXT: movi16 a0, 14754; GENERIC-NEXT: addi16 sp, sp, 44755; GENERIC-NEXT: rts164756; GENERIC-NEXT: .LBB99_2: # %label24757; GENERIC-NEXT: movi16 a0, 04758; GENERIC-NEXT: addi16 sp, sp, 44759; GENERIC-NEXT: rts164760; CHECK-UGTXT: icmpu32 a0, a1, a04761; CHECK-UGTXT: rts164762entry:4763 %icmp = icmp ult i8 %x, 104764 br i1 %icmp, label %label1, label %label24765label1:4766 ret i8 14767label2:4768 ret i8 04769}4770 4771 4772;ULE4773define i8 @brRR_i8_ule(i8 %x, i8 %y) {4774; CHECK-LABEL: brRR_i8_ule:4775; CHECK: # %bb.0: # %entry4776; CHECK-NEXT: zextb16 a1, a14777; CHECK-NEXT: zextb16 a0, a04778; CHECK-NEXT: cmphs16 a0, a14779; CHECK-NEXT: bf32 .LBB100_24780; CHECK-NEXT: # %bb.1: # %label14781; CHECK-NEXT: movi16 a0, 14782; CHECK-NEXT: rts164783; CHECK-NEXT: .LBB100_2: # %label24784; CHECK-NEXT: movi16 a0, 04785; CHECK-NEXT: rts164786;4787; GENERIC-LABEL: brRR_i8_ule:4788; GENERIC: # %bb.0: # %entry4789; GENERIC-NEXT: .cfi_def_cfa_offset 04790; GENERIC-NEXT: subi16 sp, sp, 44791; GENERIC-NEXT: .cfi_def_cfa_offset 44792; GENERIC-NEXT: movi16 a2, 2554793; GENERIC-NEXT: and16 a1, a24794; GENERIC-NEXT: and16 a0, a24795; GENERIC-NEXT: cmphs16 a0, a14796; GENERIC-NEXT: bf16 .LBB100_24797; GENERIC-NEXT: # %bb.1: # %label14798; GENERIC-NEXT: movi16 a0, 14799; GENERIC-NEXT: addi16 sp, sp, 44800; GENERIC-NEXT: rts164801; GENERIC-NEXT: .LBB100_2: # %label24802; GENERIC-NEXT: movi16 a0, 04803; GENERIC-NEXT: addi16 sp, sp, 44804; GENERIC-NEXT: rts164805; CHECK-UGTXT: icmpu32 a0, a1, a04806; CHECK-UGTXT: rts164807entry:4808 %icmp = icmp ule i8 %y, %x4809 br i1 %icmp, label %label1, label %label24810label1:4811 ret i8 14812label2:4813 ret i8 04814}4815 4816define i8 @brRI_i8_ule(i8 %x) {4817; CHECK-LABEL: brRI_i8_ule:4818; CHECK: # %bb.0: # %entry4819; CHECK-NEXT: zextb16 a0, a04820; CHECK-NEXT: movi16 a1, 104821; CHECK-NEXT: cmphs16 a1, a04822; CHECK-NEXT: bf32 .LBB101_24823; CHECK-NEXT: # %bb.1: # %label14824; CHECK-NEXT: movi16 a0, 14825; CHECK-NEXT: rts164826; CHECK-NEXT: .LBB101_2: # %label24827; CHECK-NEXT: movi16 a0, 04828; CHECK-NEXT: rts164829;4830; GENERIC-LABEL: brRI_i8_ule:4831; GENERIC: # %bb.0: # %entry4832; GENERIC-NEXT: .cfi_def_cfa_offset 04833; GENERIC-NEXT: subi16 sp, sp, 44834; GENERIC-NEXT: .cfi_def_cfa_offset 44835; GENERIC-NEXT: movi16 a1, 2554836; GENERIC-NEXT: and16 a1, a04837; GENERIC-NEXT: movi16 a0, 104838; GENERIC-NEXT: cmphs16 a0, a14839; GENERIC-NEXT: bf16 .LBB101_24840; GENERIC-NEXT: # %bb.1: # %label14841; GENERIC-NEXT: movi16 a0, 14842; GENERIC-NEXT: addi16 sp, sp, 44843; GENERIC-NEXT: rts164844; GENERIC-NEXT: .LBB101_2: # %label24845; GENERIC-NEXT: movi16 a0, 04846; GENERIC-NEXT: addi16 sp, sp, 44847; GENERIC-NEXT: rts164848; CHECK-UGTXT: icmpu32 a0, a1, a04849; CHECK-UGTXT: rts164850entry:4851 %icmp = icmp ule i8 %x, 104852 br i1 %icmp, label %label1, label %label24853label1:4854 ret i8 14855label2:4856 ret i8 04857}4858 4859define i8 @brR0_i8_ule(i8 %x) {4860; CHECK-LABEL: brR0_i8_ule:4861; CHECK: # %bb.0: # %entry4862; CHECK-NEXT: zextb16 a0, a04863; CHECK-NEXT: bnez32 a0, .LBB102_24864; CHECK-NEXT: # %bb.1: # %label14865; CHECK-NEXT: movi16 a0, 14866; CHECK-NEXT: rts164867; CHECK-NEXT: .LBB102_2: # %label24868; CHECK-NEXT: movi16 a0, 04869; CHECK-NEXT: rts164870;4871; GENERIC-LABEL: brR0_i8_ule:4872; GENERIC: # %bb.0: # %entry4873; GENERIC-NEXT: .cfi_def_cfa_offset 04874; GENERIC-NEXT: subi16 sp, sp, 44875; GENERIC-NEXT: .cfi_def_cfa_offset 44876; GENERIC-NEXT: movi16 a1, 2554877; GENERIC-NEXT: and16 a1, a04878; GENERIC-NEXT: cmpnei16 a1, 04879; GENERIC-NEXT: bt16 .LBB102_24880; GENERIC-NEXT: # %bb.1: # %label14881; GENERIC-NEXT: movi16 a0, 14882; GENERIC-NEXT: addi16 sp, sp, 44883; GENERIC-NEXT: rts164884; GENERIC-NEXT: .LBB102_2: # %label24885; GENERIC-NEXT: movi16 a0, 04886; GENERIC-NEXT: addi16 sp, sp, 44887; GENERIC-NEXT: rts164888; CHECK-UGTXT: icmpu32 a0, a1, a04889; CHECK-UGTXT: rts164890entry:4891 %icmp = icmp ule i8 %x, 04892 br i1 %icmp, label %label1, label %label24893label1:4894 ret i8 14895label2:4896 ret i8 04897}4898 4899;SGT4900define i8 @brRR_i8_sgt(i8 %x, i8 %y) {4901; CHECK-LABEL: brRR_i8_sgt:4902; CHECK: # %bb.0: # %entry4903; CHECK-NEXT: sextb16 a1, a14904; CHECK-NEXT: sextb16 a0, a04905; CHECK-NEXT: cmplt16 a0, a14906; CHECK-NEXT: bf32 .LBB103_24907; CHECK-NEXT: # %bb.1: # %label14908; CHECK-NEXT: movi16 a0, 14909; CHECK-NEXT: rts164910; CHECK-NEXT: .LBB103_2: # %label24911; CHECK-NEXT: movi16 a0, 04912; CHECK-NEXT: rts164913;4914; GENERIC-LABEL: brRR_i8_sgt:4915; GENERIC: # %bb.0: # %entry4916; GENERIC-NEXT: .cfi_def_cfa_offset 04917; GENERIC-NEXT: subi16 sp, sp, 44918; GENERIC-NEXT: .cfi_def_cfa_offset 44919; GENERIC-NEXT: sextb16 a1, a14920; GENERIC-NEXT: sextb16 a0, a04921; GENERIC-NEXT: cmplt16 a0, a14922; GENERIC-NEXT: bf16 .LBB103_24923; GENERIC-NEXT: # %bb.1: # %label14924; GENERIC-NEXT: movi16 a0, 14925; GENERIC-NEXT: addi16 sp, sp, 44926; GENERIC-NEXT: rts164927; GENERIC-NEXT: .LBB103_2: # %label24928; GENERIC-NEXT: movi16 a0, 04929; GENERIC-NEXT: addi16 sp, sp, 44930; GENERIC-NEXT: rts164931; CHECK-UGTXT: icmpu32 a0, a1, a04932; CHECK-UGTXT: rts164933entry:4934 %icmp = icmp sgt i8 %y, %x4935 br i1 %icmp, label %label1, label %label24936label1:4937 ret i8 14938label2:4939 ret i8 04940}4941 4942define i8 @brRI_i8_sgt(i8 %x) {4943; CHECK-LABEL: brRI_i8_sgt:4944; CHECK: # %bb.0: # %entry4945; CHECK-NEXT: sextb16 a0, a04946; CHECK-NEXT: cmplti16 a0, 114947; CHECK-NEXT: bt32 .LBB104_24948; CHECK-NEXT: # %bb.1: # %label14949; CHECK-NEXT: movi16 a0, 14950; CHECK-NEXT: rts164951; CHECK-NEXT: .LBB104_2: # %label24952; CHECK-NEXT: movi16 a0, 04953; CHECK-NEXT: rts164954;4955; GENERIC-LABEL: brRI_i8_sgt:4956; GENERIC: # %bb.0: # %entry4957; GENERIC-NEXT: .cfi_def_cfa_offset 04958; GENERIC-NEXT: subi16 sp, sp, 44959; GENERIC-NEXT: .cfi_def_cfa_offset 44960; GENERIC-NEXT: sextb16 a0, a04961; GENERIC-NEXT: cmplti16 a0, 114962; GENERIC-NEXT: bt16 .LBB104_24963; GENERIC-NEXT: # %bb.1: # %label14964; GENERIC-NEXT: movi16 a0, 14965; GENERIC-NEXT: addi16 sp, sp, 44966; GENERIC-NEXT: rts164967; GENERIC-NEXT: .LBB104_2: # %label24968; GENERIC-NEXT: movi16 a0, 04969; GENERIC-NEXT: addi16 sp, sp, 44970; GENERIC-NEXT: rts164971; CHECK-UGTXT: icmpu32 a0, a1, a04972; CHECK-UGTXT: rts164973entry:4974 %icmp = icmp sgt i8 %x, 104975 br i1 %icmp, label %label1, label %label24976label1:4977 ret i8 14978label2:4979 ret i8 04980}4981 4982define i8 @brR0_i8_sgt(i8 %x) {4983; CHECK-LABEL: brR0_i8_sgt:4984; CHECK: # %bb.0: # %entry4985; CHECK-NEXT: sextb16 a0, a04986; CHECK-NEXT: blsz32 a0, .LBB105_24987; CHECK-NEXT: # %bb.1: # %label14988; CHECK-NEXT: movi16 a0, 14989; CHECK-NEXT: rts164990; CHECK-NEXT: .LBB105_2: # %label24991; CHECK-NEXT: movi16 a0, 04992; CHECK-NEXT: rts164993;4994; GENERIC-LABEL: brR0_i8_sgt:4995; GENERIC: # %bb.0: # %entry4996; GENERIC-NEXT: .cfi_def_cfa_offset 04997; GENERIC-NEXT: subi16 sp, sp, 44998; GENERIC-NEXT: .cfi_def_cfa_offset 44999; GENERIC-NEXT: sextb16 a0, a05000; GENERIC-NEXT: cmplti16 a0, 15001; GENERIC-NEXT: bt16 .LBB105_25002; GENERIC-NEXT: # %bb.1: # %label15003; GENERIC-NEXT: movi16 a0, 15004; GENERIC-NEXT: addi16 sp, sp, 45005; GENERIC-NEXT: rts165006; GENERIC-NEXT: .LBB105_2: # %label25007; GENERIC-NEXT: movi16 a0, 05008; GENERIC-NEXT: addi16 sp, sp, 45009; GENERIC-NEXT: rts165010; CHECK-UGTXT: icmpu32 a0, a1, a05011; CHECK-UGTXT: rts165012entry:5013 %icmp = icmp sgt i8 %x, 05014 br i1 %icmp, label %label1, label %label25015label1:5016 ret i8 15017label2:5018 ret i8 05019}5020 5021;SGE5022define i8 @brRR_i8_sge(i8 %x, i8 %y) {5023; CHECK-LABEL: brRR_i8_sge:5024; CHECK: # %bb.0: # %entry5025; CHECK-NEXT: sextb16 a0, a05026; CHECK-NEXT: sextb16 a1, a15027; CHECK-NEXT: cmplt16 a1, a05028; CHECK-NEXT: bt32 .LBB106_25029; CHECK-NEXT: # %bb.1: # %label15030; CHECK-NEXT: movi16 a0, 15031; CHECK-NEXT: rts165032; CHECK-NEXT: .LBB106_2: # %label25033; CHECK-NEXT: movi16 a0, 05034; CHECK-NEXT: rts165035;5036; GENERIC-LABEL: brRR_i8_sge:5037; GENERIC: # %bb.0: # %entry5038; GENERIC-NEXT: .cfi_def_cfa_offset 05039; GENERIC-NEXT: subi16 sp, sp, 45040; GENERIC-NEXT: .cfi_def_cfa_offset 45041; GENERIC-NEXT: sextb16 a0, a05042; GENERIC-NEXT: sextb16 a1, a15043; GENERIC-NEXT: cmplt16 a1, a05044; GENERIC-NEXT: bt16 .LBB106_25045; GENERIC-NEXT: # %bb.1: # %label15046; GENERIC-NEXT: movi16 a0, 15047; GENERIC-NEXT: addi16 sp, sp, 45048; GENERIC-NEXT: rts165049; GENERIC-NEXT: .LBB106_2: # %label25050; GENERIC-NEXT: movi16 a0, 05051; GENERIC-NEXT: addi16 sp, sp, 45052; GENERIC-NEXT: rts165053; CHECK-UGTXT: icmpu32 a0, a1, a05054; CHECK-UGTXT: rts165055entry:5056 %icmp = icmp sge i8 %y, %x5057 br i1 %icmp, label %label1, label %label25058label1:5059 ret i8 15060label2:5061 ret i8 05062}5063 5064define i8 @brRI_i8_sge(i8 %x) {5065; CHECK-LABEL: brRI_i8_sge:5066; CHECK: # %bb.0: # %entry5067; CHECK-NEXT: sextb16 a0, a05068; CHECK-NEXT: cmplti16 a0, 105069; CHECK-NEXT: bt32 .LBB107_25070; CHECK-NEXT: # %bb.1: # %label15071; CHECK-NEXT: movi16 a0, 15072; CHECK-NEXT: rts165073; CHECK-NEXT: .LBB107_2: # %label25074; CHECK-NEXT: movi16 a0, 05075; CHECK-NEXT: rts165076;5077; GENERIC-LABEL: brRI_i8_sge:5078; GENERIC: # %bb.0: # %entry5079; GENERIC-NEXT: .cfi_def_cfa_offset 05080; GENERIC-NEXT: subi16 sp, sp, 45081; GENERIC-NEXT: .cfi_def_cfa_offset 45082; GENERIC-NEXT: sextb16 a0, a05083; GENERIC-NEXT: cmplti16 a0, 105084; GENERIC-NEXT: bt16 .LBB107_25085; GENERIC-NEXT: # %bb.1: # %label15086; GENERIC-NEXT: movi16 a0, 15087; GENERIC-NEXT: addi16 sp, sp, 45088; GENERIC-NEXT: rts165089; GENERIC-NEXT: .LBB107_2: # %label25090; GENERIC-NEXT: movi16 a0, 05091; GENERIC-NEXT: addi16 sp, sp, 45092; GENERIC-NEXT: rts165093; CHECK-UGTXT: icmpu32 a0, a1, a05094; CHECK-UGTXT: rts165095entry:5096 %icmp = icmp sge i8 %x, 105097 br i1 %icmp, label %label1, label %label25098label1:5099 ret i8 15100label2:5101 ret i8 05102}5103 5104define i8 @brR0_i8_sge(i8 %x) {5105; CHECK-LABEL: brR0_i8_sge:5106; CHECK: # %bb.0: # %entry5107; CHECK-NEXT: sextb16 a0, a05108; CHECK-NEXT: blz32 a0, .LBB108_25109; CHECK-NEXT: # %bb.1: # %label15110; CHECK-NEXT: movi16 a0, 15111; CHECK-NEXT: rts165112; CHECK-NEXT: .LBB108_2: # %label25113; CHECK-NEXT: movi16 a0, 05114; CHECK-NEXT: rts165115;5116; GENERIC-LABEL: brR0_i8_sge:5117; GENERIC: # %bb.0: # %entry5118; GENERIC-NEXT: .cfi_def_cfa_offset 05119; GENERIC-NEXT: subi16 sp, sp, 45120; GENERIC-NEXT: .cfi_def_cfa_offset 45121; GENERIC-NEXT: sextb16 a0, a05122; GENERIC-NEXT: movi16 a1, 05123; GENERIC-NEXT: cmplt16 a0, a15124; GENERIC-NEXT: bt16 .LBB108_25125; GENERIC-NEXT: # %bb.1: # %label15126; GENERIC-NEXT: movi16 a0, 15127; GENERIC-NEXT: addi16 sp, sp, 45128; GENERIC-NEXT: rts165129; GENERIC-NEXT: .LBB108_2: # %label25130; GENERIC-NEXT: movi16 a0, 05131; GENERIC-NEXT: addi16 sp, sp, 45132; GENERIC-NEXT: rts165133; CHECK-UGTXT: icmpu32 a0, a1, a05134; CHECK-UGTXT: rts165135entry:5136 %icmp = icmp sge i8 %x, 05137 br i1 %icmp, label %label1, label %label25138label1:5139 ret i8 15140label2:5141 ret i8 05142}5143 5144;SLT5145define i8 @brRR_i8_slt(i8 %x, i8 %y) {5146; CHECK-LABEL: brRR_i8_slt:5147; CHECK: # %bb.0: # %entry5148; CHECK-NEXT: sextb16 a0, a05149; CHECK-NEXT: sextb16 a1, a15150; CHECK-NEXT: cmplt16 a1, a05151; CHECK-NEXT: bf32 .LBB109_25152; CHECK-NEXT: # %bb.1: # %label15153; CHECK-NEXT: movi16 a0, 15154; CHECK-NEXT: rts165155; CHECK-NEXT: .LBB109_2: # %label25156; CHECK-NEXT: movi16 a0, 05157; CHECK-NEXT: rts165158;5159; GENERIC-LABEL: brRR_i8_slt:5160; GENERIC: # %bb.0: # %entry5161; GENERIC-NEXT: .cfi_def_cfa_offset 05162; GENERIC-NEXT: subi16 sp, sp, 45163; GENERIC-NEXT: .cfi_def_cfa_offset 45164; GENERIC-NEXT: sextb16 a0, a05165; GENERIC-NEXT: sextb16 a1, a15166; GENERIC-NEXT: cmplt16 a1, a05167; GENERIC-NEXT: bf16 .LBB109_25168; GENERIC-NEXT: # %bb.1: # %label15169; GENERIC-NEXT: movi16 a0, 15170; GENERIC-NEXT: addi16 sp, sp, 45171; GENERIC-NEXT: rts165172; GENERIC-NEXT: .LBB109_2: # %label25173; GENERIC-NEXT: movi16 a0, 05174; GENERIC-NEXT: addi16 sp, sp, 45175; GENERIC-NEXT: rts165176; CHECK-UGTXT: icmpu32 a0, a1, a05177; CHECK-UGTXT: rts165178entry:5179 %icmp = icmp slt i8 %y, %x5180 br i1 %icmp, label %label1, label %label25181label1:5182 ret i8 15183label2:5184 ret i8 05185}5186 5187define i8 @brRI_i8_slt(i8 %x) {5188; CHECK-LABEL: brRI_i8_slt:5189; CHECK: # %bb.0: # %entry5190; CHECK-NEXT: sextb16 a0, a05191; CHECK-NEXT: movi16 a1, 95192; CHECK-NEXT: cmplt16 a1, a05193; CHECK-NEXT: bt32 .LBB110_25194; CHECK-NEXT: # %bb.1: # %label15195; CHECK-NEXT: movi16 a0, 15196; CHECK-NEXT: rts165197; CHECK-NEXT: .LBB110_2: # %label25198; CHECK-NEXT: movi16 a0, 05199; CHECK-NEXT: rts165200;5201; GENERIC-LABEL: brRI_i8_slt:5202; GENERIC: # %bb.0: # %entry5203; GENERIC-NEXT: .cfi_def_cfa_offset 05204; GENERIC-NEXT: subi16 sp, sp, 45205; GENERIC-NEXT: .cfi_def_cfa_offset 45206; GENERIC-NEXT: sextb16 a0, a05207; GENERIC-NEXT: movi16 a1, 95208; GENERIC-NEXT: cmplt16 a1, a05209; GENERIC-NEXT: bt16 .LBB110_25210; GENERIC-NEXT: # %bb.1: # %label15211; GENERIC-NEXT: movi16 a0, 15212; GENERIC-NEXT: addi16 sp, sp, 45213; GENERIC-NEXT: rts165214; GENERIC-NEXT: .LBB110_2: # %label25215; GENERIC-NEXT: movi16 a0, 05216; GENERIC-NEXT: addi16 sp, sp, 45217; GENERIC-NEXT: rts165218; CHECK-UGTXT: icmpu32 a0, a1, a05219; CHECK-UGTXT: rts165220entry:5221 %icmp = icmp slt i8 %x, 105222 br i1 %icmp, label %label1, label %label25223label1:5224 ret i8 15225label2:5226 ret i8 05227}5228 5229define i8 @brR0_i8_slt(i8 %x) {5230; CHECK-LABEL: brR0_i8_slt:5231; CHECK: # %bb.0: # %entry5232; CHECK-NEXT: sextb16 a0, a05233; CHECK-NEXT: blz32 a0, .LBB111_25234; CHECK-NEXT: # %bb.1: # %label25235; CHECK-NEXT: movi16 a0, 05236; CHECK-NEXT: rts165237; CHECK-NEXT: .LBB111_2: # %label15238; CHECK-NEXT: movi16 a0, 15239; CHECK-NEXT: rts165240;5241; GENERIC-LABEL: brR0_i8_slt:5242; GENERIC: # %bb.0: # %entry5243; GENERIC-NEXT: .cfi_def_cfa_offset 05244; GENERIC-NEXT: subi16 sp, sp, 45245; GENERIC-NEXT: .cfi_def_cfa_offset 45246; GENERIC-NEXT: sextb16 a0, a05247; GENERIC-NEXT: movi16 a1, 2555248; GENERIC-NEXT: lsli16 a2, a1, 245249; GENERIC-NEXT: lsli16 a3, a1, 165250; GENERIC-NEXT: or16 a3, a25251; GENERIC-NEXT: lsli16 a2, a1, 85252; GENERIC-NEXT: or16 a2, a35253; GENERIC-NEXT: or16 a2, a15254; GENERIC-NEXT: cmplt16 a2, a05255; GENERIC-NEXT: bf16 .LBB111_25256; GENERIC-NEXT: # %bb.1: # %label25257; GENERIC-NEXT: movi16 a0, 05258; GENERIC-NEXT: addi16 sp, sp, 45259; GENERIC-NEXT: rts165260; GENERIC-NEXT: .LBB111_2: # %label15261; GENERIC-NEXT: movi16 a0, 15262; GENERIC-NEXT: addi16 sp, sp, 45263; GENERIC-NEXT: rts165264; CHECK-UGTXT: icmpu32 a0, a1, a05265; CHECK-UGTXT: rts165266entry:5267 %icmp = icmp slt i8 %x, 05268 br i1 %icmp, label %label1, label %label25269label1:5270 ret i8 15271label2:5272 ret i8 05273}5274 5275;SLE5276define i8 @brRR_i8_sle(i8 %x, i8 %y) {5277; CHECK-LABEL: brRR_i8_sle:5278; CHECK: # %bb.0: # %entry5279; CHECK-NEXT: sextb16 a1, a15280; CHECK-NEXT: sextb16 a0, a05281; CHECK-NEXT: cmplt16 a0, a15282; CHECK-NEXT: bt32 .LBB112_25283; CHECK-NEXT: # %bb.1: # %label15284; CHECK-NEXT: movi16 a0, 15285; CHECK-NEXT: rts165286; CHECK-NEXT: .LBB112_2: # %label25287; CHECK-NEXT: movi16 a0, 05288; CHECK-NEXT: rts165289;5290; GENERIC-LABEL: brRR_i8_sle:5291; GENERIC: # %bb.0: # %entry5292; GENERIC-NEXT: .cfi_def_cfa_offset 05293; GENERIC-NEXT: subi16 sp, sp, 45294; GENERIC-NEXT: .cfi_def_cfa_offset 45295; GENERIC-NEXT: sextb16 a1, a15296; GENERIC-NEXT: sextb16 a0, a05297; GENERIC-NEXT: cmplt16 a0, a15298; GENERIC-NEXT: bt16 .LBB112_25299; GENERIC-NEXT: # %bb.1: # %label15300; GENERIC-NEXT: movi16 a0, 15301; GENERIC-NEXT: addi16 sp, sp, 45302; GENERIC-NEXT: rts165303; GENERIC-NEXT: .LBB112_2: # %label25304; GENERIC-NEXT: movi16 a0, 05305; GENERIC-NEXT: addi16 sp, sp, 45306; GENERIC-NEXT: rts165307; CHECK-UGTXT: icmpu32 a0, a1, a05308; CHECK-UGTXT: rts165309entry:5310 %icmp = icmp sle i8 %y, %x5311 br i1 %icmp, label %label1, label %label25312label1:5313 ret i8 15314label2:5315 ret i8 05316}5317 5318define i8 @brRI_i8_sle(i8 %x) {5319; CHECK-LABEL: brRI_i8_sle:5320; CHECK: # %bb.0: # %entry5321; CHECK-NEXT: sextb16 a0, a05322; CHECK-NEXT: movi16 a1, 105323; CHECK-NEXT: cmplt16 a1, a05324; CHECK-NEXT: bt32 .LBB113_25325; CHECK-NEXT: # %bb.1: # %label15326; CHECK-NEXT: movi16 a0, 15327; CHECK-NEXT: rts165328; CHECK-NEXT: .LBB113_2: # %label25329; CHECK-NEXT: movi16 a0, 05330; CHECK-NEXT: rts165331;5332; GENERIC-LABEL: brRI_i8_sle:5333; GENERIC: # %bb.0: # %entry5334; GENERIC-NEXT: .cfi_def_cfa_offset 05335; GENERIC-NEXT: subi16 sp, sp, 45336; GENERIC-NEXT: .cfi_def_cfa_offset 45337; GENERIC-NEXT: sextb16 a0, a05338; GENERIC-NEXT: movi16 a1, 105339; GENERIC-NEXT: cmplt16 a1, a05340; GENERIC-NEXT: bt16 .LBB113_25341; GENERIC-NEXT: # %bb.1: # %label15342; GENERIC-NEXT: movi16 a0, 15343; GENERIC-NEXT: addi16 sp, sp, 45344; GENERIC-NEXT: rts165345; GENERIC-NEXT: .LBB113_2: # %label25346; GENERIC-NEXT: movi16 a0, 05347; GENERIC-NEXT: addi16 sp, sp, 45348; GENERIC-NEXT: rts165349; CHECK-UGTXT: icmpu32 a0, a1, a05350; CHECK-UGTXT: rts165351entry:5352 %icmp = icmp sle i8 %x, 105353 br i1 %icmp, label %label1, label %label25354label1:5355 ret i8 15356label2:5357 ret i8 05358}5359 5360define i8 @brR0_i8_sle(i8 %x) {5361; CHECK-LABEL: brR0_i8_sle:5362; CHECK: # %bb.0: # %entry5363; CHECK-NEXT: sextb16 a0, a05364; CHECK-NEXT: bhz32 a0, .LBB114_25365; CHECK-NEXT: # %bb.1: # %label15366; CHECK-NEXT: movi16 a0, 15367; CHECK-NEXT: rts165368; CHECK-NEXT: .LBB114_2: # %label25369; CHECK-NEXT: movi16 a0, 05370; CHECK-NEXT: rts165371;5372; GENERIC-LABEL: brR0_i8_sle:5373; GENERIC: # %bb.0: # %entry5374; GENERIC-NEXT: .cfi_def_cfa_offset 05375; GENERIC-NEXT: subi16 sp, sp, 45376; GENERIC-NEXT: .cfi_def_cfa_offset 45377; GENERIC-NEXT: sextb16 a0, a05378; GENERIC-NEXT: movi16 a1, 05379; GENERIC-NEXT: cmplt16 a1, a05380; GENERIC-NEXT: bt16 .LBB114_25381; GENERIC-NEXT: # %bb.1: # %label15382; GENERIC-NEXT: movi16 a0, 15383; GENERIC-NEXT: addi16 sp, sp, 45384; GENERIC-NEXT: rts165385; GENERIC-NEXT: .LBB114_2: # %label25386; GENERIC-NEXT: movi16 a0, 05387; GENERIC-NEXT: addi16 sp, sp, 45388; GENERIC-NEXT: rts165389; CHECK-UGTXT: icmpu32 a0, a1, a05390; CHECK-UGTXT: rts165391entry:5392 %icmp = icmp sle i8 %x, 05393 br i1 %icmp, label %label1, label %label25394label1:5395 ret i8 15396label2:5397 ret i8 05398}5399 5400 5401define i8 @brCBit_i8(i1 %c) {5402; CHECK-LABEL: brCBit_i8:5403; CHECK: # %bb.0: # %entry5404; CHECK-NEXT: andi32 a0, a0, 15405; CHECK-NEXT: bez32 a0, .LBB115_25406; CHECK-NEXT: # %bb.1: # %label15407; CHECK-NEXT: movi16 a0, 15408; CHECK-NEXT: rts165409; CHECK-NEXT: .LBB115_2: # %label25410; CHECK-NEXT: movi16 a0, 05411; CHECK-NEXT: rts165412;5413; GENERIC-LABEL: brCBit_i8:5414; GENERIC: # %bb.0: # %entry5415; GENERIC-NEXT: .cfi_def_cfa_offset 05416; GENERIC-NEXT: subi16 sp, sp, 45417; GENERIC-NEXT: .cfi_def_cfa_offset 45418; GENERIC-NEXT: movi16 a1, 15419; GENERIC-NEXT: and16 a1, a05420; GENERIC-NEXT: cmpnei16 a1, 05421; GENERIC-NEXT: bf16 .LBB115_25422; GENERIC-NEXT: # %bb.1: # %label15423; GENERIC-NEXT: movi16 a0, 15424; GENERIC-NEXT: addi16 sp, sp, 45425; GENERIC-NEXT: rts165426; GENERIC-NEXT: .LBB115_2: # %label25427; GENERIC-NEXT: movi16 a0, 05428; GENERIC-NEXT: addi16 sp, sp, 45429; GENERIC-NEXT: rts165430entry:5431 br i1 %c, label %label1, label %label25432label1:5433 ret i8 15434label2:5435 ret i8 05436}5437 5438 5439;EQ5440define i1 @brRR_i1_eq(i1 %x, i1 %y) {5441; CHECK-LABEL: brRR_i1_eq:5442; CHECK: # %bb.0: # %entry5443; CHECK-NEXT: andi32 a0, a0, 15444; CHECK-NEXT: andi32 a1, a1, 15445; CHECK-NEXT: cmpne16 a1, a05446; CHECK-NEXT: bt32 .LBB116_25447; CHECK-NEXT: # %bb.1: # %label15448; CHECK-NEXT: movi16 a0, 15449; CHECK-NEXT: rts165450; CHECK-NEXT: .LBB116_2: # %label25451; CHECK-NEXT: movi16 a0, 05452; CHECK-NEXT: rts165453;5454; GENERIC-LABEL: brRR_i1_eq:5455; GENERIC: # %bb.0: # %entry5456; GENERIC-NEXT: .cfi_def_cfa_offset 05457; GENERIC-NEXT: subi16 sp, sp, 45458; GENERIC-NEXT: .cfi_def_cfa_offset 45459; GENERIC-NEXT: movi16 a2, 15460; GENERIC-NEXT: and16 a0, a25461; GENERIC-NEXT: and16 a1, a25462; GENERIC-NEXT: cmpne16 a1, a05463; GENERIC-NEXT: bt16 .LBB116_25464; GENERIC-NEXT: # %bb.1: # %label15465; GENERIC-NEXT: movi16 a0, 15466; GENERIC-NEXT: addi16 sp, sp, 45467; GENERIC-NEXT: rts165468; GENERIC-NEXT: .LBB116_2: # %label25469; GENERIC-NEXT: movi16 a0, 05470; GENERIC-NEXT: addi16 sp, sp, 45471; GENERIC-NEXT: rts165472entry:5473 %icmp = icmp eq i1 %y, %x5474 br i1 %icmp, label %label1, label %label25475label1:5476 ret i1 15477label2:5478 ret i1 05479}5480 5481define i1 @brRI_i1_eq(i1 %x) {5482; CHECK-LABEL: brRI_i1_eq:5483; CHECK: # %bb.0: # %entry5484; CHECK-NEXT: andi32 a0, a0, 15485; CHECK-NEXT: btsti16 a0, 05486; CHECK-NEXT: bf32 .LBB117_25487; CHECK-NEXT: # %bb.1: # %label25488; CHECK-NEXT: movi16 a0, 05489; CHECK-NEXT: rts165490; CHECK-NEXT: .LBB117_2: # %label15491; CHECK-NEXT: movi16 a0, 15492; CHECK-NEXT: rts165493;5494; GENERIC-LABEL: brRI_i1_eq:5495; GENERIC: # %bb.0: # %entry5496; GENERIC-NEXT: .cfi_def_cfa_offset 05497; GENERIC-NEXT: subi16 sp, sp, 45498; GENERIC-NEXT: .cfi_def_cfa_offset 45499; GENERIC-NEXT: movi16 a1, 15500; GENERIC-NEXT: and16 a1, a05501; GENERIC-NEXT: btsti16 a1, 05502; GENERIC-NEXT: bf16 .LBB117_25503; GENERIC-NEXT: # %bb.1: # %label25504; GENERIC-NEXT: movi16 a0, 05505; GENERIC-NEXT: addi16 sp, sp, 45506; GENERIC-NEXT: rts165507; GENERIC-NEXT: .LBB117_2: # %label15508; GENERIC-NEXT: movi16 a0, 15509; GENERIC-NEXT: addi16 sp, sp, 45510; GENERIC-NEXT: rts165511entry:5512 %icmp = icmp eq i1 %x, 105513 br i1 %icmp, label %label1, label %label25514label1:5515 ret i1 15516label2:5517 ret i1 05518}5519 5520define i1 @brR0_i1_eq(i1 %x) {5521; CHECK-LABEL: brR0_i1_eq:5522; CHECK: # %bb.0: # %entry5523; CHECK-NEXT: andi32 a0, a0, 15524; CHECK-NEXT: btsti16 a0, 05525; CHECK-NEXT: bf32 .LBB118_25526; CHECK-NEXT: # %bb.1: # %label25527; CHECK-NEXT: movi16 a0, 05528; CHECK-NEXT: rts165529; CHECK-NEXT: .LBB118_2: # %label15530; CHECK-NEXT: movi16 a0, 15531; CHECK-NEXT: rts165532;5533; GENERIC-LABEL: brR0_i1_eq:5534; GENERIC: # %bb.0: # %entry5535; GENERIC-NEXT: .cfi_def_cfa_offset 05536; GENERIC-NEXT: subi16 sp, sp, 45537; GENERIC-NEXT: .cfi_def_cfa_offset 45538; GENERIC-NEXT: movi16 a1, 15539; GENERIC-NEXT: and16 a1, a05540; GENERIC-NEXT: btsti16 a1, 05541; GENERIC-NEXT: bf16 .LBB118_25542; GENERIC-NEXT: # %bb.1: # %label25543; GENERIC-NEXT: movi16 a0, 05544; GENERIC-NEXT: addi16 sp, sp, 45545; GENERIC-NEXT: rts165546; GENERIC-NEXT: .LBB118_2: # %label15547; GENERIC-NEXT: movi16 a0, 15548; GENERIC-NEXT: addi16 sp, sp, 45549; GENERIC-NEXT: rts165550entry:5551 %icmp = icmp eq i1 %x, 05552 br i1 %icmp, label %label1, label %label25553label1:5554 ret i1 15555label2:5556 ret i1 05557}5558 5559;NE5560define i1 @brRR_i1_ne(i1 %x, i1 %y) {5561; CHECK-LABEL: brRR_i1_ne:5562; CHECK: # %bb.0: # %entry5563; CHECK-NEXT: andi32 a0, a0, 15564; CHECK-NEXT: andi32 a1, a1, 15565; CHECK-NEXT: cmpne16 a1, a05566; CHECK-NEXT: bf32 .LBB119_25567; CHECK-NEXT: # %bb.1: # %label15568; CHECK-NEXT: movi16 a0, 15569; CHECK-NEXT: rts165570; CHECK-NEXT: .LBB119_2: # %label25571; CHECK-NEXT: movi16 a0, 05572; CHECK-NEXT: rts165573;5574; GENERIC-LABEL: brRR_i1_ne:5575; GENERIC: # %bb.0: # %entry5576; GENERIC-NEXT: .cfi_def_cfa_offset 05577; GENERIC-NEXT: subi16 sp, sp, 45578; GENERIC-NEXT: .cfi_def_cfa_offset 45579; GENERIC-NEXT: movi16 a2, 15580; GENERIC-NEXT: and16 a0, a25581; GENERIC-NEXT: and16 a1, a25582; GENERIC-NEXT: cmpne16 a1, a05583; GENERIC-NEXT: bf16 .LBB119_25584; GENERIC-NEXT: # %bb.1: # %label15585; GENERIC-NEXT: movi16 a0, 15586; GENERIC-NEXT: addi16 sp, sp, 45587; GENERIC-NEXT: rts165588; GENERIC-NEXT: .LBB119_2: # %label25589; GENERIC-NEXT: movi16 a0, 05590; GENERIC-NEXT: addi16 sp, sp, 45591; GENERIC-NEXT: rts165592entry:5593 %icmp = icmp ne i1 %y, %x5594 br i1 %icmp, label %label1, label %label25595label1:5596 ret i1 15597label2:5598 ret i1 05599}5600 5601define i1 @brRI_i1_ne(i1 %x) {5602; CHECK-LABEL: brRI_i1_ne:5603; CHECK: # %bb.0: # %entry5604; CHECK-NEXT: andi32 a0, a0, 15605; CHECK-NEXT: bez32 a0, .LBB120_25606; CHECK-NEXT: # %bb.1: # %label15607; CHECK-NEXT: movi16 a0, 15608; CHECK-NEXT: rts165609; CHECK-NEXT: .LBB120_2: # %label25610; CHECK-NEXT: movi16 a0, 05611; CHECK-NEXT: rts165612;5613; GENERIC-LABEL: brRI_i1_ne:5614; GENERIC: # %bb.0: # %entry5615; GENERIC-NEXT: .cfi_def_cfa_offset 05616; GENERIC-NEXT: subi16 sp, sp, 45617; GENERIC-NEXT: .cfi_def_cfa_offset 45618; GENERIC-NEXT: movi16 a1, 15619; GENERIC-NEXT: and16 a1, a05620; GENERIC-NEXT: cmpnei16 a1, 05621; GENERIC-NEXT: bf16 .LBB120_25622; GENERIC-NEXT: # %bb.1: # %label15623; GENERIC-NEXT: movi16 a0, 15624; GENERIC-NEXT: addi16 sp, sp, 45625; GENERIC-NEXT: rts165626; GENERIC-NEXT: .LBB120_2: # %label25627; GENERIC-NEXT: movi16 a0, 05628; GENERIC-NEXT: addi16 sp, sp, 45629; GENERIC-NEXT: rts165630entry:5631 %icmp = icmp ne i1 %x, 105632 br i1 %icmp, label %label1, label %label25633label1:5634 ret i1 15635label2:5636 ret i1 05637}5638 5639define i1 @brR0_i1_ne(i1 %x) {5640; CHECK-LABEL: brR0_i1_ne:5641; CHECK: # %bb.0: # %entry5642; CHECK-NEXT: andi32 a0, a0, 15643; CHECK-NEXT: bez32 a0, .LBB121_25644; CHECK-NEXT: # %bb.1: # %label15645; CHECK-NEXT: movi16 a0, 15646; CHECK-NEXT: rts165647; CHECK-NEXT: .LBB121_2: # %label25648; CHECK-NEXT: movi16 a0, 05649; CHECK-NEXT: rts165650;5651; GENERIC-LABEL: brR0_i1_ne:5652; GENERIC: # %bb.0: # %entry5653; GENERIC-NEXT: .cfi_def_cfa_offset 05654; GENERIC-NEXT: subi16 sp, sp, 45655; GENERIC-NEXT: .cfi_def_cfa_offset 45656; GENERIC-NEXT: movi16 a1, 15657; GENERIC-NEXT: and16 a1, a05658; GENERIC-NEXT: cmpnei16 a1, 05659; GENERIC-NEXT: bf16 .LBB121_25660; GENERIC-NEXT: # %bb.1: # %label15661; GENERIC-NEXT: movi16 a0, 15662; GENERIC-NEXT: addi16 sp, sp, 45663; GENERIC-NEXT: rts165664; GENERIC-NEXT: .LBB121_2: # %label25665; GENERIC-NEXT: movi16 a0, 05666; GENERIC-NEXT: addi16 sp, sp, 45667; GENERIC-NEXT: rts165668entry:5669 %icmp = icmp ne i1 %x, 05670 br i1 %icmp, label %label1, label %label25671label1:5672 ret i1 15673label2:5674 ret i1 05675}5676 5677;UGT5678define i1 @brRR_i1_ugt(i1 %x, i1 %y) {5679; CHECK-LABEL: brRR_i1_ugt:5680; CHECK: # %bb.0: # %entry5681; CHECK-NEXT: andi32 a1, a1, 15682; CHECK-NEXT: andi32 a0, a0, 15683; CHECK-NEXT: cmphs16 a0, a15684; CHECK-NEXT: bt32 .LBB122_25685; CHECK-NEXT: # %bb.1: # %label15686; CHECK-NEXT: movi16 a0, 15687; CHECK-NEXT: rts165688; CHECK-NEXT: .LBB122_2: # %label25689; CHECK-NEXT: movi16 a0, 05690; CHECK-NEXT: rts165691;5692; GENERIC-LABEL: brRR_i1_ugt:5693; GENERIC: # %bb.0: # %entry5694; GENERIC-NEXT: .cfi_def_cfa_offset 05695; GENERIC-NEXT: subi16 sp, sp, 45696; GENERIC-NEXT: .cfi_def_cfa_offset 45697; GENERIC-NEXT: movi16 a2, 15698; GENERIC-NEXT: and16 a1, a25699; GENERIC-NEXT: and16 a0, a25700; GENERIC-NEXT: cmphs16 a0, a15701; GENERIC-NEXT: bt16 .LBB122_25702; GENERIC-NEXT: # %bb.1: # %label15703; GENERIC-NEXT: movi16 a0, 15704; GENERIC-NEXT: addi16 sp, sp, 45705; GENERIC-NEXT: rts165706; GENERIC-NEXT: .LBB122_2: # %label25707; GENERIC-NEXT: movi16 a0, 05708; GENERIC-NEXT: addi16 sp, sp, 45709; GENERIC-NEXT: rts165710; CHECK-UGTXT: icmpu32 a0, a1, a05711; CHECK-UGTXT: rts165712entry:5713 %icmp = icmp ugt i1 %y, %x5714 br i1 %icmp, label %label1, label %label25715label1:5716 ret i1 15717label2:5718 ret i1 05719}5720 5721define i1 @brRI_i1_ugt(i1 %x) {5722; CHECK-LABEL: brRI_i1_ugt:5723; CHECK: # %bb.0: # %entry5724; CHECK-NEXT: andi32 a0, a0, 15725; CHECK-NEXT: bez32 a0, .LBB123_25726; CHECK-NEXT: # %bb.1: # %label15727; CHECK-NEXT: movi16 a0, 15728; CHECK-NEXT: rts165729; CHECK-NEXT: .LBB123_2: # %label25730; CHECK-NEXT: movi16 a0, 05731; CHECK-NEXT: rts165732;5733; GENERIC-LABEL: brRI_i1_ugt:5734; GENERIC: # %bb.0: # %entry5735; GENERIC-NEXT: .cfi_def_cfa_offset 05736; GENERIC-NEXT: subi16 sp, sp, 45737; GENERIC-NEXT: .cfi_def_cfa_offset 45738; GENERIC-NEXT: movi16 a1, 15739; GENERIC-NEXT: and16 a1, a05740; GENERIC-NEXT: cmpnei16 a1, 05741; GENERIC-NEXT: bf16 .LBB123_25742; GENERIC-NEXT: # %bb.1: # %label15743; GENERIC-NEXT: movi16 a0, 15744; GENERIC-NEXT: addi16 sp, sp, 45745; GENERIC-NEXT: rts165746; GENERIC-NEXT: .LBB123_2: # %label25747; GENERIC-NEXT: movi16 a0, 05748; GENERIC-NEXT: addi16 sp, sp, 45749; GENERIC-NEXT: rts165750; CHECK-UGTXT: icmpu32 a0, a1, a05751; CHECK-UGTXT: rts165752entry:5753 %icmp = icmp ugt i1 %x, 105754 br i1 %icmp, label %label1, label %label25755label1:5756 ret i1 15757label2:5758 ret i1 05759}5760 5761define i1 @brR0_i1_ugt(i1 %x) {5762; CHECK-LABEL: brR0_i1_ugt:5763; CHECK: # %bb.0: # %entry5764; CHECK-NEXT: andi32 a0, a0, 15765; CHECK-NEXT: bez32 a0, .LBB124_25766; CHECK-NEXT: # %bb.1: # %label15767; CHECK-NEXT: movi16 a0, 15768; CHECK-NEXT: rts165769; CHECK-NEXT: .LBB124_2: # %label25770; CHECK-NEXT: movi16 a0, 05771; CHECK-NEXT: rts165772;5773; GENERIC-LABEL: brR0_i1_ugt:5774; GENERIC: # %bb.0: # %entry5775; GENERIC-NEXT: .cfi_def_cfa_offset 05776; GENERIC-NEXT: subi16 sp, sp, 45777; GENERIC-NEXT: .cfi_def_cfa_offset 45778; GENERIC-NEXT: movi16 a1, 15779; GENERIC-NEXT: and16 a1, a05780; GENERIC-NEXT: cmpnei16 a1, 05781; GENERIC-NEXT: bf16 .LBB124_25782; GENERIC-NEXT: # %bb.1: # %label15783; GENERIC-NEXT: movi16 a0, 15784; GENERIC-NEXT: addi16 sp, sp, 45785; GENERIC-NEXT: rts165786; GENERIC-NEXT: .LBB124_2: # %label25787; GENERIC-NEXT: movi16 a0, 05788; GENERIC-NEXT: addi16 sp, sp, 45789; GENERIC-NEXT: rts165790; CHECK-UGTXT: icmpu32 a0, a1, a05791; CHECK-UGTXT: rts165792entry:5793 %icmp = icmp ugt i1 %x, 05794 br i1 %icmp, label %label1, label %label25795label1:5796 ret i1 15797label2:5798 ret i1 05799}5800 5801;UGE5802define i1 @brRR_i1_uge(i1 %x, i1 %y) {5803; CHECK-LABEL: brRR_i1_uge:5804; CHECK: # %bb.0: # %entry5805; CHECK-NEXT: andi32 a0, a0, 15806; CHECK-NEXT: andi32 a1, a1, 15807; CHECK-NEXT: cmphs16 a1, a05808; CHECK-NEXT: bf32 .LBB125_25809; CHECK-NEXT: # %bb.1: # %label15810; CHECK-NEXT: movi16 a0, 15811; CHECK-NEXT: rts165812; CHECK-NEXT: .LBB125_2: # %label25813; CHECK-NEXT: movi16 a0, 05814; CHECK-NEXT: rts165815;5816; GENERIC-LABEL: brRR_i1_uge:5817; GENERIC: # %bb.0: # %entry5818; GENERIC-NEXT: .cfi_def_cfa_offset 05819; GENERIC-NEXT: subi16 sp, sp, 45820; GENERIC-NEXT: .cfi_def_cfa_offset 45821; GENERIC-NEXT: movi16 a2, 15822; GENERIC-NEXT: and16 a0, a25823; GENERIC-NEXT: and16 a1, a25824; GENERIC-NEXT: cmphs16 a1, a05825; GENERIC-NEXT: bf16 .LBB125_25826; GENERIC-NEXT: # %bb.1: # %label15827; GENERIC-NEXT: movi16 a0, 15828; GENERIC-NEXT: addi16 sp, sp, 45829; GENERIC-NEXT: rts165830; GENERIC-NEXT: .LBB125_2: # %label25831; GENERIC-NEXT: movi16 a0, 05832; GENERIC-NEXT: addi16 sp, sp, 45833; GENERIC-NEXT: rts165834; CHECK-UGTXT: icmpu32 a0, a1, a05835; CHECK-UGTXT: rts165836entry:5837 %icmp = icmp uge i1 %y, %x5838 br i1 %icmp, label %label1, label %label25839label1:5840 ret i1 15841label2:5842 ret i1 05843}5844 5845define i1 @brRI_i1_uge(i1 %x) {5846; CHECK-LABEL: brRI_i1_uge:5847; CHECK: # %bb.0: # %entry5848; CHECK-NEXT: movi16 a0, 05849; CHECK-NEXT: btsti16 a0, 05850; CHECK-NEXT: bt32 .LBB126_25851; CHECK-NEXT: # %bb.1: # %label15852; CHECK-NEXT: movi16 a0, 15853; CHECK-NEXT: .LBB126_2: # %label25854; CHECK-NEXT: rts165855;5856; GENERIC-LABEL: brRI_i1_uge:5857; GENERIC: # %bb.0: # %entry5858; GENERIC-NEXT: .cfi_def_cfa_offset 05859; GENERIC-NEXT: subi16 sp, sp, 45860; GENERIC-NEXT: .cfi_def_cfa_offset 45861; GENERIC-NEXT: movi16 a0, 05862; GENERIC-NEXT: btsti16 a0, 05863; GENERIC-NEXT: bt16 .LBB126_25864; GENERIC-NEXT: # %bb.1: # %label15865; GENERIC-NEXT: movi16 a0, 15866; GENERIC-NEXT: .LBB126_2: # %label25867; GENERIC-NEXT: addi16 sp, sp, 45868; GENERIC-NEXT: rts165869; CHECK-UGTXT: icmpu32 a0, a1, a05870; CHECK-UGTXT: rts165871entry:5872 %icmp = icmp uge i1 %x, 105873 br i1 %icmp, label %label1, label %label25874label1:5875 ret i1 15876label2:5877 ret i1 05878}5879 5880;ULT5881define i1 @brRR_i1_ult(i1 %x, i1 %y) {5882; CHECK-LABEL: brRR_i1_ult:5883; CHECK: # %bb.0: # %entry5884; CHECK-NEXT: andi32 a0, a0, 15885; CHECK-NEXT: andi32 a1, a1, 15886; CHECK-NEXT: cmphs16 a1, a05887; CHECK-NEXT: bt32 .LBB127_25888; CHECK-NEXT: # %bb.1: # %label15889; CHECK-NEXT: movi16 a0, 15890; CHECK-NEXT: rts165891; CHECK-NEXT: .LBB127_2: # %label25892; CHECK-NEXT: movi16 a0, 05893; CHECK-NEXT: rts165894;5895; GENERIC-LABEL: brRR_i1_ult:5896; GENERIC: # %bb.0: # %entry5897; GENERIC-NEXT: .cfi_def_cfa_offset 05898; GENERIC-NEXT: subi16 sp, sp, 45899; GENERIC-NEXT: .cfi_def_cfa_offset 45900; GENERIC-NEXT: movi16 a2, 15901; GENERIC-NEXT: and16 a0, a25902; GENERIC-NEXT: and16 a1, a25903; GENERIC-NEXT: cmphs16 a1, a05904; GENERIC-NEXT: bt16 .LBB127_25905; GENERIC-NEXT: # %bb.1: # %label15906; GENERIC-NEXT: movi16 a0, 15907; GENERIC-NEXT: addi16 sp, sp, 45908; GENERIC-NEXT: rts165909; GENERIC-NEXT: .LBB127_2: # %label25910; GENERIC-NEXT: movi16 a0, 05911; GENERIC-NEXT: addi16 sp, sp, 45912; GENERIC-NEXT: rts165913; CHECK-UGTXT: icmpu32 a0, a1, a05914; CHECK-UGTXT: rts165915entry:5916 %icmp = icmp ult i1 %y, %x5917 br i1 %icmp, label %label1, label %label25918label1:5919 ret i1 15920label2:5921 ret i1 05922}5923 5924define i1 @brRI_i1_ult(i1 %x) {5925; CHECK-LABEL: brRI_i1_ult:5926; CHECK: # %bb.0: # %entry5927; CHECK-NEXT: movi16 a0, 15928; CHECK-NEXT: btsti16 a0, 05929; CHECK-NEXT: bt32 .LBB128_25930; CHECK-NEXT: # %bb.1: # %label15931; CHECK-NEXT: rts165932; CHECK-NEXT: .LBB128_2: # %label25933; CHECK-NEXT: movi16 a0, 05934; CHECK-NEXT: rts165935;5936; GENERIC-LABEL: brRI_i1_ult:5937; GENERIC: # %bb.0: # %entry5938; GENERIC-NEXT: .cfi_def_cfa_offset 05939; GENERIC-NEXT: subi16 sp, sp, 45940; GENERIC-NEXT: .cfi_def_cfa_offset 45941; GENERIC-NEXT: movi16 a0, 15942; GENERIC-NEXT: btsti16 a0, 05943; GENERIC-NEXT: bt16 .LBB128_25944; GENERIC-NEXT: # %bb.1: # %label15945; GENERIC-NEXT: addi16 sp, sp, 45946; GENERIC-NEXT: rts165947; GENERIC-NEXT: .LBB128_2: # %label25948; GENERIC-NEXT: movi16 a0, 05949; GENERIC-NEXT: addi16 sp, sp, 45950; GENERIC-NEXT: rts165951; CHECK-UGTXT: icmpu32 a0, a1, a05952; CHECK-UGTXT: rts165953entry:5954 %icmp = icmp ult i1 %x, 105955 br i1 %icmp, label %label1, label %label25956label1:5957 ret i1 15958label2:5959 ret i1 05960}5961 5962 5963;ULE5964define i1 @brRR_i1_ule(i1 %x, i1 %y) {5965; CHECK-LABEL: brRR_i1_ule:5966; CHECK: # %bb.0: # %entry5967; CHECK-NEXT: andi32 a1, a1, 15968; CHECK-NEXT: andi32 a0, a0, 15969; CHECK-NEXT: cmphs16 a0, a15970; CHECK-NEXT: bf32 .LBB129_25971; CHECK-NEXT: # %bb.1: # %label15972; CHECK-NEXT: movi16 a0, 15973; CHECK-NEXT: rts165974; CHECK-NEXT: .LBB129_2: # %label25975; CHECK-NEXT: movi16 a0, 05976; CHECK-NEXT: rts165977;5978; GENERIC-LABEL: brRR_i1_ule:5979; GENERIC: # %bb.0: # %entry5980; GENERIC-NEXT: .cfi_def_cfa_offset 05981; GENERIC-NEXT: subi16 sp, sp, 45982; GENERIC-NEXT: .cfi_def_cfa_offset 45983; GENERIC-NEXT: movi16 a2, 15984; GENERIC-NEXT: and16 a1, a25985; GENERIC-NEXT: and16 a0, a25986; GENERIC-NEXT: cmphs16 a0, a15987; GENERIC-NEXT: bf16 .LBB129_25988; GENERIC-NEXT: # %bb.1: # %label15989; GENERIC-NEXT: movi16 a0, 15990; GENERIC-NEXT: addi16 sp, sp, 45991; GENERIC-NEXT: rts165992; GENERIC-NEXT: .LBB129_2: # %label25993; GENERIC-NEXT: movi16 a0, 05994; GENERIC-NEXT: addi16 sp, sp, 45995; GENERIC-NEXT: rts165996; CHECK-UGTXT: icmpu32 a0, a1, a05997; CHECK-UGTXT: rts165998entry:5999 %icmp = icmp ule i1 %y, %x6000 br i1 %icmp, label %label1, label %label26001label1:6002 ret i1 16003label2:6004 ret i1 06005}6006 6007define i1 @brRI_i1_ule(i1 %x) {6008; CHECK-LABEL: brRI_i1_ule:6009; CHECK: # %bb.0: # %entry6010; CHECK-NEXT: andi32 a0, a0, 16011; CHECK-NEXT: btsti16 a0, 06012; CHECK-NEXT: bt32 .LBB130_26013; CHECK-NEXT: # %bb.1: # %label16014; CHECK-NEXT: movi16 a0, 16015; CHECK-NEXT: rts166016; CHECK-NEXT: .LBB130_2: # %label26017; CHECK-NEXT: movi16 a0, 06018; CHECK-NEXT: rts166019;6020; GENERIC-LABEL: brRI_i1_ule:6021; GENERIC: # %bb.0: # %entry6022; GENERIC-NEXT: .cfi_def_cfa_offset 06023; GENERIC-NEXT: subi16 sp, sp, 46024; GENERIC-NEXT: .cfi_def_cfa_offset 46025; GENERIC-NEXT: movi16 a1, 16026; GENERIC-NEXT: and16 a1, a06027; GENERIC-NEXT: btsti16 a1, 06028; GENERIC-NEXT: bt16 .LBB130_26029; GENERIC-NEXT: # %bb.1: # %label16030; GENERIC-NEXT: movi16 a0, 16031; GENERIC-NEXT: addi16 sp, sp, 46032; GENERIC-NEXT: rts166033; GENERIC-NEXT: .LBB130_2: # %label26034; GENERIC-NEXT: movi16 a0, 06035; GENERIC-NEXT: addi16 sp, sp, 46036; GENERIC-NEXT: rts166037; CHECK-UGTXT: icmpu32 a0, a1, a06038; CHECK-UGTXT: rts166039entry:6040 %icmp = icmp ule i1 %x, 106041 br i1 %icmp, label %label1, label %label26042label1:6043 ret i1 16044label2:6045 ret i1 06046}6047 6048define i1 @brR0_i1_ule(i1 %x) {6049; CHECK-LABEL: brR0_i1_ule:6050; CHECK: # %bb.0: # %entry6051; CHECK-NEXT: andi32 a0, a0, 16052; CHECK-NEXT: btsti16 a0, 06053; CHECK-NEXT: bt32 .LBB131_26054; CHECK-NEXT: # %bb.1: # %label16055; CHECK-NEXT: movi16 a0, 16056; CHECK-NEXT: rts166057; CHECK-NEXT: .LBB131_2: # %label26058; CHECK-NEXT: movi16 a0, 06059; CHECK-NEXT: rts166060;6061; GENERIC-LABEL: brR0_i1_ule:6062; GENERIC: # %bb.0: # %entry6063; GENERIC-NEXT: .cfi_def_cfa_offset 06064; GENERIC-NEXT: subi16 sp, sp, 46065; GENERIC-NEXT: .cfi_def_cfa_offset 46066; GENERIC-NEXT: movi16 a1, 16067; GENERIC-NEXT: and16 a1, a06068; GENERIC-NEXT: btsti16 a1, 06069; GENERIC-NEXT: bt16 .LBB131_26070; GENERIC-NEXT: # %bb.1: # %label16071; GENERIC-NEXT: movi16 a0, 16072; GENERIC-NEXT: addi16 sp, sp, 46073; GENERIC-NEXT: rts166074; GENERIC-NEXT: .LBB131_2: # %label26075; GENERIC-NEXT: movi16 a0, 06076; GENERIC-NEXT: addi16 sp, sp, 46077; GENERIC-NEXT: rts166078; CHECK-UGTXT: icmpu32 a0, a1, a06079; CHECK-UGTXT: rts166080entry:6081 %icmp = icmp ule i1 %x, 06082 br i1 %icmp, label %label1, label %label26083label1:6084 ret i1 16085label2:6086 ret i1 06087}6088 6089;SGT6090define i1 @brRR_i1_sgt(i1 %x, i1 %y) {6091; CHECK-LABEL: brRR_i1_sgt:6092; CHECK: # %bb.0: # %entry6093; CHECK-NEXT: sext32 a1, a1, 0, 06094; CHECK-NEXT: sext32 a0, a0, 0, 06095; CHECK-NEXT: cmplt16 a0, a16096; CHECK-NEXT: bf32 .LBB132_26097; CHECK-NEXT: # %bb.1: # %label16098; CHECK-NEXT: movi16 a0, 16099; CHECK-NEXT: rts166100; CHECK-NEXT: .LBB132_2: # %label26101; CHECK-NEXT: movi16 a0, 06102; CHECK-NEXT: rts166103;6104; GENERIC-LABEL: brRR_i1_sgt:6105; GENERIC: # %bb.0: # %entry6106; GENERIC-NEXT: .cfi_def_cfa_offset 06107; GENERIC-NEXT: subi16 sp, sp, 46108; GENERIC-NEXT: .cfi_def_cfa_offset 46109; GENERIC-NEXT: lsli16 a1, a1, 76110; GENERIC-NEXT: asri16 a1, a1, 76111; GENERIC-NEXT: lsli16 a0, a0, 76112; GENERIC-NEXT: asri16 a0, a0, 76113; GENERIC-NEXT: cmplt16 a0, a16114; GENERIC-NEXT: bf16 .LBB132_26115; GENERIC-NEXT: # %bb.1: # %label16116; GENERIC-NEXT: movi16 a0, 16117; GENERIC-NEXT: addi16 sp, sp, 46118; GENERIC-NEXT: rts166119; GENERIC-NEXT: .LBB132_2: # %label26120; GENERIC-NEXT: movi16 a0, 06121; GENERIC-NEXT: addi16 sp, sp, 46122; GENERIC-NEXT: rts166123; CHECK-UGTXT: icmpu32 a0, a1, a06124; CHECK-UGTXT: rts166125entry:6126 %icmp = icmp sgt i1 %y, %x6127 br i1 %icmp, label %label1, label %label26128label1:6129 ret i1 16130label2:6131 ret i1 06132}6133 6134define i1 @brRI_i1_sgt(i1 %x) {6135; CHECK-LABEL: brRI_i1_sgt:6136; CHECK: # %bb.0: # %entry6137; CHECK-NEXT: movi16 a0, 16138; CHECK-NEXT: btsti16 a0, 06139; CHECK-NEXT: bt32 .LBB133_26140; CHECK-NEXT: # %bb.1: # %label16141; CHECK-NEXT: rts166142; CHECK-NEXT: .LBB133_2: # %label26143; CHECK-NEXT: movi16 a0, 06144; CHECK-NEXT: rts166145;6146; GENERIC-LABEL: brRI_i1_sgt:6147; GENERIC: # %bb.0: # %entry6148; GENERIC-NEXT: .cfi_def_cfa_offset 06149; GENERIC-NEXT: subi16 sp, sp, 46150; GENERIC-NEXT: .cfi_def_cfa_offset 46151; GENERIC-NEXT: movi16 a0, 16152; GENERIC-NEXT: btsti16 a0, 06153; GENERIC-NEXT: bt16 .LBB133_26154; GENERIC-NEXT: # %bb.1: # %label16155; GENERIC-NEXT: addi16 sp, sp, 46156; GENERIC-NEXT: rts166157; GENERIC-NEXT: .LBB133_2: # %label26158; GENERIC-NEXT: movi16 a0, 06159; GENERIC-NEXT: addi16 sp, sp, 46160; GENERIC-NEXT: rts166161; CHECK-UGTXT: icmpu32 a0, a1, a06162; CHECK-UGTXT: rts166163entry:6164 %icmp = icmp sgt i1 %x, 106165 br i1 %icmp, label %label1, label %label26166label1:6167 ret i1 16168label2:6169 ret i1 06170}6171 6172define i1 @brR0_i1_sgt(i1 %x) {6173; CHECK-LABEL: brR0_i1_sgt:6174; CHECK: # %bb.0: # %entry6175; CHECK-NEXT: movi16 a0, 16176; CHECK-NEXT: btsti16 a0, 06177; CHECK-NEXT: bt32 .LBB134_26178; CHECK-NEXT: # %bb.1: # %label16179; CHECK-NEXT: rts166180; CHECK-NEXT: .LBB134_2: # %label26181; CHECK-NEXT: movi16 a0, 06182; CHECK-NEXT: rts166183;6184; GENERIC-LABEL: brR0_i1_sgt:6185; GENERIC: # %bb.0: # %entry6186; GENERIC-NEXT: .cfi_def_cfa_offset 06187; GENERIC-NEXT: subi16 sp, sp, 46188; GENERIC-NEXT: .cfi_def_cfa_offset 46189; GENERIC-NEXT: movi16 a0, 16190; GENERIC-NEXT: btsti16 a0, 06191; GENERIC-NEXT: bt16 .LBB134_26192; GENERIC-NEXT: # %bb.1: # %label16193; GENERIC-NEXT: addi16 sp, sp, 46194; GENERIC-NEXT: rts166195; GENERIC-NEXT: .LBB134_2: # %label26196; GENERIC-NEXT: movi16 a0, 06197; GENERIC-NEXT: addi16 sp, sp, 46198; GENERIC-NEXT: rts166199; CHECK-UGTXT: icmpu32 a0, a1, a06200; CHECK-UGTXT: rts166201entry:6202 %icmp = icmp sgt i1 %x, 06203 br i1 %icmp, label %label1, label %label26204label1:6205 ret i1 16206label2:6207 ret i1 06208}6209 6210;SGE6211define i1 @brRR_i1_sge(i1 %x, i1 %y) {6212; CHECK-LABEL: brRR_i1_sge:6213; CHECK: # %bb.0: # %entry6214; CHECK-NEXT: sext32 a0, a0, 0, 06215; CHECK-NEXT: sext32 a1, a1, 0, 06216; CHECK-NEXT: cmplt16 a1, a06217; CHECK-NEXT: bt32 .LBB135_26218; CHECK-NEXT: # %bb.1: # %label16219; CHECK-NEXT: movi16 a0, 16220; CHECK-NEXT: rts166221; CHECK-NEXT: .LBB135_2: # %label26222; CHECK-NEXT: movi16 a0, 06223; CHECK-NEXT: rts166224;6225; GENERIC-LABEL: brRR_i1_sge:6226; GENERIC: # %bb.0: # %entry6227; GENERIC-NEXT: .cfi_def_cfa_offset 06228; GENERIC-NEXT: subi16 sp, sp, 46229; GENERIC-NEXT: .cfi_def_cfa_offset 46230; GENERIC-NEXT: lsli16 a0, a0, 76231; GENERIC-NEXT: asri16 a0, a0, 76232; GENERIC-NEXT: lsli16 a1, a1, 76233; GENERIC-NEXT: asri16 a1, a1, 76234; GENERIC-NEXT: cmplt16 a1, a06235; GENERIC-NEXT: bt16 .LBB135_26236; GENERIC-NEXT: # %bb.1: # %label16237; GENERIC-NEXT: movi16 a0, 16238; GENERIC-NEXT: addi16 sp, sp, 46239; GENERIC-NEXT: rts166240; GENERIC-NEXT: .LBB135_2: # %label26241; GENERIC-NEXT: movi16 a0, 06242; GENERIC-NEXT: addi16 sp, sp, 46243; GENERIC-NEXT: rts166244; CHECK-UGTXT: icmpu32 a0, a1, a06245; CHECK-UGTXT: rts166246entry:6247 %icmp = icmp sge i1 %y, %x6248 br i1 %icmp, label %label1, label %label26249label1:6250 ret i1 16251label2:6252 ret i1 06253}6254 6255define i1 @brRI_i1_sge(i1 %x) {6256; CHECK-LABEL: brRI_i1_sge:6257; CHECK: # %bb.0: # %entry6258; CHECK-NEXT: andi32 a0, a0, 16259; CHECK-NEXT: btsti16 a0, 06260; CHECK-NEXT: bt32 .LBB136_26261; CHECK-NEXT: # %bb.1: # %label16262; CHECK-NEXT: movi16 a0, 16263; CHECK-NEXT: rts166264; CHECK-NEXT: .LBB136_2: # %label26265; CHECK-NEXT: movi16 a0, 06266; CHECK-NEXT: rts166267;6268; GENERIC-LABEL: brRI_i1_sge:6269; GENERIC: # %bb.0: # %entry6270; GENERIC-NEXT: .cfi_def_cfa_offset 06271; GENERIC-NEXT: subi16 sp, sp, 46272; GENERIC-NEXT: .cfi_def_cfa_offset 46273; GENERIC-NEXT: movi16 a1, 16274; GENERIC-NEXT: and16 a1, a06275; GENERIC-NEXT: btsti16 a1, 06276; GENERIC-NEXT: bt16 .LBB136_26277; GENERIC-NEXT: # %bb.1: # %label16278; GENERIC-NEXT: movi16 a0, 16279; GENERIC-NEXT: addi16 sp, sp, 46280; GENERIC-NEXT: rts166281; GENERIC-NEXT: .LBB136_2: # %label26282; GENERIC-NEXT: movi16 a0, 06283; GENERIC-NEXT: addi16 sp, sp, 46284; GENERIC-NEXT: rts166285; CHECK-UGTXT: icmpu32 a0, a1, a06286; CHECK-UGTXT: rts166287entry:6288 %icmp = icmp sge i1 %x, 106289 br i1 %icmp, label %label1, label %label26290label1:6291 ret i1 16292label2:6293 ret i1 06294}6295 6296define i1 @brR0_i1_sge(i1 %x) {6297; CHECK-LABEL: brR0_i1_sge:6298; CHECK: # %bb.0: # %entry6299; CHECK-NEXT: andi32 a0, a0, 16300; CHECK-NEXT: btsti16 a0, 06301; CHECK-NEXT: bt32 .LBB137_26302; CHECK-NEXT: # %bb.1: # %label16303; CHECK-NEXT: movi16 a0, 16304; CHECK-NEXT: rts166305; CHECK-NEXT: .LBB137_2: # %label26306; CHECK-NEXT: movi16 a0, 06307; CHECK-NEXT: rts166308;6309; GENERIC-LABEL: brR0_i1_sge:6310; GENERIC: # %bb.0: # %entry6311; GENERIC-NEXT: .cfi_def_cfa_offset 06312; GENERIC-NEXT: subi16 sp, sp, 46313; GENERIC-NEXT: .cfi_def_cfa_offset 46314; GENERIC-NEXT: movi16 a1, 16315; GENERIC-NEXT: and16 a1, a06316; GENERIC-NEXT: btsti16 a1, 06317; GENERIC-NEXT: bt16 .LBB137_26318; GENERIC-NEXT: # %bb.1: # %label16319; GENERIC-NEXT: movi16 a0, 16320; GENERIC-NEXT: addi16 sp, sp, 46321; GENERIC-NEXT: rts166322; GENERIC-NEXT: .LBB137_2: # %label26323; GENERIC-NEXT: movi16 a0, 06324; GENERIC-NEXT: addi16 sp, sp, 46325; GENERIC-NEXT: rts166326; CHECK-UGTXT: icmpu32 a0, a1, a06327; CHECK-UGTXT: rts166328entry:6329 %icmp = icmp sge i1 %x, 06330 br i1 %icmp, label %label1, label %label26331label1:6332 ret i1 16333label2:6334 ret i1 06335}6336 6337;SLT6338define i1 @brRR_i1_slt(i1 %x, i1 %y) {6339; CHECK-LABEL: brRR_i1_slt:6340; CHECK: # %bb.0: # %entry6341; CHECK-NEXT: sext32 a0, a0, 0, 06342; CHECK-NEXT: sext32 a1, a1, 0, 06343; CHECK-NEXT: cmplt16 a1, a06344; CHECK-NEXT: bf32 .LBB138_26345; CHECK-NEXT: # %bb.1: # %label16346; CHECK-NEXT: movi16 a0, 16347; CHECK-NEXT: rts166348; CHECK-NEXT: .LBB138_2: # %label26349; CHECK-NEXT: movi16 a0, 06350; CHECK-NEXT: rts166351;6352; GENERIC-LABEL: brRR_i1_slt:6353; GENERIC: # %bb.0: # %entry6354; GENERIC-NEXT: .cfi_def_cfa_offset 06355; GENERIC-NEXT: subi16 sp, sp, 46356; GENERIC-NEXT: .cfi_def_cfa_offset 46357; GENERIC-NEXT: lsli16 a0, a0, 76358; GENERIC-NEXT: asri16 a0, a0, 76359; GENERIC-NEXT: lsli16 a1, a1, 76360; GENERIC-NEXT: asri16 a1, a1, 76361; GENERIC-NEXT: cmplt16 a1, a06362; GENERIC-NEXT: bf16 .LBB138_26363; GENERIC-NEXT: # %bb.1: # %label16364; GENERIC-NEXT: movi16 a0, 16365; GENERIC-NEXT: addi16 sp, sp, 46366; GENERIC-NEXT: rts166367; GENERIC-NEXT: .LBB138_2: # %label26368; GENERIC-NEXT: movi16 a0, 06369; GENERIC-NEXT: addi16 sp, sp, 46370; GENERIC-NEXT: rts166371; CHECK-UGTXT: icmpu32 a0, a1, a06372; CHECK-UGTXT: rts166373entry:6374 %icmp = icmp slt i1 %y, %x6375 br i1 %icmp, label %label1, label %label26376label1:6377 ret i1 16378label2:6379 ret i1 06380}6381 6382define i1 @brRI_i1_slt(i1 %x) {6383; CHECK-LABEL: brRI_i1_slt:6384; CHECK: # %bb.0: # %entry6385; CHECK-NEXT: andi32 a0, a0, 16386; CHECK-NEXT: bnez32 a0, .LBB139_26387; CHECK-NEXT: # %bb.1: # %label26388; CHECK-NEXT: movi16 a0, 06389; CHECK-NEXT: rts166390; CHECK-NEXT: .LBB139_2: # %label16391; CHECK-NEXT: movi16 a0, 16392; CHECK-NEXT: rts166393;6394; GENERIC-LABEL: brRI_i1_slt:6395; GENERIC: # %bb.0: # %entry6396; GENERIC-NEXT: .cfi_def_cfa_offset 06397; GENERIC-NEXT: subi16 sp, sp, 46398; GENERIC-NEXT: .cfi_def_cfa_offset 46399; GENERIC-NEXT: movi16 a1, 16400; GENERIC-NEXT: and16 a1, a06401; GENERIC-NEXT: cmpnei16 a1, 06402; GENERIC-NEXT: bt16 .LBB139_26403; GENERIC-NEXT: # %bb.1: # %label26404; GENERIC-NEXT: movi16 a0, 06405; GENERIC-NEXT: addi16 sp, sp, 46406; GENERIC-NEXT: rts166407; GENERIC-NEXT: .LBB139_2: # %label16408; GENERIC-NEXT: movi16 a0, 16409; GENERIC-NEXT: addi16 sp, sp, 46410; GENERIC-NEXT: rts166411; CHECK-UGTXT: icmpu32 a0, a1, a06412; CHECK-UGTXT: rts166413entry:6414 %icmp = icmp slt i1 %x, 106415 br i1 %icmp, label %label1, label %label26416label1:6417 ret i1 16418label2:6419 ret i1 06420}6421 6422define i1 @brR0_i1_slt(i1 %x) {6423; CHECK-LABEL: brR0_i1_slt:6424; CHECK: # %bb.0: # %entry6425; CHECK-NEXT: andi32 a0, a0, 16426; CHECK-NEXT: bnez32 a0, .LBB140_26427; CHECK-NEXT: # %bb.1: # %label26428; CHECK-NEXT: movi16 a0, 06429; CHECK-NEXT: rts166430; CHECK-NEXT: .LBB140_2: # %label16431; CHECK-NEXT: movi16 a0, 16432; CHECK-NEXT: rts166433;6434; GENERIC-LABEL: brR0_i1_slt:6435; GENERIC: # %bb.0: # %entry6436; GENERIC-NEXT: .cfi_def_cfa_offset 06437; GENERIC-NEXT: subi16 sp, sp, 46438; GENERIC-NEXT: .cfi_def_cfa_offset 46439; GENERIC-NEXT: movi16 a1, 16440; GENERIC-NEXT: and16 a1, a06441; GENERIC-NEXT: cmpnei16 a1, 06442; GENERIC-NEXT: bt16 .LBB140_26443; GENERIC-NEXT: # %bb.1: # %label26444; GENERIC-NEXT: movi16 a0, 06445; GENERIC-NEXT: addi16 sp, sp, 46446; GENERIC-NEXT: rts166447; GENERIC-NEXT: .LBB140_2: # %label16448; GENERIC-NEXT: movi16 a0, 16449; GENERIC-NEXT: addi16 sp, sp, 46450; GENERIC-NEXT: rts166451; CHECK-UGTXT: icmpu32 a0, a1, a06452; CHECK-UGTXT: rts166453entry:6454 %icmp = icmp slt i1 %x, 06455 br i1 %icmp, label %label1, label %label26456label1:6457 ret i1 16458label2:6459 ret i1 06460}6461 6462;SLE6463define i1 @brRR_i1_sle(i1 %x, i1 %y) {6464; CHECK-LABEL: brRR_i1_sle:6465; CHECK: # %bb.0: # %entry6466; CHECK-NEXT: sext32 a1, a1, 0, 06467; CHECK-NEXT: sext32 a0, a0, 0, 06468; CHECK-NEXT: cmplt16 a0, a16469; CHECK-NEXT: bt32 .LBB141_26470; CHECK-NEXT: # %bb.1: # %label16471; CHECK-NEXT: movi16 a0, 16472; CHECK-NEXT: rts166473; CHECK-NEXT: .LBB141_2: # %label26474; CHECK-NEXT: movi16 a0, 06475; CHECK-NEXT: rts166476;6477; GENERIC-LABEL: brRR_i1_sle:6478; GENERIC: # %bb.0: # %entry6479; GENERIC-NEXT: .cfi_def_cfa_offset 06480; GENERIC-NEXT: subi16 sp, sp, 46481; GENERIC-NEXT: .cfi_def_cfa_offset 46482; GENERIC-NEXT: lsli16 a1, a1, 76483; GENERIC-NEXT: asri16 a1, a1, 76484; GENERIC-NEXT: lsli16 a0, a0, 76485; GENERIC-NEXT: asri16 a0, a0, 76486; GENERIC-NEXT: cmplt16 a0, a16487; GENERIC-NEXT: bt16 .LBB141_26488; GENERIC-NEXT: # %bb.1: # %label16489; GENERIC-NEXT: movi16 a0, 16490; GENERIC-NEXT: addi16 sp, sp, 46491; GENERIC-NEXT: rts166492; GENERIC-NEXT: .LBB141_2: # %label26493; GENERIC-NEXT: movi16 a0, 06494; GENERIC-NEXT: addi16 sp, sp, 46495; GENERIC-NEXT: rts166496; CHECK-UGTXT: icmpu32 a0, a1, a06497; CHECK-UGTXT: rts166498entry:6499 %icmp = icmp sle i1 %y, %x6500 br i1 %icmp, label %label1, label %label26501label1:6502 ret i1 16503label2:6504 ret i1 06505}6506 6507define i1 @brRI_i1_sle(i1 %x) {6508; CHECK-LABEL: brRI_i1_sle:6509; CHECK: # %bb.0: # %entry6510; CHECK-NEXT: movi16 a0, 06511; CHECK-NEXT: btsti16 a0, 06512; CHECK-NEXT: bt32 .LBB142_26513; CHECK-NEXT: # %bb.1: # %label16514; CHECK-NEXT: movi16 a0, 16515; CHECK-NEXT: .LBB142_2: # %label26516; CHECK-NEXT: rts166517;6518; GENERIC-LABEL: brRI_i1_sle:6519; GENERIC: # %bb.0: # %entry6520; GENERIC-NEXT: .cfi_def_cfa_offset 06521; GENERIC-NEXT: subi16 sp, sp, 46522; GENERIC-NEXT: .cfi_def_cfa_offset 46523; GENERIC-NEXT: movi16 a0, 06524; GENERIC-NEXT: btsti16 a0, 06525; GENERIC-NEXT: bt16 .LBB142_26526; GENERIC-NEXT: # %bb.1: # %label16527; GENERIC-NEXT: movi16 a0, 16528; GENERIC-NEXT: .LBB142_2: # %label26529; GENERIC-NEXT: addi16 sp, sp, 46530; GENERIC-NEXT: rts166531; CHECK-UGTXT: icmpu32 a0, a1, a06532; CHECK-UGTXT: rts166533entry:6534 %icmp = icmp sle i1 %x, 106535 br i1 %icmp, label %label1, label %label26536label1:6537 ret i1 16538label2:6539 ret i1 06540}6541 6542define i1 @brR0_i1_sle(i1 %x) {6543; CHECK-LABEL: brR0_i1_sle:6544; CHECK: # %bb.0: # %entry6545; CHECK-NEXT: movi16 a0, 06546; CHECK-NEXT: btsti16 a0, 06547; CHECK-NEXT: bt32 .LBB143_26548; CHECK-NEXT: # %bb.1: # %label16549; CHECK-NEXT: movi16 a0, 16550; CHECK-NEXT: .LBB143_2: # %label26551; CHECK-NEXT: rts166552;6553; GENERIC-LABEL: brR0_i1_sle:6554; GENERIC: # %bb.0: # %entry6555; GENERIC-NEXT: .cfi_def_cfa_offset 06556; GENERIC-NEXT: subi16 sp, sp, 46557; GENERIC-NEXT: .cfi_def_cfa_offset 46558; GENERIC-NEXT: movi16 a0, 06559; GENERIC-NEXT: btsti16 a0, 06560; GENERIC-NEXT: bt16 .LBB143_26561; GENERIC-NEXT: # %bb.1: # %label16562; GENERIC-NEXT: movi16 a0, 16563; GENERIC-NEXT: .LBB143_2: # %label26564; GENERIC-NEXT: addi16 sp, sp, 46565; GENERIC-NEXT: rts166566; CHECK-UGTXT: icmpu32 a0, a1, a06567; CHECK-UGTXT: rts166568entry:6569 %icmp = icmp sle i1 %x, 06570 br i1 %icmp, label %label1, label %label26571label1:6572 ret i1 16573label2:6574 ret i1 06575}6576 6577 6578define i1 @brCBit_i1(i1 %c) {6579; CHECK-LABEL: brCBit_i1:6580; CHECK: # %bb.0: # %entry6581; CHECK-NEXT: andi32 a0, a0, 16582; CHECK-NEXT: bez32 a0, .LBB144_26583; CHECK-NEXT: # %bb.1: # %label16584; CHECK-NEXT: movi16 a0, 16585; CHECK-NEXT: rts166586; CHECK-NEXT: .LBB144_2: # %label26587; CHECK-NEXT: movi16 a0, 06588; CHECK-NEXT: rts166589;6590; GENERIC-LABEL: brCBit_i1:6591; GENERIC: # %bb.0: # %entry6592; GENERIC-NEXT: .cfi_def_cfa_offset 06593; GENERIC-NEXT: subi16 sp, sp, 46594; GENERIC-NEXT: .cfi_def_cfa_offset 46595; GENERIC-NEXT: movi16 a1, 16596; GENERIC-NEXT: and16 a1, a06597; GENERIC-NEXT: cmpnei16 a1, 06598; GENERIC-NEXT: bf16 .LBB144_26599; GENERIC-NEXT: # %bb.1: # %label16600; GENERIC-NEXT: movi16 a0, 16601; GENERIC-NEXT: addi16 sp, sp, 46602; GENERIC-NEXT: rts166603; GENERIC-NEXT: .LBB144_2: # %label26604; GENERIC-NEXT: movi16 a0, 06605; GENERIC-NEXT: addi16 sp, sp, 46606; GENERIC-NEXT: rts166607entry:6608 br i1 %c, label %label1, label %label26609label1:6610 ret i1 16611label2:6612 ret i1 06613}6614 6615define i32 @br_bit_test_eq_0(i32 %c) {6616; CHECK-LABEL: br_bit_test_eq_0:6617; CHECK: # %bb.0:6618; CHECK-NEXT: btsti16 a0, 176619; CHECK-NEXT: bt32 .LBB145_26620; CHECK-NEXT: # %bb.1: # %label16621; CHECK-NEXT: movi16 a0, 16622; CHECK-NEXT: rts166623; CHECK-NEXT: .LBB145_2: # %label26624; CHECK-NEXT: movi16 a0, 06625; CHECK-NEXT: rts166626;6627; GENERIC-LABEL: br_bit_test_eq_0:6628; GENERIC: # %bb.0:6629; GENERIC-NEXT: .cfi_def_cfa_offset 06630; GENERIC-NEXT: subi16 sp, sp, 46631; GENERIC-NEXT: .cfi_def_cfa_offset 46632; GENERIC-NEXT: movi16 a1, 06633; GENERIC-NEXT: lsli16 a2, a1, 246634; GENERIC-NEXT: movi16 a3, 26635; GENERIC-NEXT: lsli16 a3, a3, 166636; GENERIC-NEXT: or16 a3, a26637; GENERIC-NEXT: lsli16 a2, a1, 86638; GENERIC-NEXT: or16 a2, a36639; GENERIC-NEXT: or16 a2, a16640; GENERIC-NEXT: and16 a2, a06641; GENERIC-NEXT: cmpnei16 a2, 06642; GENERIC-NEXT: bt16 .LBB145_26643; GENERIC-NEXT: # %bb.1: # %label16644; GENERIC-NEXT: movi16 a0, 16645; GENERIC-NEXT: addi16 sp, sp, 46646; GENERIC-NEXT: rts166647; GENERIC-NEXT: .LBB145_2: # %label26648; GENERIC-NEXT: movi16 a0, 06649; GENERIC-NEXT: addi16 sp, sp, 46650; GENERIC-NEXT: rts166651 %t0 = and i32 %c, 1310726652 %t1 = icmp eq i32 %t0, 06653 br i1 %t1, label %label1, label %label26654label1:6655 ret i32 16656label2:6657 ret i32 06658}6659 6660define i32 @br_bit_test_ne_0(i32 %c) {6661; CHECK-LABEL: br_bit_test_ne_0:6662; CHECK: # %bb.0:6663; CHECK-NEXT: btsti16 a0, 176664; CHECK-NEXT: bf32 .LBB146_26665; CHECK-NEXT: # %bb.1: # %label16666; CHECK-NEXT: movi16 a0, 16667; CHECK-NEXT: rts166668; CHECK-NEXT: .LBB146_2: # %label26669; CHECK-NEXT: movi16 a0, 06670; CHECK-NEXT: rts166671;6672; GENERIC-LABEL: br_bit_test_ne_0:6673; GENERIC: # %bb.0:6674; GENERIC-NEXT: .cfi_def_cfa_offset 06675; GENERIC-NEXT: subi16 sp, sp, 46676; GENERIC-NEXT: .cfi_def_cfa_offset 46677; GENERIC-NEXT: movi16 a1, 06678; GENERIC-NEXT: lsli16 a2, a1, 246679; GENERIC-NEXT: movi16 a3, 26680; GENERIC-NEXT: lsli16 a3, a3, 166681; GENERIC-NEXT: or16 a3, a26682; GENERIC-NEXT: lsli16 a2, a1, 86683; GENERIC-NEXT: or16 a2, a36684; GENERIC-NEXT: or16 a2, a16685; GENERIC-NEXT: and16 a2, a06686; GENERIC-NEXT: cmpnei16 a2, 06687; GENERIC-NEXT: bf16 .LBB146_26688; GENERIC-NEXT: # %bb.1: # %label16689; GENERIC-NEXT: movi16 a0, 16690; GENERIC-NEXT: addi16 sp, sp, 46691; GENERIC-NEXT: rts166692; GENERIC-NEXT: .LBB146_2: # %label26693; GENERIC-NEXT: movi16 a0, 06694; GENERIC-NEXT: addi16 sp, sp, 46695; GENERIC-NEXT: rts166696 %t0 = and i32 %c, 1310726697 %t1 = icmp ne i32 %t0, 06698 br i1 %t1, label %label1, label %label26699label1:6700 ret i32 16701label2:6702 ret i32 06703}6704 6705define i32 @br_bit_test_eq_mask(i32 %c) {6706; CHECK-LABEL: br_bit_test_eq_mask:6707; CHECK: # %bb.0:6708; CHECK-NEXT: btsti16 a0, 176709; CHECK-NEXT: bf32 .LBB147_26710; CHECK-NEXT: # %bb.1: # %label16711; CHECK-NEXT: movi16 a0, 16712; CHECK-NEXT: rts166713; CHECK-NEXT: .LBB147_2: # %label26714; CHECK-NEXT: movi16 a0, 06715; CHECK-NEXT: rts166716;6717; GENERIC-LABEL: br_bit_test_eq_mask:6718; GENERIC: # %bb.0:6719; GENERIC-NEXT: .cfi_def_cfa_offset 06720; GENERIC-NEXT: subi16 sp, sp, 46721; GENERIC-NEXT: .cfi_def_cfa_offset 46722; GENERIC-NEXT: movi16 a1, 06723; GENERIC-NEXT: lsli16 a2, a1, 246724; GENERIC-NEXT: movi16 a3, 26725; GENERIC-NEXT: lsli16 a3, a3, 166726; GENERIC-NEXT: or16 a3, a26727; GENERIC-NEXT: lsli16 a2, a1, 86728; GENERIC-NEXT: or16 a2, a36729; GENERIC-NEXT: or16 a2, a16730; GENERIC-NEXT: and16 a2, a06731; GENERIC-NEXT: cmpnei16 a2, 06732; GENERIC-NEXT: bf16 .LBB147_26733; GENERIC-NEXT: # %bb.1: # %label16734; GENERIC-NEXT: movi16 a0, 16735; GENERIC-NEXT: addi16 sp, sp, 46736; GENERIC-NEXT: rts166737; GENERIC-NEXT: .LBB147_2: # %label26738; GENERIC-NEXT: movi16 a0, 06739; GENERIC-NEXT: addi16 sp, sp, 46740; GENERIC-NEXT: rts166741 %t0 = and i32 %c, 1310726742 %t1 = icmp eq i32 %t0, 1310726743 br i1 %t1, label %label1, label %label26744label1:6745 ret i32 16746label2:6747 ret i32 06748}6749 6750define i32 @br_bit_test_ne_mask(i32 %c) {6751; CHECK-LABEL: br_bit_test_ne_mask:6752; CHECK: # %bb.0:6753; CHECK-NEXT: btsti16 a0, 176754; CHECK-NEXT: bt32 .LBB148_26755; CHECK-NEXT: # %bb.1: # %label16756; CHECK-NEXT: movi16 a0, 16757; CHECK-NEXT: rts166758; CHECK-NEXT: .LBB148_2: # %label26759; CHECK-NEXT: movi16 a0, 06760; CHECK-NEXT: rts166761;6762; GENERIC-LABEL: br_bit_test_ne_mask:6763; GENERIC: # %bb.0:6764; GENERIC-NEXT: .cfi_def_cfa_offset 06765; GENERIC-NEXT: subi16 sp, sp, 46766; GENERIC-NEXT: .cfi_def_cfa_offset 46767; GENERIC-NEXT: movi16 a1, 06768; GENERIC-NEXT: lsli16 a2, a1, 246769; GENERIC-NEXT: movi16 a3, 26770; GENERIC-NEXT: lsli16 a3, a3, 166771; GENERIC-NEXT: or16 a3, a26772; GENERIC-NEXT: lsli16 a2, a1, 86773; GENERIC-NEXT: or16 a2, a36774; GENERIC-NEXT: or16 a2, a16775; GENERIC-NEXT: and16 a2, a06776; GENERIC-NEXT: cmpnei16 a2, 06777; GENERIC-NEXT: bt16 .LBB148_26778; GENERIC-NEXT: # %bb.1: # %label16779; GENERIC-NEXT: movi16 a0, 16780; GENERIC-NEXT: addi16 sp, sp, 46781; GENERIC-NEXT: rts166782; GENERIC-NEXT: .LBB148_2: # %label26783; GENERIC-NEXT: movi16 a0, 06784; GENERIC-NEXT: addi16 sp, sp, 46785; GENERIC-NEXT: rts166786 %t0 = and i32 %c, 1310726787 %t1 = icmp ne i32 %t0, 1310726788 br i1 %t1, label %label1, label %label26789label1:6790 ret i32 16791label2:6792 ret i32 06793}6794 6795define i32 @br_lowbit_test_ne_0(i32 %c) {6796; CHECK-LABEL: br_lowbit_test_ne_0:6797; CHECK: # %bb.0:6798; CHECK-NEXT: andi32 a0, a0, 2566799; CHECK-NEXT: bez32 a0, .LBB149_26800; CHECK-NEXT: # %bb.1: # %label16801; CHECK-NEXT: movi16 a0, 16802; CHECK-NEXT: rts166803; CHECK-NEXT: .LBB149_2: # %label26804; CHECK-NEXT: movi16 a0, 06805; CHECK-NEXT: rts166806;6807; GENERIC-LABEL: br_lowbit_test_ne_0:6808; GENERIC: # %bb.0:6809; GENERIC-NEXT: .cfi_def_cfa_offset 06810; GENERIC-NEXT: subi16 sp, sp, 46811; GENERIC-NEXT: .cfi_def_cfa_offset 46812; GENERIC-NEXT: movi16 a1, 06813; GENERIC-NEXT: lsli16 a2, a1, 246814; GENERIC-NEXT: lsli16 a3, a1, 166815; GENERIC-NEXT: or16 a3, a26816; GENERIC-NEXT: movi16 a2, 16817; GENERIC-NEXT: lsli16 a2, a2, 86818; GENERIC-NEXT: or16 a2, a36819; GENERIC-NEXT: or16 a2, a16820; GENERIC-NEXT: and16 a2, a06821; GENERIC-NEXT: cmpnei16 a2, 06822; GENERIC-NEXT: bf16 .LBB149_26823; GENERIC-NEXT: # %bb.1: # %label16824; GENERIC-NEXT: movi16 a0, 16825; GENERIC-NEXT: addi16 sp, sp, 46826; GENERIC-NEXT: rts166827; GENERIC-NEXT: .LBB149_2: # %label26828; GENERIC-NEXT: movi16 a0, 06829; GENERIC-NEXT: addi16 sp, sp, 46830; GENERIC-NEXT: rts166831 %t0 = and i32 %c, 2566832 %t1 = icmp ne i32 %t0, 06833 br i1 %t1, label %label1, label %label26834label1:6835 ret i32 16836label2:6837 ret i32 06838}6839