231 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 5define void @cbb_assertsext_eq(i8 signext %a, i8 signext %b) {6; CHECK-CMPBR-LABEL: cbb_assertsext_eq:7; CHECK-CMPBR: ; %bb.0:8; CHECK-CMPBR-NEXT: cbbeq w0, w1, LBB0_29; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end10; CHECK-CMPBR-NEXT: ret11; CHECK-CMPBR-NEXT: LBB0_2: ; %if.then12; CHECK-CMPBR-NEXT: brk #0x113;14; CHECK-NO-CMPBR-LABEL: cbb_assertsext_eq:15; CHECK-NO-CMPBR: ; %bb.0:16; CHECK-NO-CMPBR-NEXT: cmp w0, w117; CHECK-NO-CMPBR-NEXT: b.eq LBB0_218; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end19; CHECK-NO-CMPBR-NEXT: ret20; CHECK-NO-CMPBR-NEXT: LBB0_2: ; %if.then21; CHECK-NO-CMPBR-NEXT: brk #0x122 %cmp = icmp eq i8 %a, %b23 br i1 %cmp, label %if.then, label %if.end24 25if.then:26 tail call void @llvm.trap()27 unreachable28 29if.end:30 ret void31}32 33define void @cbb_assertsext_sgt(i8 signext %a, i8 signext %b) {34; CHECK-CMPBR-LABEL: cbb_assertsext_sgt:35; CHECK-CMPBR: ; %bb.0:36; CHECK-CMPBR-NEXT: cbbgt w0, w1, LBB1_237; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end38; CHECK-CMPBR-NEXT: ret39; CHECK-CMPBR-NEXT: LBB1_2: ; %if.then40; CHECK-CMPBR-NEXT: brk #0x141;42; CHECK-NO-CMPBR-LABEL: cbb_assertsext_sgt:43; CHECK-NO-CMPBR: ; %bb.0:44; CHECK-NO-CMPBR-NEXT: cmp w0, w145; CHECK-NO-CMPBR-NEXT: b.gt LBB1_246; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end47; CHECK-NO-CMPBR-NEXT: ret48; CHECK-NO-CMPBR-NEXT: LBB1_2: ; %if.then49; CHECK-NO-CMPBR-NEXT: brk #0x150 %cmp = icmp sgt i8 %a, %b51 br i1 %cmp, label %if.then, label %if.end52 53if.then:54 tail call void @llvm.trap()55 unreachable56 57if.end:58 ret void59}60 61define void @cbh_assertsext_slt(i16 signext %a, i16 signext %b) {62; CHECK-CMPBR-LABEL: cbh_assertsext_slt:63; CHECK-CMPBR: ; %bb.0:64; CHECK-CMPBR-NEXT: cbhgt w1, w0, LBB2_265; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end66; CHECK-CMPBR-NEXT: ret67; CHECK-CMPBR-NEXT: LBB2_2: ; %if.then68; CHECK-CMPBR-NEXT: brk #0x169;70; CHECK-NO-CMPBR-LABEL: cbh_assertsext_slt:71; CHECK-NO-CMPBR: ; %bb.0:72; CHECK-NO-CMPBR-NEXT: cmp w0, w173; CHECK-NO-CMPBR-NEXT: b.lt LBB2_274; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end75; CHECK-NO-CMPBR-NEXT: ret76; CHECK-NO-CMPBR-NEXT: LBB2_2: ; %if.then77; CHECK-NO-CMPBR-NEXT: brk #0x178 %cmp = icmp slt i16 %a, %b79 br i1 %cmp, label %if.then, label %if.end80 81if.then:82 tail call void @llvm.trap()83 unreachable84 85if.end:86 ret void87}88 89define void @cbb_assertzext_eq(i8 zeroext %a, i8 zeroext %b) {90; CHECK-CMPBR-LABEL: cbb_assertzext_eq:91; CHECK-CMPBR: ; %bb.0:92; CHECK-CMPBR-NEXT: cbbeq w0, w1, LBB3_293; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end94; CHECK-CMPBR-NEXT: ret95; CHECK-CMPBR-NEXT: LBB3_2: ; %if.then96; CHECK-CMPBR-NEXT: brk #0x197;98; CHECK-NO-CMPBR-LABEL: cbb_assertzext_eq:99; CHECK-NO-CMPBR: ; %bb.0:100; CHECK-NO-CMPBR-NEXT: cmp w0, w1101; CHECK-NO-CMPBR-NEXT: b.eq LBB3_2102; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end103; CHECK-NO-CMPBR-NEXT: ret104; CHECK-NO-CMPBR-NEXT: LBB3_2: ; %if.then105; CHECK-NO-CMPBR-NEXT: brk #0x1106 %cmp = icmp eq i8 %a, %b107 br i1 %cmp, label %if.then, label %if.end108 109if.then:110 tail call void @llvm.trap()111 unreachable112 113if.end:114 ret void115}116 117define void @cbb_assertzext_ugt(i8 zeroext %a, i8 zeroext %b) {118; CHECK-CMPBR-LABEL: cbb_assertzext_ugt:119; CHECK-CMPBR: ; %bb.0:120; CHECK-CMPBR-NEXT: cbbhi w0, w1, LBB4_2121; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end122; CHECK-CMPBR-NEXT: ret123; CHECK-CMPBR-NEXT: LBB4_2: ; %if.then124; CHECK-CMPBR-NEXT: brk #0x1125;126; CHECK-NO-CMPBR-LABEL: cbb_assertzext_ugt:127; CHECK-NO-CMPBR: ; %bb.0:128; CHECK-NO-CMPBR-NEXT: cmp w0, w1129; CHECK-NO-CMPBR-NEXT: b.hi LBB4_2130; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end131; CHECK-NO-CMPBR-NEXT: ret132; CHECK-NO-CMPBR-NEXT: LBB4_2: ; %if.then133; CHECK-NO-CMPBR-NEXT: brk #0x1134 %cmp = icmp ugt i8 %a, %b135 br i1 %cmp, label %if.then, label %if.end136 137if.then:138 tail call void @llvm.trap()139 unreachable140 141if.end:142 ret void143}144 145define void @cbh_assertzext_ule(i16 zeroext %a, i16 zeroext %b) {146; CHECK-CMPBR-LABEL: cbh_assertzext_ule:147; CHECK-CMPBR: ; %bb.0:148; CHECK-CMPBR-NEXT: cbhhs w1, w0, LBB5_2149; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end150; CHECK-CMPBR-NEXT: ret151; CHECK-CMPBR-NEXT: LBB5_2: ; %if.then152; CHECK-CMPBR-NEXT: brk #0x1153;154; CHECK-NO-CMPBR-LABEL: cbh_assertzext_ule:155; CHECK-NO-CMPBR: ; %bb.0:156; CHECK-NO-CMPBR-NEXT: cmp w0, w1157; CHECK-NO-CMPBR-NEXT: b.ls LBB5_2158; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end159; CHECK-NO-CMPBR-NEXT: ret160; CHECK-NO-CMPBR-NEXT: LBB5_2: ; %if.then161; CHECK-NO-CMPBR-NEXT: brk #0x1162 %cmp = icmp ule i16 %a, %b163 br i1 %cmp, label %if.then, label %if.end164 165if.then:166 tail call void @llvm.trap()167 unreachable168 169if.end:170 ret void171}172 173define void @cbb_mixed_assertsext_only_first(i8 signext %a, i8 %b) {174; CHECK-CMPBR-LABEL: cbb_mixed_assertsext_only_first:175; CHECK-CMPBR: ; %bb.0:176; CHECK-CMPBR-NEXT: cbbgt w0, w1, LBB6_2177; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end178; CHECK-CMPBR-NEXT: ret179; CHECK-CMPBR-NEXT: LBB6_2: ; %if.then180; CHECK-CMPBR-NEXT: brk #0x1181;182; CHECK-NO-CMPBR-LABEL: cbb_mixed_assertsext_only_first:183; CHECK-NO-CMPBR: ; %bb.0:184; CHECK-NO-CMPBR-NEXT: cmp w0, w1, sxtb185; CHECK-NO-CMPBR-NEXT: b.gt LBB6_2186; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end187; CHECK-NO-CMPBR-NEXT: ret188; CHECK-NO-CMPBR-NEXT: LBB6_2: ; %if.then189; CHECK-NO-CMPBR-NEXT: brk #0x1190 %cmp = icmp sgt i8 %a, %b191 br i1 %cmp, label %if.then, label %if.end192 193if.then:194 tail call void @llvm.trap()195 unreachable196 197if.end:198 ret void199}200 201define void @cbb_mixed_assertzext_only_second(i8 %a, i8 zeroext %b) {202; CHECK-CMPBR-LABEL: cbb_mixed_assertzext_only_second:203; CHECK-CMPBR: ; %bb.0:204; CHECK-CMPBR-NEXT: cbbhi w0, w1, LBB7_2205; CHECK-CMPBR-NEXT: ; %bb.1: ; %if.end206; CHECK-CMPBR-NEXT: ret207; CHECK-CMPBR-NEXT: LBB7_2: ; %if.then208; CHECK-CMPBR-NEXT: brk #0x1209;210; CHECK-NO-CMPBR-LABEL: cbb_mixed_assertzext_only_second:211; CHECK-NO-CMPBR: ; %bb.0:212; CHECK-NO-CMPBR-NEXT: cmp w1, w0, uxtb213; CHECK-NO-CMPBR-NEXT: b.lo LBB7_2214; CHECK-NO-CMPBR-NEXT: ; %bb.1: ; %if.end215; CHECK-NO-CMPBR-NEXT: ret216; CHECK-NO-CMPBR-NEXT: LBB7_2: ; %if.then217; CHECK-NO-CMPBR-NEXT: brk #0x1218 %cmp = icmp ugt i8 %a, %b219 br i1 %cmp, label %if.then, label %if.end220 221if.then:222 tail call void @llvm.trap()223 unreachable224 225if.end:226 ret void227}228 229 230declare void @llvm.trap()231