1329 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc -mtriple arm64-apple-ios -mattr +cmpbr -verify-machineinstrs -o - < %s | FileCheck %s --check-prefix=CHECK-CMPBR3; RUN: llc -mtriple arm64-apple-ios -mattr -cmpbr -verify-machineinstrs -o - < %s | FileCheck %s --check-prefix=CHECK-NO-CMPBR4 5; slt, sle, sgt, sge, ult, ule, ugt, uge, eq, ne6 7define void @slt_0_i32(i32 %a) {8; CHECK-CMPBR-LABEL: slt_0_i32:9; CHECK-CMPBR: ; %bb.0: ; %entry10; CHECK-CMPBR-NEXT: tbnz w0, #31, LBB0_211; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end12; CHECK-CMPBR-NEXT: ret13; CHECK-CMPBR-NEXT: LBB0_2: ; %if.then14; CHECK-CMPBR-NEXT: brk #0x115;16; CHECK-NO-CMPBR-LABEL: slt_0_i32:17; CHECK-NO-CMPBR: ; %bb.0: ; %entry18; CHECK-NO-CMPBR-NEXT: tbnz w0, #31, LBB0_219; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end20; CHECK-NO-CMPBR-NEXT: ret21; CHECK-NO-CMPBR-NEXT: LBB0_2: ; %if.then22; CHECK-NO-CMPBR-NEXT: brk #0x123entry:24 %cmp = icmp slt i32 %a, 025 br i1 %cmp, label %if.then, label %if.end26 27if.then:28 tail call void @llvm.trap()29 unreachable30 31if.end:32 ret void33}34 35define void @slt_m1_i32(i32 %a) {36; CHECK-CMPBR-LABEL: slt_m1_i32:37; CHECK-CMPBR: ; %bb.0: ; %entry38; CHECK-CMPBR-NEXT: mov w8, #-2 ; =0xfffffffe39; CHECK-CMPBR-NEXT: cbge w8, w0, LBB1_240; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end41; CHECK-CMPBR-NEXT: ret42; CHECK-CMPBR-NEXT: LBB1_2: ; %if.then43; CHECK-CMPBR-NEXT: brk #0x144;45; CHECK-NO-CMPBR-LABEL: slt_m1_i32:46; CHECK-NO-CMPBR: ; %bb.0: ; %entry47; CHECK-NO-CMPBR-NEXT: cmn w0, #248; CHECK-NO-CMPBR-NEXT: b.le LBB1_249; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end50; CHECK-NO-CMPBR-NEXT: ret51; CHECK-NO-CMPBR-NEXT: LBB1_2: ; %if.then52; CHECK-NO-CMPBR-NEXT: brk #0x153entry:54 %cmp = icmp slt i32 %a, -155 br i1 %cmp, label %if.then, label %if.end56 57if.then:58 tail call void @llvm.trap()59 unreachable60 61if.end:62 ret void63}64 65define void @slt_63_i32(i32 %a) {66; CHECK-CMPBR-LABEL: slt_63_i32:67; CHECK-CMPBR: ; %bb.0: ; %entry68; CHECK-CMPBR-NEXT: cblt w0, #63, LBB2_269; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end70; CHECK-CMPBR-NEXT: ret71; CHECK-CMPBR-NEXT: LBB2_2: ; %if.then72; CHECK-CMPBR-NEXT: brk #0x173;74; CHECK-NO-CMPBR-LABEL: slt_63_i32:75; CHECK-NO-CMPBR: ; %bb.0: ; %entry76; CHECK-NO-CMPBR-NEXT: cmp w0, #6277; CHECK-NO-CMPBR-NEXT: b.le LBB2_278; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end79; CHECK-NO-CMPBR-NEXT: ret80; CHECK-NO-CMPBR-NEXT: LBB2_2: ; %if.then81; CHECK-NO-CMPBR-NEXT: brk #0x182entry:83 %cmp = icmp slt i32 %a, 6384 br i1 %cmp, label %if.then, label %if.end85 86if.then:87 tail call void @llvm.trap()88 unreachable89 90if.end:91 ret void92}93 94define void @slt_64_i32(i32 %a) {95; CHECK-CMPBR-LABEL: slt_64_i32:96; CHECK-CMPBR: ; %bb.0: ; %entry97; CHECK-CMPBR-NEXT: mov w8, #63 ; =0x3f98; CHECK-CMPBR-NEXT: cbge w8, w0, LBB3_299; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end100; CHECK-CMPBR-NEXT: ret101; CHECK-CMPBR-NEXT: LBB3_2: ; %if.then102; CHECK-CMPBR-NEXT: brk #0x1103;104; CHECK-NO-CMPBR-LABEL: slt_64_i32:105; CHECK-NO-CMPBR: ; %bb.0: ; %entry106; CHECK-NO-CMPBR-NEXT: cmp w0, #63107; CHECK-NO-CMPBR-NEXT: b.le LBB3_2108; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end109; CHECK-NO-CMPBR-NEXT: ret110; CHECK-NO-CMPBR-NEXT: LBB3_2: ; %if.then111; CHECK-NO-CMPBR-NEXT: brk #0x1112entry:113 %cmp = icmp slt i32 %a, 64114 br i1 %cmp, label %if.then, label %if.end115 116if.then:117 tail call void @llvm.trap()118 unreachable119 120if.end:121 ret void122}123 124define void @sle_0_i32(i32 %a) {125; CHECK-CMPBR-LABEL: sle_0_i32:126; CHECK-CMPBR: ; %bb.0: ; %entry127; CHECK-CMPBR-NEXT: cblt w0, #1, LBB4_2128; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end129; CHECK-CMPBR-NEXT: ret130; CHECK-CMPBR-NEXT: LBB4_2: ; %if.then131; CHECK-CMPBR-NEXT: brk #0x1132;133; CHECK-NO-CMPBR-LABEL: sle_0_i32:134; CHECK-NO-CMPBR: ; %bb.0: ; %entry135; CHECK-NO-CMPBR-NEXT: cmp w0, #0136; CHECK-NO-CMPBR-NEXT: b.le LBB4_2137; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end138; CHECK-NO-CMPBR-NEXT: ret139; CHECK-NO-CMPBR-NEXT: LBB4_2: ; %if.then140; CHECK-NO-CMPBR-NEXT: brk #0x1141entry:142 %cmp = icmp sle i32 %a, 0143 br i1 %cmp, label %if.then, label %if.end144 145if.then:146 tail call void @llvm.trap()147 unreachable148 149if.end:150 ret void151}152 153define void @sle_m1_i32(i32 %a) {154; CHECK-CMPBR-LABEL: sle_m1_i32:155; CHECK-CMPBR: ; %bb.0: ; %entry156; CHECK-CMPBR-NEXT: tbnz w0, #31, LBB5_2157; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end158; CHECK-CMPBR-NEXT: ret159; CHECK-CMPBR-NEXT: LBB5_2: ; %if.then160; CHECK-CMPBR-NEXT: brk #0x1161;162; CHECK-NO-CMPBR-LABEL: sle_m1_i32:163; CHECK-NO-CMPBR: ; %bb.0: ; %entry164; CHECK-NO-CMPBR-NEXT: tbnz w0, #31, LBB5_2165; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end166; CHECK-NO-CMPBR-NEXT: ret167; CHECK-NO-CMPBR-NEXT: LBB5_2: ; %if.then168; CHECK-NO-CMPBR-NEXT: brk #0x1169entry:170 %cmp = icmp sle i32 %a, -1171 br i1 %cmp, label %if.then, label %if.end172 173if.then:174 tail call void @llvm.trap()175 unreachable176 177if.end:178 ret void179}180 181define void @sle_63_i32(i32 %a) {182; CHECK-CMPBR-LABEL: sle_63_i32:183; CHECK-CMPBR: ; %bb.0: ; %entry184; CHECK-CMPBR-NEXT: mov w8, #63 ; =0x3f185; CHECK-CMPBR-NEXT: cbge w8, w0, LBB6_2186; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end187; CHECK-CMPBR-NEXT: ret188; CHECK-CMPBR-NEXT: LBB6_2: ; %if.then189; CHECK-CMPBR-NEXT: brk #0x1190;191; CHECK-NO-CMPBR-LABEL: sle_63_i32:192; CHECK-NO-CMPBR: ; %bb.0: ; %entry193; CHECK-NO-CMPBR-NEXT: cmp w0, #63194; CHECK-NO-CMPBR-NEXT: b.le LBB6_2195; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end196; CHECK-NO-CMPBR-NEXT: ret197; CHECK-NO-CMPBR-NEXT: LBB6_2: ; %if.then198; CHECK-NO-CMPBR-NEXT: brk #0x1199entry:200 %cmp = icmp sle i32 %a, 63201 br i1 %cmp, label %if.then, label %if.end202 203if.then:204 tail call void @llvm.trap()205 unreachable206 207if.end:208 ret void209}210 211define void @sle_64_i32(i32 %a) {212; CHECK-CMPBR-LABEL: sle_64_i32:213; CHECK-CMPBR: ; %bb.0: ; %entry214; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40215; CHECK-CMPBR-NEXT: cbge w8, w0, LBB7_2216; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end217; CHECK-CMPBR-NEXT: ret218; CHECK-CMPBR-NEXT: LBB7_2: ; %if.then219; CHECK-CMPBR-NEXT: brk #0x1220;221; CHECK-NO-CMPBR-LABEL: sle_64_i32:222; CHECK-NO-CMPBR: ; %bb.0: ; %entry223; CHECK-NO-CMPBR-NEXT: cmp w0, #64224; CHECK-NO-CMPBR-NEXT: b.le LBB7_2225; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end226; CHECK-NO-CMPBR-NEXT: ret227; CHECK-NO-CMPBR-NEXT: LBB7_2: ; %if.then228; CHECK-NO-CMPBR-NEXT: brk #0x1229entry:230 %cmp = icmp sle i32 %a, 64231 br i1 %cmp, label %if.then, label %if.end232 233if.then:234 tail call void @llvm.trap()235 unreachable236 237if.end:238 ret void239}240 241define void @sgt_0_i32(i32 %a) {242; CHECK-CMPBR-LABEL: sgt_0_i32:243; CHECK-CMPBR: ; %bb.0: ; %entry244; CHECK-CMPBR-NEXT: cbgt w0, #0, LBB8_2245; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end246; CHECK-CMPBR-NEXT: ret247; CHECK-CMPBR-NEXT: LBB8_2: ; %if.then248; CHECK-CMPBR-NEXT: brk #0x1249;250; CHECK-NO-CMPBR-LABEL: sgt_0_i32:251; CHECK-NO-CMPBR: ; %bb.0: ; %entry252; CHECK-NO-CMPBR-NEXT: cmp w0, #1253; CHECK-NO-CMPBR-NEXT: b.ge LBB8_2254; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end255; CHECK-NO-CMPBR-NEXT: ret256; CHECK-NO-CMPBR-NEXT: LBB8_2: ; %if.then257; CHECK-NO-CMPBR-NEXT: brk #0x1258entry:259 %cmp = icmp sgt i32 %a, 0260 br i1 %cmp, label %if.then, label %if.end261 262if.then:263 tail call void @llvm.trap()264 unreachable265 266if.end:267 ret void268}269 270define void @sgt_m1_i32(i32 %a) {271; CHECK-CMPBR-LABEL: sgt_m1_i32:272; CHECK-CMPBR: ; %bb.0: ; %entry273; CHECK-CMPBR-NEXT: tbz w0, #31, LBB9_2274; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end275; CHECK-CMPBR-NEXT: ret276; CHECK-CMPBR-NEXT: LBB9_2: ; %if.then277; CHECK-CMPBR-NEXT: brk #0x1278;279; CHECK-NO-CMPBR-LABEL: sgt_m1_i32:280; CHECK-NO-CMPBR: ; %bb.0: ; %entry281; CHECK-NO-CMPBR-NEXT: tbz w0, #31, LBB9_2282; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end283; CHECK-NO-CMPBR-NEXT: ret284; CHECK-NO-CMPBR-NEXT: LBB9_2: ; %if.then285; CHECK-NO-CMPBR-NEXT: brk #0x1286entry:287 %cmp = icmp sgt i32 %a, -1288 br i1 %cmp, label %if.then, label %if.end289 290if.then:291 tail call void @llvm.trap()292 unreachable293 294if.end:295 ret void296}297 298define void @sgt_63_i32(i32 %a) {299; CHECK-CMPBR-LABEL: sgt_63_i32:300; CHECK-CMPBR: ; %bb.0: ; %entry301; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40302; CHECK-CMPBR-NEXT: cbge w0, w8, LBB10_2303; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end304; CHECK-CMPBR-NEXT: ret305; CHECK-CMPBR-NEXT: LBB10_2: ; %if.then306; CHECK-CMPBR-NEXT: brk #0x1307;308; CHECK-NO-CMPBR-LABEL: sgt_63_i32:309; CHECK-NO-CMPBR: ; %bb.0: ; %entry310; CHECK-NO-CMPBR-NEXT: cmp w0, #64311; CHECK-NO-CMPBR-NEXT: b.ge LBB10_2312; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end313; CHECK-NO-CMPBR-NEXT: ret314; CHECK-NO-CMPBR-NEXT: LBB10_2: ; %if.then315; CHECK-NO-CMPBR-NEXT: brk #0x1316entry:317 %cmp = icmp sgt i32 %a, 63318 br i1 %cmp, label %if.then, label %if.end319 320if.then:321 tail call void @llvm.trap()322 unreachable323 324if.end:325 ret void326}327 328define void @sgt_64_i32(i32 %a) {329; CHECK-CMPBR-LABEL: sgt_64_i32:330; CHECK-CMPBR: ; %bb.0: ; %entry331; CHECK-CMPBR-NEXT: mov w8, #65 ; =0x41332; CHECK-CMPBR-NEXT: cbge w0, w8, LBB11_2333; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end334; CHECK-CMPBR-NEXT: ret335; CHECK-CMPBR-NEXT: LBB11_2: ; %if.then336; CHECK-CMPBR-NEXT: brk #0x1337;338; CHECK-NO-CMPBR-LABEL: sgt_64_i32:339; CHECK-NO-CMPBR: ; %bb.0: ; %entry340; CHECK-NO-CMPBR-NEXT: cmp w0, #65341; CHECK-NO-CMPBR-NEXT: b.ge LBB11_2342; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end343; CHECK-NO-CMPBR-NEXT: ret344; CHECK-NO-CMPBR-NEXT: LBB11_2: ; %if.then345; CHECK-NO-CMPBR-NEXT: brk #0x1346entry:347 %cmp = icmp sgt i32 %a, 64348 br i1 %cmp, label %if.then, label %if.end349 350if.then:351 tail call void @llvm.trap()352 unreachable353 354if.end:355 ret void356}357 358define void @sge_0_i32(i32 %a) {359; CHECK-CMPBR-LABEL: sge_0_i32:360; CHECK-CMPBR: ; %bb.0: ; %entry361; CHECK-CMPBR-NEXT: tbz w0, #31, LBB12_2362; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end363; CHECK-CMPBR-NEXT: ret364; CHECK-CMPBR-NEXT: LBB12_2: ; %if.then365; CHECK-CMPBR-NEXT: brk #0x1366;367; CHECK-NO-CMPBR-LABEL: sge_0_i32:368; CHECK-NO-CMPBR: ; %bb.0: ; %entry369; CHECK-NO-CMPBR-NEXT: tbz w0, #31, LBB12_2370; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end371; CHECK-NO-CMPBR-NEXT: ret372; CHECK-NO-CMPBR-NEXT: LBB12_2: ; %if.then373; CHECK-NO-CMPBR-NEXT: brk #0x1374entry:375 %cmp = icmp sge i32 %a, 0376 br i1 %cmp, label %if.then, label %if.end377 378if.then:379 tail call void @llvm.trap()380 unreachable381 382if.end:383 ret void384}385 386define void @sge_m1_i32(i32 %a) {387; CHECK-CMPBR-LABEL: sge_m1_i32:388; CHECK-CMPBR: ; %bb.0: ; %entry389; CHECK-CMPBR-NEXT: mov w8, #-1 ; =0xffffffff390; CHECK-CMPBR-NEXT: cbge w0, w8, LBB13_2391; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end392; CHECK-CMPBR-NEXT: ret393; CHECK-CMPBR-NEXT: LBB13_2: ; %if.then394; CHECK-CMPBR-NEXT: brk #0x1395;396; CHECK-NO-CMPBR-LABEL: sge_m1_i32:397; CHECK-NO-CMPBR: ; %bb.0: ; %entry398; CHECK-NO-CMPBR-NEXT: cmn w0, #1399; CHECK-NO-CMPBR-NEXT: b.ge LBB13_2400; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end401; CHECK-NO-CMPBR-NEXT: ret402; CHECK-NO-CMPBR-NEXT: LBB13_2: ; %if.then403; CHECK-NO-CMPBR-NEXT: brk #0x1404entry:405 %cmp = icmp sge i32 %a, -1406 br i1 %cmp, label %if.then, label %if.end407 408if.then:409 tail call void @llvm.trap()410 unreachable411 412if.end:413 ret void414}415 416define void @sge_63_i32(i32 %a) {417; CHECK-CMPBR-LABEL: sge_63_i32:418; CHECK-CMPBR: ; %bb.0: ; %entry419; CHECK-CMPBR-NEXT: cbgt w0, #62, LBB14_2420; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end421; CHECK-CMPBR-NEXT: ret422; CHECK-CMPBR-NEXT: LBB14_2: ; %if.then423; CHECK-CMPBR-NEXT: brk #0x1424;425; CHECK-NO-CMPBR-LABEL: sge_63_i32:426; CHECK-NO-CMPBR: ; %bb.0: ; %entry427; CHECK-NO-CMPBR-NEXT: cmp w0, #63428; CHECK-NO-CMPBR-NEXT: b.ge LBB14_2429; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end430; CHECK-NO-CMPBR-NEXT: ret431; CHECK-NO-CMPBR-NEXT: LBB14_2: ; %if.then432; CHECK-NO-CMPBR-NEXT: brk #0x1433entry:434 %cmp = icmp sge i32 %a, 63435 br i1 %cmp, label %if.then, label %if.end436 437if.then:438 tail call void @llvm.trap()439 unreachable440 441if.end:442 ret void443}444 445define void @sge_64_i32(i32 %a) {446; CHECK-CMPBR-LABEL: sge_64_i32:447; CHECK-CMPBR: ; %bb.0: ; %entry448; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40449; CHECK-CMPBR-NEXT: cbge w0, w8, LBB15_2450; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end451; CHECK-CMPBR-NEXT: ret452; CHECK-CMPBR-NEXT: LBB15_2: ; %if.then453; CHECK-CMPBR-NEXT: brk #0x1454;455; CHECK-NO-CMPBR-LABEL: sge_64_i32:456; CHECK-NO-CMPBR: ; %bb.0: ; %entry457; CHECK-NO-CMPBR-NEXT: cmp w0, #64458; CHECK-NO-CMPBR-NEXT: b.ge LBB15_2459; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end460; CHECK-NO-CMPBR-NEXT: ret461; CHECK-NO-CMPBR-NEXT: LBB15_2: ; %if.then462; CHECK-NO-CMPBR-NEXT: brk #0x1463entry:464 %cmp = icmp sge i32 %a, 64465 br i1 %cmp, label %if.then, label %if.end466 467if.then:468 tail call void @llvm.trap()469 unreachable470 471if.end:472 ret void473}474 475define void @ult_0_i32(i32 %a) {476; CHECK-CMPBR-LABEL: ult_0_i32:477; CHECK-CMPBR: ; %bb.0: ; %entry478; CHECK-CMPBR-NEXT: cbhi wzr, w0, LBB16_2479; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end480; CHECK-CMPBR-NEXT: ret481; CHECK-CMPBR-NEXT: LBB16_2: ; %if.then482; CHECK-CMPBR-NEXT: brk #0x1483;484; CHECK-NO-CMPBR-LABEL: ult_0_i32:485; CHECK-NO-CMPBR: ; %bb.0: ; %entry486; CHECK-NO-CMPBR-NEXT: cmp w0, #0487; CHECK-NO-CMPBR-NEXT: b.lo LBB16_2488; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end489; CHECK-NO-CMPBR-NEXT: ret490; CHECK-NO-CMPBR-NEXT: LBB16_2: ; %if.then491; CHECK-NO-CMPBR-NEXT: brk #0x1492entry:493 %cmp = icmp ult i32 %a, 0494 br i1 %cmp, label %if.then, label %if.end495 496if.then:497 tail call void @llvm.trap()498 unreachable499 500if.end:501 ret void502}503 504define void @ult_63_i32(i32 %a) {505; CHECK-CMPBR-LABEL: ult_63_i32:506; CHECK-CMPBR: ; %bb.0: ; %entry507; CHECK-CMPBR-NEXT: cblo w0, #63, LBB17_2508; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end509; CHECK-CMPBR-NEXT: ret510; CHECK-CMPBR-NEXT: LBB17_2: ; %if.then511; CHECK-CMPBR-NEXT: brk #0x1512;513; CHECK-NO-CMPBR-LABEL: ult_63_i32:514; CHECK-NO-CMPBR: ; %bb.0: ; %entry515; CHECK-NO-CMPBR-NEXT: cmp w0, #62516; CHECK-NO-CMPBR-NEXT: b.ls LBB17_2517; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end518; CHECK-NO-CMPBR-NEXT: ret519; CHECK-NO-CMPBR-NEXT: LBB17_2: ; %if.then520; CHECK-NO-CMPBR-NEXT: brk #0x1521entry:522 %cmp = icmp ult i32 %a, 63523 br i1 %cmp, label %if.then, label %if.end524 525if.then:526 tail call void @llvm.trap()527 unreachable528 529if.end:530 ret void531}532 533define void @ult_64_i32(i32 %a) {534; CHECK-CMPBR-LABEL: ult_64_i32:535; CHECK-CMPBR: ; %bb.0: ; %entry536; CHECK-CMPBR-NEXT: mov w8, #63 ; =0x3f537; CHECK-CMPBR-NEXT: cbhs w8, w0, LBB18_2538; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end539; CHECK-CMPBR-NEXT: ret540; CHECK-CMPBR-NEXT: LBB18_2: ; %if.then541; CHECK-CMPBR-NEXT: brk #0x1542;543; CHECK-NO-CMPBR-LABEL: ult_64_i32:544; CHECK-NO-CMPBR: ; %bb.0: ; %entry545; CHECK-NO-CMPBR-NEXT: cmp w0, #63546; CHECK-NO-CMPBR-NEXT: b.ls LBB18_2547; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end548; CHECK-NO-CMPBR-NEXT: ret549; CHECK-NO-CMPBR-NEXT: LBB18_2: ; %if.then550; CHECK-NO-CMPBR-NEXT: brk #0x1551entry:552 %cmp = icmp ult i32 %a, 64553 br i1 %cmp, label %if.then, label %if.end554 555if.then:556 tail call void @llvm.trap()557 unreachable558 559if.end:560 ret void561}562 563define void @ule_0_i32(i32 %a) {564; CHECK-CMPBR-LABEL: ule_0_i32:565; CHECK-CMPBR: ; %bb.0: ; %entry566; CHECK-CMPBR-NEXT: cbz w0, LBB19_2567; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end568; CHECK-CMPBR-NEXT: ret569; CHECK-CMPBR-NEXT: LBB19_2: ; %if.then570; CHECK-CMPBR-NEXT: brk #0x1571;572; CHECK-NO-CMPBR-LABEL: ule_0_i32:573; CHECK-NO-CMPBR: ; %bb.0: ; %entry574; CHECK-NO-CMPBR-NEXT: cbz w0, LBB19_2575; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end576; CHECK-NO-CMPBR-NEXT: ret577; CHECK-NO-CMPBR-NEXT: LBB19_2: ; %if.then578; CHECK-NO-CMPBR-NEXT: brk #0x1579entry:580 %cmp = icmp ule i32 %a, 0581 br i1 %cmp, label %if.then, label %if.end582 583if.then:584 tail call void @llvm.trap()585 unreachable586 587if.end:588 ret void589}590 591define void @ule_63_i32(i32 %a) {592; CHECK-CMPBR-LABEL: ule_63_i32:593; CHECK-CMPBR: ; %bb.0: ; %entry594; CHECK-CMPBR-NEXT: mov w8, #63 ; =0x3f595; CHECK-CMPBR-NEXT: cbhs w8, w0, LBB20_2596; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end597; CHECK-CMPBR-NEXT: ret598; CHECK-CMPBR-NEXT: LBB20_2: ; %if.then599; CHECK-CMPBR-NEXT: brk #0x1600;601; CHECK-NO-CMPBR-LABEL: ule_63_i32:602; CHECK-NO-CMPBR: ; %bb.0: ; %entry603; CHECK-NO-CMPBR-NEXT: cmp w0, #63604; CHECK-NO-CMPBR-NEXT: b.ls LBB20_2605; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end606; CHECK-NO-CMPBR-NEXT: ret607; CHECK-NO-CMPBR-NEXT: LBB20_2: ; %if.then608; CHECK-NO-CMPBR-NEXT: brk #0x1609entry:610 %cmp = icmp ule i32 %a, 63611 br i1 %cmp, label %if.then, label %if.end612 613if.then:614 tail call void @llvm.trap()615 unreachable616 617if.end:618 ret void619}620 621define void @ule_64_i32(i32 %a) {622; CHECK-CMPBR-LABEL: ule_64_i32:623; CHECK-CMPBR: ; %bb.0: ; %entry624; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40625; CHECK-CMPBR-NEXT: cbhs w8, w0, LBB21_2626; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end627; CHECK-CMPBR-NEXT: ret628; CHECK-CMPBR-NEXT: LBB21_2: ; %if.then629; CHECK-CMPBR-NEXT: brk #0x1630;631; CHECK-NO-CMPBR-LABEL: ule_64_i32:632; CHECK-NO-CMPBR: ; %bb.0: ; %entry633; CHECK-NO-CMPBR-NEXT: cmp w0, #64634; CHECK-NO-CMPBR-NEXT: b.ls LBB21_2635; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end636; CHECK-NO-CMPBR-NEXT: ret637; CHECK-NO-CMPBR-NEXT: LBB21_2: ; %if.then638; CHECK-NO-CMPBR-NEXT: brk #0x1639entry:640 %cmp = icmp ule i32 %a, 64641 br i1 %cmp, label %if.then, label %if.end642 643if.then:644 tail call void @llvm.trap()645 unreachable646 647if.end:648 ret void649}650 651define void @ugt_0_i32(i32 %a) {652; CHECK-CMPBR-LABEL: ugt_0_i32:653; CHECK-CMPBR: ; %bb.0: ; %entry654; CHECK-CMPBR-NEXT: cbnz w0, LBB22_2655; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end656; CHECK-CMPBR-NEXT: ret657; CHECK-CMPBR-NEXT: LBB22_2: ; %if.then658; CHECK-CMPBR-NEXT: brk #0x1659;660; CHECK-NO-CMPBR-LABEL: ugt_0_i32:661; CHECK-NO-CMPBR: ; %bb.0: ; %entry662; CHECK-NO-CMPBR-NEXT: cbnz w0, LBB22_2663; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end664; CHECK-NO-CMPBR-NEXT: ret665; CHECK-NO-CMPBR-NEXT: LBB22_2: ; %if.then666; CHECK-NO-CMPBR-NEXT: brk #0x1667entry:668 %cmp = icmp ugt i32 %a, 0669 br i1 %cmp, label %if.then, label %if.end670 671if.then:672 tail call void @llvm.trap()673 unreachable674 675if.end:676 ret void677}678 679define void @ugt_63_i32(i32 %a) {680; CHECK-CMPBR-LABEL: ugt_63_i32:681; CHECK-CMPBR: ; %bb.0: ; %entry682; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40683; CHECK-CMPBR-NEXT: cbhs w0, w8, LBB23_2684; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end685; CHECK-CMPBR-NEXT: ret686; CHECK-CMPBR-NEXT: LBB23_2: ; %if.then687; CHECK-CMPBR-NEXT: brk #0x1688;689; CHECK-NO-CMPBR-LABEL: ugt_63_i32:690; CHECK-NO-CMPBR: ; %bb.0: ; %entry691; CHECK-NO-CMPBR-NEXT: cmp w0, #64692; CHECK-NO-CMPBR-NEXT: b.hs LBB23_2693; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end694; CHECK-NO-CMPBR-NEXT: ret695; CHECK-NO-CMPBR-NEXT: LBB23_2: ; %if.then696; CHECK-NO-CMPBR-NEXT: brk #0x1697entry:698 %cmp = icmp ugt i32 %a, 63699 br i1 %cmp, label %if.then, label %if.end700 701if.then:702 tail call void @llvm.trap()703 unreachable704 705if.end:706 ret void707}708 709define void @ugt_64_i32(i32 %a) {710; CHECK-CMPBR-LABEL: ugt_64_i32:711; CHECK-CMPBR: ; %bb.0: ; %entry712; CHECK-CMPBR-NEXT: mov w8, #65 ; =0x41713; CHECK-CMPBR-NEXT: cbhs w0, w8, LBB24_2714; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end715; CHECK-CMPBR-NEXT: ret716; CHECK-CMPBR-NEXT: LBB24_2: ; %if.then717; CHECK-CMPBR-NEXT: brk #0x1718;719; CHECK-NO-CMPBR-LABEL: ugt_64_i32:720; CHECK-NO-CMPBR: ; %bb.0: ; %entry721; CHECK-NO-CMPBR-NEXT: cmp w0, #65722; CHECK-NO-CMPBR-NEXT: b.hs LBB24_2723; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end724; CHECK-NO-CMPBR-NEXT: ret725; CHECK-NO-CMPBR-NEXT: LBB24_2: ; %if.then726; CHECK-NO-CMPBR-NEXT: brk #0x1727entry:728 %cmp = icmp ugt i32 %a, 64729 br i1 %cmp, label %if.then, label %if.end730 731if.then:732 tail call void @llvm.trap()733 unreachable734 735if.end:736 ret void737}738 739define void @uge_0_i32(i32 %a) {740; CHECK-CMPBR-LABEL: uge_0_i32:741; CHECK-CMPBR: ; %bb.0: ; %entry742; CHECK-CMPBR-NEXT: cbhs w0, wzr, LBB25_2743; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end744; CHECK-CMPBR-NEXT: ret745; CHECK-CMPBR-NEXT: LBB25_2: ; %if.then746; CHECK-CMPBR-NEXT: brk #0x1747;748; CHECK-NO-CMPBR-LABEL: uge_0_i32:749; CHECK-NO-CMPBR: ; %bb.0: ; %entry750; CHECK-NO-CMPBR-NEXT: cmp w0, #0751; CHECK-NO-CMPBR-NEXT: b.hs LBB25_2752; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end753; CHECK-NO-CMPBR-NEXT: ret754; CHECK-NO-CMPBR-NEXT: LBB25_2: ; %if.then755; CHECK-NO-CMPBR-NEXT: brk #0x1756entry:757 %cmp = icmp uge i32 %a, 0758 br i1 %cmp, label %if.then, label %if.end759 760if.then:761 tail call void @llvm.trap()762 unreachable763 764if.end:765 ret void766}767 768define void @uge_63_i32(i32 %a) {769; CHECK-CMPBR-LABEL: uge_63_i32:770; CHECK-CMPBR: ; %bb.0: ; %entry771; CHECK-CMPBR-NEXT: cbhi w0, #62, LBB26_2772; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end773; CHECK-CMPBR-NEXT: ret774; CHECK-CMPBR-NEXT: LBB26_2: ; %if.then775; CHECK-CMPBR-NEXT: brk #0x1776;777; CHECK-NO-CMPBR-LABEL: uge_63_i32:778; CHECK-NO-CMPBR: ; %bb.0: ; %entry779; CHECK-NO-CMPBR-NEXT: cmp w0, #63780; CHECK-NO-CMPBR-NEXT: b.hs LBB26_2781; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end782; CHECK-NO-CMPBR-NEXT: ret783; CHECK-NO-CMPBR-NEXT: LBB26_2: ; %if.then784; CHECK-NO-CMPBR-NEXT: brk #0x1785entry:786 %cmp = icmp uge i32 %a, 63787 br i1 %cmp, label %if.then, label %if.end788 789if.then:790 tail call void @llvm.trap()791 unreachable792 793if.end:794 ret void795}796 797define void @uge_64_i32(i32 %a) {798; CHECK-CMPBR-LABEL: uge_64_i32:799; CHECK-CMPBR: ; %bb.0: ; %entry800; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40801; CHECK-CMPBR-NEXT: cbhs w0, w8, LBB27_2802; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end803; CHECK-CMPBR-NEXT: ret804; CHECK-CMPBR-NEXT: LBB27_2: ; %if.then805; CHECK-CMPBR-NEXT: brk #0x1806;807; CHECK-NO-CMPBR-LABEL: uge_64_i32:808; CHECK-NO-CMPBR: ; %bb.0: ; %entry809; CHECK-NO-CMPBR-NEXT: cmp w0, #64810; CHECK-NO-CMPBR-NEXT: b.hs LBB27_2811; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end812; CHECK-NO-CMPBR-NEXT: ret813; CHECK-NO-CMPBR-NEXT: LBB27_2: ; %if.then814; CHECK-NO-CMPBR-NEXT: brk #0x1815entry:816 %cmp = icmp uge i32 %a, 64817 br i1 %cmp, label %if.then, label %if.end818 819if.then:820 tail call void @llvm.trap()821 unreachable822 823if.end:824 ret void825}826 827define void @eq_0_i32(i32 %a) {828; CHECK-CMPBR-LABEL: eq_0_i32:829; CHECK-CMPBR: ; %bb.0: ; %entry830; CHECK-CMPBR-NEXT: cbz w0, LBB28_2831; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end832; CHECK-CMPBR-NEXT: ret833; CHECK-CMPBR-NEXT: LBB28_2: ; %if.then834; CHECK-CMPBR-NEXT: brk #0x1835;836; CHECK-NO-CMPBR-LABEL: eq_0_i32:837; CHECK-NO-CMPBR: ; %bb.0: ; %entry838; CHECK-NO-CMPBR-NEXT: cbz w0, LBB28_2839; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end840; CHECK-NO-CMPBR-NEXT: ret841; CHECK-NO-CMPBR-NEXT: LBB28_2: ; %if.then842; CHECK-NO-CMPBR-NEXT: brk #0x1843entry:844 %cmp = icmp eq i32 %a, 0845 br i1 %cmp, label %if.then, label %if.end846 847if.then:848 tail call void @llvm.trap()849 unreachable850 851if.end:852 ret void853}854 855define void @eq_m1_i32(i32 %a) {856; CHECK-CMPBR-LABEL: eq_m1_i32:857; CHECK-CMPBR: ; %bb.0: ; %entry858; CHECK-CMPBR-NEXT: mov w8, #-1 ; =0xffffffff859; CHECK-CMPBR-NEXT: cbeq w0, w8, LBB29_2860; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end861; CHECK-CMPBR-NEXT: ret862; CHECK-CMPBR-NEXT: LBB29_2: ; %if.then863; CHECK-CMPBR-NEXT: brk #0x1864;865; CHECK-NO-CMPBR-LABEL: eq_m1_i32:866; CHECK-NO-CMPBR: ; %bb.0: ; %entry867; CHECK-NO-CMPBR-NEXT: cmn w0, #1868; CHECK-NO-CMPBR-NEXT: b.eq LBB29_2869; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end870; CHECK-NO-CMPBR-NEXT: ret871; CHECK-NO-CMPBR-NEXT: LBB29_2: ; %if.then872; CHECK-NO-CMPBR-NEXT: brk #0x1873entry:874 %cmp = icmp eq i32 %a, -1875 br i1 %cmp, label %if.then, label %if.end876 877if.then:878 tail call void @llvm.trap()879 unreachable880 881if.end:882 ret void883}884 885define void @eq_63_i32(i32 %a) {886; CHECK-CMPBR-LABEL: eq_63_i32:887; CHECK-CMPBR: ; %bb.0: ; %entry888; CHECK-CMPBR-NEXT: cbeq w0, #63, LBB30_2889; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end890; CHECK-CMPBR-NEXT: ret891; CHECK-CMPBR-NEXT: LBB30_2: ; %if.then892; CHECK-CMPBR-NEXT: brk #0x1893;894; CHECK-NO-CMPBR-LABEL: eq_63_i32:895; CHECK-NO-CMPBR: ; %bb.0: ; %entry896; CHECK-NO-CMPBR-NEXT: cmp w0, #63897; CHECK-NO-CMPBR-NEXT: b.eq LBB30_2898; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end899; CHECK-NO-CMPBR-NEXT: ret900; CHECK-NO-CMPBR-NEXT: LBB30_2: ; %if.then901; CHECK-NO-CMPBR-NEXT: brk #0x1902entry:903 %cmp = icmp eq i32 %a, 63904 br i1 %cmp, label %if.then, label %if.end905 906if.then:907 tail call void @llvm.trap()908 unreachable909 910if.end:911 ret void912}913 914define void @eq_64_i32(i32 %a) {915; CHECK-CMPBR-LABEL: eq_64_i32:916; CHECK-CMPBR: ; %bb.0: ; %entry917; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x40918; CHECK-CMPBR-NEXT: cbeq w0, w8, LBB31_2919; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end920; CHECK-CMPBR-NEXT: ret921; CHECK-CMPBR-NEXT: LBB31_2: ; %if.then922; CHECK-CMPBR-NEXT: brk #0x1923;924; CHECK-NO-CMPBR-LABEL: eq_64_i32:925; CHECK-NO-CMPBR: ; %bb.0: ; %entry926; CHECK-NO-CMPBR-NEXT: cmp w0, #64927; CHECK-NO-CMPBR-NEXT: b.eq LBB31_2928; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end929; CHECK-NO-CMPBR-NEXT: ret930; CHECK-NO-CMPBR-NEXT: LBB31_2: ; %if.then931; CHECK-NO-CMPBR-NEXT: brk #0x1932entry:933 %cmp = icmp eq i32 %a, 64934 br i1 %cmp, label %if.then, label %if.end935 936if.then:937 tail call void @llvm.trap()938 unreachable939 940if.end:941 ret void942}943 944define void @ne_0_i32(i32 %a) {945; CHECK-CMPBR-LABEL: ne_0_i32:946; CHECK-CMPBR: ; %bb.0: ; %entry947; CHECK-CMPBR-NEXT: cbnz w0, LBB32_2948; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end949; CHECK-CMPBR-NEXT: ret950; CHECK-CMPBR-NEXT: LBB32_2: ; %if.then951; CHECK-CMPBR-NEXT: brk #0x1952;953; CHECK-NO-CMPBR-LABEL: ne_0_i32:954; CHECK-NO-CMPBR: ; %bb.0: ; %entry955; CHECK-NO-CMPBR-NEXT: cbnz w0, LBB32_2956; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end957; CHECK-NO-CMPBR-NEXT: ret958; CHECK-NO-CMPBR-NEXT: LBB32_2: ; %if.then959; CHECK-NO-CMPBR-NEXT: brk #0x1960entry:961 %cmp = icmp ne i32 %a, 0962 br i1 %cmp, label %if.then, label %if.end963 964if.then:965 tail call void @llvm.trap()966 unreachable967 968if.end:969 ret void970}971 972define void @ne_m1_i32(i32 %a) {973; CHECK-CMPBR-LABEL: ne_m1_i32:974; CHECK-CMPBR: ; %bb.0: ; %entry975; CHECK-CMPBR-NEXT: mov w8, #-1 ; =0xffffffff976; CHECK-CMPBR-NEXT: cbne w0, w8, LBB33_2977; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end978; CHECK-CMPBR-NEXT: ret979; CHECK-CMPBR-NEXT: LBB33_2: ; %if.then980; CHECK-CMPBR-NEXT: brk #0x1981;982; CHECK-NO-CMPBR-LABEL: ne_m1_i32:983; CHECK-NO-CMPBR: ; %bb.0: ; %entry984; CHECK-NO-CMPBR-NEXT: cmn w0, #1985; CHECK-NO-CMPBR-NEXT: b.ne LBB33_2986; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end987; CHECK-NO-CMPBR-NEXT: ret988; CHECK-NO-CMPBR-NEXT: LBB33_2: ; %if.then989; CHECK-NO-CMPBR-NEXT: brk #0x1990entry:991 %cmp = icmp ne i32 %a, -1992 br i1 %cmp, label %if.then, label %if.end993 994if.then:995 tail call void @llvm.trap()996 unreachable997 998if.end:999 ret void1000}1001 1002define void @ne_63_i32(i32 %a) {1003; CHECK-CMPBR-LABEL: ne_63_i32:1004; CHECK-CMPBR: ; %bb.0: ; %entry1005; CHECK-CMPBR-NEXT: cbne w0, #63, LBB34_21006; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1007; CHECK-CMPBR-NEXT: ret1008; CHECK-CMPBR-NEXT: LBB34_2: ; %if.then1009; CHECK-CMPBR-NEXT: brk #0x11010;1011; CHECK-NO-CMPBR-LABEL: ne_63_i32:1012; CHECK-NO-CMPBR: ; %bb.0: ; %entry1013; CHECK-NO-CMPBR-NEXT: cmp w0, #631014; CHECK-NO-CMPBR-NEXT: b.ne LBB34_21015; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1016; CHECK-NO-CMPBR-NEXT: ret1017; CHECK-NO-CMPBR-NEXT: LBB34_2: ; %if.then1018; CHECK-NO-CMPBR-NEXT: brk #0x11019entry:1020 %cmp = icmp ne i32 %a, 631021 br i1 %cmp, label %if.then, label %if.end1022 1023if.then:1024 tail call void @llvm.trap()1025 unreachable1026 1027if.end:1028 ret void1029}1030 1031define void @ne_64_i32(i32 %a) {1032; CHECK-CMPBR-LABEL: ne_64_i32:1033; CHECK-CMPBR: ; %bb.0: ; %entry1034; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x401035; CHECK-CMPBR-NEXT: cbne w0, w8, LBB35_21036; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1037; CHECK-CMPBR-NEXT: ret1038; CHECK-CMPBR-NEXT: LBB35_2: ; %if.then1039; CHECK-CMPBR-NEXT: brk #0x11040;1041; CHECK-NO-CMPBR-LABEL: ne_64_i32:1042; CHECK-NO-CMPBR: ; %bb.0: ; %entry1043; CHECK-NO-CMPBR-NEXT: cmp w0, #641044; CHECK-NO-CMPBR-NEXT: b.ne LBB35_21045; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1046; CHECK-NO-CMPBR-NEXT: ret1047; CHECK-NO-CMPBR-NEXT: LBB35_2: ; %if.then1048; CHECK-NO-CMPBR-NEXT: brk #0x11049entry:1050 %cmp = icmp ne i32 %a, 641051 br i1 %cmp, label %if.then, label %if.end1052 1053if.then:1054 tail call void @llvm.trap()1055 unreachable1056 1057if.end:1058 ret void1059}1060 1061define void @cbge_out_of_upper_bound_i32(i32 %a) {1062; CHECK-CMPBR-LABEL: cbge_out_of_upper_bound_i32:1063; CHECK-CMPBR: ; %bb.0: ; %entry1064; CHECK-CMPBR-NEXT: mov w8, #71 ; =0x471065; CHECK-CMPBR-NEXT: cbge w0, w8, LBB36_21066; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1067; CHECK-CMPBR-NEXT: ret1068; CHECK-CMPBR-NEXT: LBB36_2: ; %if.then1069; CHECK-CMPBR-NEXT: brk #0x11070;1071; CHECK-NO-CMPBR-LABEL: cbge_out_of_upper_bound_i32:1072; CHECK-NO-CMPBR: ; %bb.0: ; %entry1073; CHECK-NO-CMPBR-NEXT: cmp w0, #711074; CHECK-NO-CMPBR-NEXT: b.ge LBB36_21075; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1076; CHECK-NO-CMPBR-NEXT: ret1077; CHECK-NO-CMPBR-NEXT: LBB36_2: ; %if.then1078; CHECK-NO-CMPBR-NEXT: brk #0x11079entry:1080 %cmp = icmp sgt i32 %a, 701081 br i1 %cmp, label %if.then, label %if.end1082 1083if.then:1084 tail call void @llvm.trap()1085 unreachable1086 1087if.end:1088 ret void1089}1090 1091define void @cbge_out_of_lower_bound_i32(i32 %a) {1092; CHECK-CMPBR-LABEL: cbge_out_of_lower_bound_i32:1093; CHECK-CMPBR: ; %bb.0: ; %entry1094; CHECK-CMPBR-NEXT: mov w8, #-10 ; =0xfffffff61095; CHECK-CMPBR-NEXT: cbge w0, w8, LBB37_21096; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1097; CHECK-CMPBR-NEXT: ret1098; CHECK-CMPBR-NEXT: LBB37_2: ; %if.then1099; CHECK-CMPBR-NEXT: brk #0x11100;1101; CHECK-NO-CMPBR-LABEL: cbge_out_of_lower_bound_i32:1102; CHECK-NO-CMPBR: ; %bb.0: ; %entry1103; CHECK-NO-CMPBR-NEXT: cmn w0, #101104; CHECK-NO-CMPBR-NEXT: b.ge LBB37_21105; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1106; CHECK-NO-CMPBR-NEXT: ret1107; CHECK-NO-CMPBR-NEXT: LBB37_2: ; %if.then1108; CHECK-NO-CMPBR-NEXT: brk #0x11109entry:1110 %cmp = icmp sge i32 %a, -101111 br i1 %cmp, label %if.then, label %if.end1112 1113if.then:1114 tail call void @llvm.trap()1115 unreachable1116 1117if.end:1118 ret void1119}1120 1121; This should trigger a register swap.1122define void @cble_out_of_lower_bound_i32(i32 %a) {1123; CHECK-CMPBR-LABEL: cble_out_of_lower_bound_i32:1124; CHECK-CMPBR: ; %bb.0: ; %entry1125; CHECK-CMPBR-NEXT: mov w8, #-10 ; =0xfffffff61126; CHECK-CMPBR-NEXT: cbhs w8, w0, LBB38_21127; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1128; CHECK-CMPBR-NEXT: ret1129; CHECK-CMPBR-NEXT: LBB38_2: ; %if.then1130; CHECK-CMPBR-NEXT: brk #0x11131;1132; CHECK-NO-CMPBR-LABEL: cble_out_of_lower_bound_i32:1133; CHECK-NO-CMPBR: ; %bb.0: ; %entry1134; CHECK-NO-CMPBR-NEXT: cmn w0, #101135; CHECK-NO-CMPBR-NEXT: b.ls LBB38_21136; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1137; CHECK-NO-CMPBR-NEXT: ret1138; CHECK-NO-CMPBR-NEXT: LBB38_2: ; %if.then1139; CHECK-NO-CMPBR-NEXT: brk #0x11140entry:1141 %cmp = icmp ule i32 %a, -101142 br i1 %cmp, label %if.then, label %if.end1143 1144if.then:1145 tail call void @llvm.trap()1146 unreachable1147 1148if.end:1149 ret void1150}1151 1152define void @slt_m1_i64(i64 %a) {1153; CHECK-CMPBR-LABEL: slt_m1_i64:1154; CHECK-CMPBR: ; %bb.0: ; %entry1155; CHECK-CMPBR-NEXT: mov x8, #-2 ; =0xfffffffffffffffe1156; CHECK-CMPBR-NEXT: cbge x8, x0, LBB39_21157; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1158; CHECK-CMPBR-NEXT: ret1159; CHECK-CMPBR-NEXT: LBB39_2: ; %if.then1160; CHECK-CMPBR-NEXT: brk #0x11161;1162; CHECK-NO-CMPBR-LABEL: slt_m1_i64:1163; CHECK-NO-CMPBR: ; %bb.0: ; %entry1164; CHECK-NO-CMPBR-NEXT: cmn x0, #21165; CHECK-NO-CMPBR-NEXT: b.le LBB39_21166; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1167; CHECK-NO-CMPBR-NEXT: ret1168; CHECK-NO-CMPBR-NEXT: LBB39_2: ; %if.then1169; CHECK-NO-CMPBR-NEXT: brk #0x11170entry:1171 %cmp = icmp slt i64 %a, -11172 br i1 %cmp, label %if.then, label %if.end1173 1174if.then:1175 tail call void @llvm.trap()1176 unreachable1177 1178if.end:1179 ret void1180}1181 1182define void @sle_64_i64(i64 %a) {1183; CHECK-CMPBR-LABEL: sle_64_i64:1184; CHECK-CMPBR: ; %bb.0: ; %entry1185; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x401186; CHECK-CMPBR-NEXT: cbge x8, x0, LBB40_21187; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1188; CHECK-CMPBR-NEXT: ret1189; CHECK-CMPBR-NEXT: LBB40_2: ; %if.then1190; CHECK-CMPBR-NEXT: brk #0x11191;1192; CHECK-NO-CMPBR-LABEL: sle_64_i64:1193; CHECK-NO-CMPBR: ; %bb.0: ; %entry1194; CHECK-NO-CMPBR-NEXT: cmp x0, #641195; CHECK-NO-CMPBR-NEXT: b.le LBB40_21196; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1197; CHECK-NO-CMPBR-NEXT: ret1198; CHECK-NO-CMPBR-NEXT: LBB40_2: ; %if.then1199; CHECK-NO-CMPBR-NEXT: brk #0x11200entry:1201 %cmp = icmp sle i64 %a, 641202 br i1 %cmp, label %if.then, label %if.end1203 1204if.then:1205 tail call void @llvm.trap()1206 unreachable1207 1208if.end:1209 ret void1210}1211 1212define void @ult_63_i64(i64 %a) {1213; CHECK-CMPBR-LABEL: ult_63_i64:1214; CHECK-CMPBR: ; %bb.0: ; %entry1215; CHECK-CMPBR-NEXT: cblo x0, #63, LBB41_21216; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1217; CHECK-CMPBR-NEXT: ret1218; CHECK-CMPBR-NEXT: LBB41_2: ; %if.then1219; CHECK-CMPBR-NEXT: brk #0x11220;1221; CHECK-NO-CMPBR-LABEL: ult_63_i64:1222; CHECK-NO-CMPBR: ; %bb.0: ; %entry1223; CHECK-NO-CMPBR-NEXT: cmp x0, #621224; CHECK-NO-CMPBR-NEXT: b.ls LBB41_21225; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1226; CHECK-NO-CMPBR-NEXT: ret1227; CHECK-NO-CMPBR-NEXT: LBB41_2: ; %if.then1228; CHECK-NO-CMPBR-NEXT: brk #0x11229entry:1230 %cmp = icmp ult i64 %a, 631231 br i1 %cmp, label %if.then, label %if.end1232 1233if.then:1234 tail call void @llvm.trap()1235 unreachable1236 1237if.end:1238 ret void1239}1240 1241define void @uge_64_i64(i64 %a) {1242; CHECK-CMPBR-LABEL: uge_64_i64:1243; CHECK-CMPBR: ; %bb.0: ; %entry1244; CHECK-CMPBR-NEXT: mov w8, #64 ; =0x401245; CHECK-CMPBR-NEXT: cbhs x0, x8, LBB42_21246; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1247; CHECK-CMPBR-NEXT: ret1248; CHECK-CMPBR-NEXT: LBB42_2: ; %if.then1249; CHECK-CMPBR-NEXT: brk #0x11250;1251; CHECK-NO-CMPBR-LABEL: uge_64_i64:1252; CHECK-NO-CMPBR: ; %bb.0: ; %entry1253; CHECK-NO-CMPBR-NEXT: cmp x0, #641254; CHECK-NO-CMPBR-NEXT: b.hs LBB42_21255; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1256; CHECK-NO-CMPBR-NEXT: ret1257; CHECK-NO-CMPBR-NEXT: LBB42_2: ; %if.then1258; CHECK-NO-CMPBR-NEXT: brk #0x11259entry:1260 %cmp = icmp uge i64 %a, 641261 br i1 %cmp, label %if.then, label %if.end1262 1263if.then:1264 tail call void @llvm.trap()1265 unreachable1266 1267if.end:1268 ret void1269}1270 1271define void @eq_m1_i64(i64 %a) {1272; CHECK-CMPBR-LABEL: eq_m1_i64:1273; CHECK-CMPBR: ; %bb.0: ; %entry1274; CHECK-CMPBR-NEXT: mov x8, #-1 ; =0xffffffffffffffff1275; CHECK-CMPBR-NEXT: cbeq x0, x8, LBB43_21276; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1277; CHECK-CMPBR-NEXT: ret1278; CHECK-CMPBR-NEXT: LBB43_2: ; %if.then1279; CHECK-CMPBR-NEXT: brk #0x11280;1281; CHECK-NO-CMPBR-LABEL: eq_m1_i64:1282; CHECK-NO-CMPBR: ; %bb.0: ; %entry1283; CHECK-NO-CMPBR-NEXT: cmn x0, #11284; CHECK-NO-CMPBR-NEXT: b.eq LBB43_21285; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1286; CHECK-NO-CMPBR-NEXT: ret1287; CHECK-NO-CMPBR-NEXT: LBB43_2: ; %if.then1288; CHECK-NO-CMPBR-NEXT: brk #0x11289entry:1290 %cmp = icmp eq i64 %a, -11291 br i1 %cmp, label %if.then, label %if.end1292 1293if.then:1294 tail call void @llvm.trap()1295 unreachable1296 1297if.end:1298 ret void1299}1300 1301define void @ne_63_i64(i64 %a) {1302; CHECK-CMPBR-LABEL: ne_63_i64:1303; CHECK-CMPBR: ; %bb.0: ; %entry1304; CHECK-CMPBR-NEXT: cbne x0, #63, LBB44_21305; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end1306; CHECK-CMPBR-NEXT: ret1307; CHECK-CMPBR-NEXT: LBB44_2: ; %if.then1308; CHECK-CMPBR-NEXT: brk #0x11309;1310; CHECK-NO-CMPBR-LABEL: ne_63_i64:1311; CHECK-NO-CMPBR: ; %bb.0: ; %entry1312; CHECK-NO-CMPBR-NEXT: cmp x0, #631313; CHECK-NO-CMPBR-NEXT: b.ne LBB44_21314; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end1315; CHECK-NO-CMPBR-NEXT: ret1316; CHECK-NO-CMPBR-NEXT: LBB44_2: ; %if.then1317; CHECK-NO-CMPBR-NEXT: brk #0x11318entry:1319 %cmp = icmp ne i64 %a, 631320 br i1 %cmp, label %if.then, label %if.end1321 1322if.then:1323 tail call void @llvm.trap()1324 unreachable1325 1326if.end:1327 ret void1328}1329