904 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 52; RUN: llc < %s -mtriple=aarch64 -O3 | FileCheck %s --check-prefixes=CHECK,CHECK-SD3; RUN: llc < %s -mtriple=aarch64 -O3 -global-isel | FileCheck %s --check-prefixes=CHECK,CHECK-GI4 5declare void @t()6 7define void @test1(i32 %a) {8; CHECK-LABEL: test1:9; CHECK: // %bb.0: // %entry10; CHECK-NEXT: cmp w0, #1211; CHECK-NEXT: b.mi .LBB0_212; CHECK-NEXT: // %bb.1: // %if.end13; CHECK-NEXT: ret14; CHECK-NEXT: .LBB0_2: // %if.then15; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill16; CHECK-NEXT: .cfi_def_cfa_offset 1617; CHECK-NEXT: .cfi_offset w30, -1618; CHECK-NEXT: bl t19; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload20; CHECK-NEXT: ret21entry:22 %sub = add nsw i32 %a, -1223 %cmp = icmp slt i32 %sub, 024 br i1 %cmp, label %if.then, label %if.end25 26 27if.then:28 call void @t()29 br label %if.end30 31if.end:32 ret void33}34 35define void @test2(i64 %a) {36; CHECK-LABEL: test2:37; CHECK: // %bb.0: // %entry38; CHECK-NEXT: cmp x0, #1239; CHECK-NEXT: b.mi .LBB1_240; CHECK-NEXT: // %bb.1: // %if.end41; CHECK-NEXT: ret42; CHECK-NEXT: .LBB1_2: // %if.then43; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill44; CHECK-NEXT: .cfi_def_cfa_offset 1645; CHECK-NEXT: .cfi_offset w30, -1646; CHECK-NEXT: bl t47; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload48; CHECK-NEXT: ret49entry:50 %sub = add nsw i64 %a, -1251 %cmp = icmp slt i64 %sub, 052 br i1 %cmp, label %if.then, label %if.end53 54 55if.then:56 call void @t()57 br label %if.end58 59if.end:60 ret void61}62 63define void @test3(i32 %a) {64; CHECK-LABEL: test3:65; CHECK: // %bb.0: // %entry66; CHECK-NEXT: cmp w0, #1267; CHECK-NEXT: b.mi .LBB2_268; CHECK-NEXT: // %bb.1: // %if.then69; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill70; CHECK-NEXT: .cfi_def_cfa_offset 1671; CHECK-NEXT: .cfi_offset w30, -1672; CHECK-NEXT: bl t73; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload74; CHECK-NEXT: .LBB2_2: // %if.end75; CHECK-NEXT: ret76entry:77 %sub = add nsw i32 %a, -1278 %cmp = icmp sgt i32 %sub, -179 br i1 %cmp, label %if.then, label %if.end80 81 82if.then:83 call void @t()84 br label %if.end85 86if.end:87 ret void88}89 90define void @test4(i64 %a) {91; CHECK-LABEL: test4:92; CHECK: // %bb.0: // %entry93; CHECK-NEXT: cmp x0, #1294; CHECK-NEXT: b.mi .LBB3_295; CHECK-NEXT: // %bb.1: // %if.then96; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill97; CHECK-NEXT: .cfi_def_cfa_offset 1698; CHECK-NEXT: .cfi_offset w30, -1699; CHECK-NEXT: bl t100; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload101; CHECK-NEXT: .LBB3_2: // %if.end102; CHECK-NEXT: ret103entry:104 %sub = add nsw i64 %a, -12105 %cmp = icmp sgt i64 %sub, -1106 br i1 %cmp, label %if.then, label %if.end107 108 109if.then:110 call void @t()111 br label %if.end112 113if.end:114 ret void115}116 117define void @test5(i32 %a) {118; CHECK-LABEL: test5:119; CHECK: // %bb.0: // %entry120; CHECK-NEXT: cmp w0, #12121; CHECK-NEXT: b.mi .LBB4_2122; CHECK-NEXT: // %bb.1: // %if.then123; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill124; CHECK-NEXT: .cfi_def_cfa_offset 16125; CHECK-NEXT: .cfi_offset w30, -16126; CHECK-NEXT: bl t127; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload128; CHECK-NEXT: .LBB4_2: // %if.end129; CHECK-NEXT: ret130entry:131 %sub = add nsw i32 %a, -12132 %cmp = icmp sge i32 %sub, 0133 br i1 %cmp, label %if.then, label %if.end134 135 136if.then:137 call void @t()138 br label %if.end139 140if.end:141 ret void142}143 144define void @test6(i64 %a) {145; CHECK-LABEL: test6:146; CHECK: // %bb.0: // %entry147; CHECK-NEXT: cmp x0, #12148; CHECK-NEXT: b.mi .LBB5_2149; CHECK-NEXT: // %bb.1: // %if.then150; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill151; CHECK-NEXT: .cfi_def_cfa_offset 16152; CHECK-NEXT: .cfi_offset w30, -16153; CHECK-NEXT: bl t154; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload155; CHECK-NEXT: .LBB5_2: // %if.end156; CHECK-NEXT: ret157entry:158 %sub = add nsw i64 %a, -12159 %cmp = icmp sge i64 %sub, 0160 br i1 %cmp, label %if.then, label %if.end161 162 163if.then:164 call void @t()165 br label %if.end166 167if.end:168 ret void169}170 171define void @test7(i32 %a) {172; CHECK-LABEL: test7:173; CHECK: // %bb.0: // %entry174; CHECK-NEXT: cmp w0, #12175; CHECK-NEXT: b.mi .LBB6_2176; CHECK-NEXT: // %bb.1: // %if.end177; CHECK-NEXT: ret178; CHECK-NEXT: .LBB6_2: // %if.then179; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill180; CHECK-NEXT: .cfi_def_cfa_offset 16181; CHECK-NEXT: .cfi_offset w30, -16182; CHECK-NEXT: bl t183; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload184; CHECK-NEXT: ret185entry:186 %sub = sub nsw i32 %a, 12187 %cmp = icmp slt i32 %sub, 0188 br i1 %cmp, label %if.then, label %if.end189 190 191if.then:192 call void @t()193 br label %if.end194 195if.end:196 ret void197}198 199define void @test8(i64 %val1, i64 %val2, i64 %val3) {200; CHECK-SD-LABEL: test8:201; CHECK-SD: // %bb.0:202; CHECK-SD-NEXT: tst x0, x1203; CHECK-SD-NEXT: b.pl .LBB7_3204; CHECK-SD-NEXT: // %bb.1:205; CHECK-SD-NEXT: and x8, x1, x2206; CHECK-SD-NEXT: tbnz x8, #63, .LBB7_3207; CHECK-SD-NEXT: // %bb.2: // %if.then2208; CHECK-SD-NEXT: tst x0, x1, lsl #63209; CHECK-SD-NEXT: b.mi .LBB7_4210; CHECK-SD-NEXT: .LBB7_3: // %if.end211; CHECK-SD-NEXT: ret212; CHECK-SD-NEXT: .LBB7_4: // %if.then3213; CHECK-SD-NEXT: tst x0, x1, lsl #62214; CHECK-SD-NEXT: b.mi .LBB7_3215; CHECK-SD-NEXT: // %bb.5: // %if.then4216; CHECK-SD-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill217; CHECK-SD-NEXT: .cfi_def_cfa_offset 16218; CHECK-SD-NEXT: .cfi_offset w30, -16219; CHECK-SD-NEXT: bl t220; CHECK-SD-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload221; CHECK-SD-NEXT: ret222;223; CHECK-GI-LABEL: test8:224; CHECK-GI: // %bb.0:225; CHECK-GI-NEXT: tst x0, x1226; CHECK-GI-NEXT: b.pl .LBB7_3227; CHECK-GI-NEXT: // %bb.1:228; CHECK-GI-NEXT: tst x1, x2229; CHECK-GI-NEXT: b.mi .LBB7_3230; CHECK-GI-NEXT: // %bb.2: // %if.then2231; CHECK-GI-NEXT: tst x0, x1, lsl #63232; CHECK-GI-NEXT: b.mi .LBB7_4233; CHECK-GI-NEXT: .LBB7_3: // %if.end234; CHECK-GI-NEXT: ret235; CHECK-GI-NEXT: .LBB7_4: // %if.then3236; CHECK-GI-NEXT: tst x0, x1, lsl #62237; CHECK-GI-NEXT: b.mi .LBB7_3238; CHECK-GI-NEXT: // %bb.5: // %if.then4239; CHECK-GI-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill240; CHECK-GI-NEXT: .cfi_def_cfa_offset 16241; CHECK-GI-NEXT: .cfi_offset w30, -16242; CHECK-GI-NEXT: bl t243; CHECK-GI-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload244; CHECK-GI-NEXT: ret245 %and1 = and i64 %val1, %val2246 %tst1 = icmp slt i64 %and1, 0247 br i1 %tst1, label %if.then1, label %if.end248 249 250if.then1:251 %and2 = and i64 %val2, %val3252 %tst2 = icmp sge i64 %and2, 0253 br i1 %tst2, label %if.then2, label %if.end254 255 256if.then2:257 %shifted_op1 = shl i64 %val2, 63258 %shifted_and1 = and i64 %val1, %shifted_op1259 %tst3 = icmp slt i64 %shifted_and1, 0260 br i1 %tst3, label %if.then3, label %if.end261 262 263if.then3:264 %shifted_op2 = shl i64 %val2, 62265 %shifted_and2 = and i64 %val1, %shifted_op2266 %tst4 = icmp sge i64 %shifted_and2, 0267 br i1 %tst4, label %if.then4, label %if.end268 269 270if.then4:271 call void @t()272 br label %if.end273 274if.end:275 ret void276}277 278define void @test9(i64 %val1) {279; CHECK-LABEL: test9:280; CHECK: // %bb.0:281; CHECK-NEXT: tbnz x0, #63, .LBB8_2282; CHECK-NEXT: // %bb.1: // %if.end283; CHECK-NEXT: ret284; CHECK-NEXT: .LBB8_2: // %if.then285; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill286; CHECK-NEXT: .cfi_def_cfa_offset 16287; CHECK-NEXT: .cfi_offset w30, -16288; CHECK-NEXT: bl t289; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload290; CHECK-NEXT: ret291 %tst = icmp slt i64 %val1, 0292 br i1 %tst, label %if.then, label %if.end293 294 295if.then:296 call void @t()297 br label %if.end298 299if.end:300 ret void301}302 303define void @test10(i64 %val1) {304; CHECK-LABEL: test10:305; CHECK: // %bb.0:306; CHECK-NEXT: tbnz x0, #63, .LBB9_2307; CHECK-NEXT: // %bb.1: // %if.end308; CHECK-NEXT: ret309; CHECK-NEXT: .LBB9_2: // %if.then310; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill311; CHECK-NEXT: .cfi_def_cfa_offset 16312; CHECK-NEXT: .cfi_offset w30, -16313; CHECK-NEXT: bl t314; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload315; CHECK-NEXT: ret316 %tst = icmp slt i64 %val1, 0317 br i1 %tst, label %if.then, label %if.end318 319 320if.then:321 call void @t()322 br label %if.end323 324if.end:325 ret void326}327 328define void @test11(i64 %val1, ptr %ptr) {329; CHECK-LABEL: test11:330; CHECK: // %bb.0:331; CHECK-NEXT: ldr x8, [x1]332; CHECK-NEXT: tbnz x8, #63, .LBB10_2333; CHECK-NEXT: // %bb.1: // %if.end334; CHECK-NEXT: ret335; CHECK-NEXT: .LBB10_2: // %if.then336; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill337; CHECK-NEXT: .cfi_def_cfa_offset 16338; CHECK-NEXT: .cfi_offset w30, -16339; CHECK-NEXT: bl t340; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload341; CHECK-NEXT: ret342 343 344 %val = load i64, ptr %ptr345 %tst = icmp slt i64 %val, 0346 br i1 %tst, label %if.then, label %if.end347 348if.then:349 call void @t()350 br label %if.end351 352if.end:353 ret void354}355 356define void @test12(i64 %val1) {357; CHECK-LABEL: test12:358; CHECK: // %bb.0:359; CHECK-NEXT: tbnz x0, #63, .LBB11_2360; CHECK-NEXT: // %bb.1: // %if.end361; CHECK-NEXT: ret362; CHECK-NEXT: .LBB11_2: // %if.then363; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill364; CHECK-NEXT: .cfi_def_cfa_offset 16365; CHECK-NEXT: .cfi_offset w30, -16366; CHECK-NEXT: bl t367; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload368; CHECK-NEXT: ret369 %tst = icmp slt i64 %val1, 0370 br i1 %tst, label %if.then, label %if.end371 372 373if.then:374 call void @t()375 br label %if.end376 377if.end:378 ret void379}380 381define void @test13(i64 %val1, i64 %val2) {382; CHECK-LABEL: test13:383; CHECK: // %bb.0:384; CHECK-NEXT: orr x8, x0, x1385; CHECK-NEXT: tbnz x8, #63, .LBB12_2386; CHECK-NEXT: // %bb.1: // %if.end387; CHECK-NEXT: ret388; CHECK-NEXT: .LBB12_2: // %if.then389; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill390; CHECK-NEXT: .cfi_def_cfa_offset 16391; CHECK-NEXT: .cfi_offset w30, -16392; CHECK-NEXT: bl t393; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload394; CHECK-NEXT: ret395 %or = or i64 %val1, %val2396 %tst = icmp slt i64 %or, 0397 br i1 %tst, label %if.then, label %if.end398 399 400if.then:401 call void @t()402 br label %if.end403 404if.end:405 ret void406}407 408define void @test14(i1 %cond) {409; CHECK-LABEL: test14:410; CHECK: // %bb.0:411; CHECK-NEXT: tbnz w0, #0, .LBB13_2412; CHECK-NEXT: // %bb.1: // %if.then413; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill414; CHECK-NEXT: .cfi_def_cfa_offset 16415; CHECK-NEXT: .cfi_offset w30, -16416; CHECK-NEXT: bl t417; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload418; CHECK-NEXT: .LBB13_2: // %if.end419; CHECK-NEXT: ret420 br i1 %cond, label %if.end, label %if.then421 422 423if.then:424 call void @t()425 br label %if.end426 427if.end:428 ret void429}430 431define void @test15(i1 %cond) {432; CHECK-LABEL: test15:433; CHECK: // %bb.0:434; CHECK-NEXT: tbnz w0, #0, .LBB14_2435; CHECK-NEXT: // %bb.1: // %if.then436; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill437; CHECK-NEXT: .cfi_def_cfa_offset 16438; CHECK-NEXT: .cfi_offset w30, -16439; CHECK-NEXT: bl t440; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload441; CHECK-NEXT: .LBB14_2: // %if.end442; CHECK-NEXT: ret443 %cond1 = xor i1 %cond, -1444 br i1 %cond1, label %if.then, label %if.end445 446 447if.then:448 call void @t()449 br label %if.end450 451if.end:452 ret void453}454 455define void @test16(i64 %in) {456; CHECK-LABEL: test16:457; CHECK: // %bb.0:458; CHECK-NEXT: tbnz w0, #2, .LBB15_2459; CHECK-NEXT: // %bb.1: // %then460; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill461; CHECK-NEXT: .cfi_def_cfa_offset 16462; CHECK-NEXT: .cfi_offset w30, -16463; CHECK-NEXT: bl t464; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload465; CHECK-NEXT: .LBB15_2: // %end466; CHECK-NEXT: ret467 %shl = shl i64 %in, 3468 %and = and i64 %shl, 32469 %cond = icmp eq i64 %and, 0470 br i1 %cond, label %then, label %end471 472 473then:474 call void @t()475 br label %end476 477end:478 ret void479}480 481define void @test17(i64 %in) {482; CHECK-LABEL: test17:483; CHECK: // %bb.0:484; CHECK-NEXT: tbnz w0, #3, .LBB16_2485; CHECK-NEXT: // %bb.1: // %then486; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill487; CHECK-NEXT: .cfi_def_cfa_offset 16488; CHECK-NEXT: .cfi_offset w30, -16489; CHECK-NEXT: bl t490; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload491; CHECK-NEXT: .LBB16_2: // %end492; CHECK-NEXT: ret493 %shr = ashr i64 %in, 3494 %and = and i64 %shr, 1495 %cond = icmp eq i64 %and, 0496 br i1 %cond, label %then, label %end497 498 499then:500 call void @t()501 br label %end502 503end:504 ret void505}506 507define void @test18(i32 %in) {508; CHECK-LABEL: test18:509; CHECK: // %bb.0:510; CHECK-NEXT: tbnz w0, #31, .LBB17_2511; CHECK-NEXT: // %bb.1: // %then512; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill513; CHECK-NEXT: .cfi_def_cfa_offset 16514; CHECK-NEXT: .cfi_offset w30, -16515; CHECK-NEXT: bl t516; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload517; CHECK-NEXT: .LBB17_2: // %end518; CHECK-NEXT: ret519 %shr = ashr i32 %in, 2520 %cond = icmp sge i32 %shr, 0521 br i1 %cond, label %then, label %end522 523 524then:525 call void @t()526 br label %end527 528end:529 ret void530}531 532define void @test19(i64 %in) {533; CHECK-LABEL: test19:534; CHECK: // %bb.0:535; CHECK-NEXT: tbnz w0, #3, .LBB18_2536; CHECK-NEXT: // %bb.1: // %then537; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill538; CHECK-NEXT: .cfi_def_cfa_offset 16539; CHECK-NEXT: .cfi_offset w30, -16540; CHECK-NEXT: bl t541; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload542; CHECK-NEXT: .LBB18_2: // %end543; CHECK-NEXT: ret544 %shl = lshr i64 %in, 3545 %trunc = trunc i64 %shl to i32546 %and = and i32 %trunc, 1547 %cond = icmp eq i32 %and, 0548 br i1 %cond, label %then, label %end549 550 551then:552 call void @t()553 br label %end554 555end:556 ret void557}558 559define void @test20(i32 %in) nounwind {560; CHECK-LABEL: test20:561; CHECK: // %bb.0:562; CHECK-NEXT: tbnz w0, #2, .LBB19_2563; CHECK-NEXT: // %bb.1: // %then564; CHECK-NEXT: str x30, [sp, #-16]! // 8-byte Folded Spill565; CHECK-NEXT: bl t566; CHECK-NEXT: ldr x30, [sp], #16 // 8-byte Folded Reload567; CHECK-NEXT: .LBB19_2: // %end568; CHECK-NEXT: ret569 %shl = shl i32 %in, 3570 %zext = zext i32 %shl to i64571 %and = and i64 %zext, 32572 %cond = icmp eq i64 %and, 0573 br i1 %cond, label %then, label %end574 575 576then:577 call void @t()578 br label %end579 580end:581 ret void582}583 584define ptr @tbnz_wzr(i1 %cmp1.not.i, ptr %locflg) {585; CHECK-SD-LABEL: tbnz_wzr:586; CHECK-SD: // %bb.0: // %entry587; CHECK-SD-NEXT: tbz w0, #0, .LBB20_2588; CHECK-SD-NEXT: // %bb.1:589; CHECK-SD-NEXT: tbnz wzr, #0, .LBB20_3590; CHECK-SD-NEXT: b .LBB20_4591; CHECK-SD-NEXT: .LBB20_2: // %opnfil.exit.thread592; CHECK-SD-NEXT: mov w8, #1 // =0x1593; CHECK-SD-NEXT: str wzr, [x1]594; CHECK-SD-NEXT: tbz w8, #0, .LBB20_4595; CHECK-SD-NEXT: .LBB20_3: // %if.else25596; CHECK-SD-NEXT: str wzr, [x1]597; CHECK-SD-NEXT: .LBB20_4: // %common.ret598; CHECK-SD-NEXT: mov x0, xzr599; CHECK-SD-NEXT: ret600;601; CHECK-GI-LABEL: tbnz_wzr:602; CHECK-GI: // %bb.0: // %entry603; CHECK-GI-NEXT: mov w8, #0 // =0x0604; CHECK-GI-NEXT: tbz w0, #0, .LBB20_3605; CHECK-GI-NEXT: // %bb.1: // %if.end10606; CHECK-GI-NEXT: tbnz w8, #0, .LBB20_4607; CHECK-GI-NEXT: .LBB20_2: // %common.ret608; CHECK-GI-NEXT: mov x0, xzr609; CHECK-GI-NEXT: ret610; CHECK-GI-NEXT: .LBB20_3: // %opnfil.exit.thread611; CHECK-GI-NEXT: mov w8, #1 // =0x1612; CHECK-GI-NEXT: str wzr, [x1]613; CHECK-GI-NEXT: tbz w8, #0, .LBB20_2614; CHECK-GI-NEXT: .LBB20_4: // %if.else25615; CHECK-GI-NEXT: str wzr, [x1]616; CHECK-GI-NEXT: mov x0, xzr617; CHECK-GI-NEXT: ret618entry:619 br i1 %cmp1.not.i, label %if.end10, label %opnfil.exit.thread620 621opnfil.exit.thread: ; preds = %entry622 store i32 0, ptr %locflg, align 4623 br label %if.end10624 625if.end10: ; preds = %opnfil.exit.thread, %entry626 %cmp5 = phi i1 [ true, %opnfil.exit.thread ], [ false, %entry ]627 br i1 %cmp5, label %if.else25, label %if.then12628 629if.then12: ; preds = %if.end10630 %call20 = load i32, ptr null, align 4631 br label %if.end26632 633if.else25: ; preds = %if.end10634 store i32 0, ptr %locflg, align 4635 br label %if.end26636 637if.end26: ; preds = %if.else25, %if.then12638 br i1 %cmp5, label %common.ret, label %if.then28639 640common.ret: ; preds = %if.then28, %if.end26641 %common.ret.op = phi ptr [ null, %if.then28 ], [ null, %if.end26 ]642 ret ptr %common.ret.op643 644if.then28: ; preds = %if.end26645 %0 = load ptr, ptr null, align 8646 br label %common.ret647}648 649define ptr @tbz_wzr(i1 %cmp1.not.i, ptr %locflg) {650; CHECK-SD-LABEL: tbz_wzr:651; CHECK-SD: // %bb.0: // %entry652; CHECK-SD-NEXT: tbz w0, #0, .LBB21_2653; CHECK-SD-NEXT: // %bb.1:654; CHECK-SD-NEXT: mov w8, #1 // =0x1655; CHECK-SD-NEXT: tbnz w8, #0, .LBB21_3656; CHECK-SD-NEXT: b .LBB21_4657; CHECK-SD-NEXT: .LBB21_2: // %opnfil.exit.thread658; CHECK-SD-NEXT: str wzr, [x1]659; CHECK-SD-NEXT: tbz wzr, #0, .LBB21_4660; CHECK-SD-NEXT: .LBB21_3: // %if.else25661; CHECK-SD-NEXT: str wzr, [x1]662; CHECK-SD-NEXT: .LBB21_4: // %common.ret663; CHECK-SD-NEXT: mov x0, xzr664; CHECK-SD-NEXT: ret665;666; CHECK-GI-LABEL: tbz_wzr:667; CHECK-GI: // %bb.0: // %entry668; CHECK-GI-NEXT: mov w8, #1 // =0x1669; CHECK-GI-NEXT: tbz w0, #0, .LBB21_3670; CHECK-GI-NEXT: // %bb.1: // %if.end10671; CHECK-GI-NEXT: tbnz w8, #0, .LBB21_4672; CHECK-GI-NEXT: .LBB21_2: // %common.ret673; CHECK-GI-NEXT: mov x0, xzr674; CHECK-GI-NEXT: ret675; CHECK-GI-NEXT: .LBB21_3: // %opnfil.exit.thread676; CHECK-GI-NEXT: mov w8, #0 // =0x0677; CHECK-GI-NEXT: str wzr, [x1]678; CHECK-GI-NEXT: tbz w8, #0, .LBB21_2679; CHECK-GI-NEXT: .LBB21_4: // %if.else25680; CHECK-GI-NEXT: str wzr, [x1]681; CHECK-GI-NEXT: mov x0, xzr682; CHECK-GI-NEXT: ret683entry:684 br i1 %cmp1.not.i, label %if.end10, label %opnfil.exit.thread685 686opnfil.exit.thread: ; preds = %entry687 store i32 0, ptr %locflg, align 4688 br label %if.end10689 690if.end10: ; preds = %opnfil.exit.thread, %entry691 %cmp5 = phi i1 [ false, %opnfil.exit.thread ], [ true, %entry ]692 br i1 %cmp5, label %if.else25, label %if.then12693 694if.then12: ; preds = %if.end10695 %call20 = load i32, ptr null, align 4696 br label %if.end26697 698if.else25: ; preds = %if.end10699 store i32 0, ptr %locflg, align 4700 br label %if.end26701 702if.end26: ; preds = %if.else25, %if.then12703 br i1 %cmp5, label %common.ret, label %if.then28704 705common.ret: ; preds = %if.then28, %if.end26706 %common.ret.op = phi ptr [ null, %if.then28 ], [ null, %if.end26 ]707 ret ptr %common.ret.op708 709if.then28: ; preds = %if.end26710 %0 = load ptr, ptr null, align 8711 br label %common.ret712}713 714define ptr @cbnz_wzr(i1 %cmp1.not.i, ptr %locflg) {715; CHECK-SD-LABEL: cbnz_wzr:716; CHECK-SD: // %bb.0: // %entry717; CHECK-SD-NEXT: tbz w0, #0, .LBB22_2718; CHECK-SD-NEXT: // %bb.1:719; CHECK-SD-NEXT: cbnz wzr, .LBB22_3720; CHECK-SD-NEXT: b .LBB22_4721; CHECK-SD-NEXT: .LBB22_2: // %opnfil.exit.thread722; CHECK-SD-NEXT: mov w8, #10 // =0xa723; CHECK-SD-NEXT: str wzr, [x1]724; CHECK-SD-NEXT: cbz w8, .LBB22_4725; CHECK-SD-NEXT: .LBB22_3: // %if.else25726; CHECK-SD-NEXT: str wzr, [x1]727; CHECK-SD-NEXT: .LBB22_4: // %common.ret728; CHECK-SD-NEXT: mov x0, xzr729; CHECK-SD-NEXT: ret730;731; CHECK-GI-LABEL: cbnz_wzr:732; CHECK-GI: // %bb.0: // %entry733; CHECK-GI-NEXT: mov w8, wzr734; CHECK-GI-NEXT: tbnz w0, #0, .LBB22_2735; CHECK-GI-NEXT: // %bb.1: // %opnfil.exit.thread736; CHECK-GI-NEXT: mov w8, #10 // =0xa737; CHECK-GI-NEXT: str wzr, [x1]738; CHECK-GI-NEXT: .LBB22_2: // %if.end10739; CHECK-GI-NEXT: cbz w8, .LBB22_4740; CHECK-GI-NEXT: // %bb.3: // %if.else25741; CHECK-GI-NEXT: str wzr, [x1]742; CHECK-GI-NEXT: .LBB22_4: // %common.ret743; CHECK-GI-NEXT: mov x0, xzr744; CHECK-GI-NEXT: ret745entry:746 br i1 %cmp1.not.i, label %if.end10, label %opnfil.exit.thread747 748opnfil.exit.thread: ; preds = %entry749 store i32 0, ptr %locflg, align 4750 br label %if.end10751 752if.end10: ; preds = %opnfil.exit.thread, %entry753 %cmp5 = phi i32 [ 10, %opnfil.exit.thread ], [ 0, %entry ]754 %cmp5b = icmp ne i32 %cmp5, 0755 br i1 %cmp5b, label %if.else25, label %if.then12756 757if.then12: ; preds = %if.end10758 %call20 = load i32, ptr null, align 4759 br label %if.end26760 761if.else25: ; preds = %if.end10762 store i32 0, ptr %locflg, align 4763 br label %if.end26764 765if.end26: ; preds = %if.else25, %if.then12766 br i1 %cmp5b, label %common.ret, label %if.then28767 768common.ret: ; preds = %if.then28, %if.end26769 %common.ret.op = phi ptr [ null, %if.then28 ], [ null, %if.end26 ]770 ret ptr %common.ret.op771 772if.then28: ; preds = %if.end26773 %0 = load ptr, ptr null, align 8774 br label %common.ret775}776 777define ptr @cbz_wzr(i1 %cmp1.not.i, ptr %locflg) {778; CHECK-SD-LABEL: cbz_wzr:779; CHECK-SD: // %bb.0: // %entry780; CHECK-SD-NEXT: tbz w0, #0, .LBB23_2781; CHECK-SD-NEXT: // %bb.1:782; CHECK-SD-NEXT: mov w8, #10 // =0xa783; CHECK-SD-NEXT: cbnz w8, .LBB23_3784; CHECK-SD-NEXT: b .LBB23_4785; CHECK-SD-NEXT: .LBB23_2: // %opnfil.exit.thread786; CHECK-SD-NEXT: str wzr, [x1]787; CHECK-SD-NEXT: cbz wzr, .LBB23_4788; CHECK-SD-NEXT: .LBB23_3: // %if.else25789; CHECK-SD-NEXT: str wzr, [x1]790; CHECK-SD-NEXT: .LBB23_4: // %common.ret791; CHECK-SD-NEXT: mov x0, xzr792; CHECK-SD-NEXT: ret793;794; CHECK-GI-LABEL: cbz_wzr:795; CHECK-GI: // %bb.0: // %entry796; CHECK-GI-NEXT: mov w8, #10 // =0xa797; CHECK-GI-NEXT: tbnz w0, #0, .LBB23_2798; CHECK-GI-NEXT: // %bb.1: // %opnfil.exit.thread799; CHECK-GI-NEXT: mov w8, wzr800; CHECK-GI-NEXT: str wzr, [x1]801; CHECK-GI-NEXT: .LBB23_2: // %if.end10802; CHECK-GI-NEXT: cbz w8, .LBB23_4803; CHECK-GI-NEXT: // %bb.3: // %if.else25804; CHECK-GI-NEXT: str wzr, [x1]805; CHECK-GI-NEXT: .LBB23_4: // %common.ret806; CHECK-GI-NEXT: mov x0, xzr807; CHECK-GI-NEXT: ret808entry:809 br i1 %cmp1.not.i, label %if.end10, label %opnfil.exit.thread810 811opnfil.exit.thread: ; preds = %entry812 store i32 0, ptr %locflg, align 4813 br label %if.end10814 815if.end10: ; preds = %opnfil.exit.thread, %entry816 %cmp5 = phi i32 [ 0, %opnfil.exit.thread ], [ 10, %entry ]817 %cmp5b = icmp ne i32 %cmp5, 0818 br i1 %cmp5b, label %if.else25, label %if.then12819 820if.then12: ; preds = %if.end10821 %call20 = load i32, ptr null, align 4822 br label %if.end26823 824if.else25: ; preds = %if.end10825 store i32 0, ptr %locflg, align 4826 br label %if.end26827 828if.end26: ; preds = %if.else25, %if.then12829 br i1 %cmp5b, label %common.ret, label %if.then28830 831common.ret: ; preds = %if.then28, %if.end26832 %common.ret.op = phi ptr [ null, %if.then28 ], [ null, %if.end26 ]833 ret ptr %common.ret.op834 835if.then28: ; preds = %if.end26836 %0 = load ptr, ptr null, align 8837 br label %common.ret838}839 840define i1 @avifSequenceHeaderParse() {841; CHECK-SD-LABEL: avifSequenceHeaderParse:842; CHECK-SD: // %bb.0: // %entry843; CHECK-SD-NEXT: mov w8, #1 // =0x1844; CHECK-SD-NEXT: cbz w8, .LBB24_2845; CHECK-SD-NEXT: .LBB24_1: // %bb6846; CHECK-SD-NEXT: mov w0, wzr847; CHECK-SD-NEXT: ret848; CHECK-SD-NEXT: .LBB24_2: // %bb1849; CHECK-SD-NEXT: cbz w8, .LBB24_4850; CHECK-SD-NEXT: // %bb.3:851; CHECK-SD-NEXT: tbz xzr, #63, .LBB24_1852; CHECK-SD-NEXT: b .LBB24_5853; CHECK-SD-NEXT: .LBB24_4: // %bb2854; CHECK-SD-NEXT: mov w8, #1 // =0x1855; CHECK-SD-NEXT: tbz x8, #63, .LBB24_1856; CHECK-SD-NEXT: .LBB24_5: // %bb4857; CHECK-SD-NEXT: mov w8, #1 // =0x1858; CHECK-SD-NEXT: mov w0, wzr859; CHECK-SD-NEXT: ret860;861; CHECK-GI-LABEL: avifSequenceHeaderParse:862; CHECK-GI: // %bb.0: // %entry863; CHECK-GI-NEXT: mov w0, wzr864; CHECK-GI-NEXT: mov w8, #1 // =0x1865; CHECK-GI-NEXT: ret866entry:867 %a = icmp slt i64 0, 0868 br i1 %a, label %bb1, label %bb6869 870bb1: ; preds = %entry871 %b = icmp eq i32 1, 0872 br i1 %b, label %bb2, label %bb3873 874bb2: ; preds = %bb1875 %c = load i8, ptr null, align 1876 %d = zext i8 1 to i64877 %e = shl i64 %d, 0878 br label %bb3879 880bb3: ; preds = %bb2, %bb1881 %f = phi i64 [ %e, %bb2 ], [ 0, %bb1 ]882 %g = icmp slt i64 %f, 0883 br i1 %g, label %bb4, label %bb6884 885bb4: ; preds = %bb3886 %h = icmp eq i32 1, 0887 br i1 %h, label %bb5, label %bb7888 889bb5: ; preds = %bb4890 %i = load i8, ptr null, align 1891 %j = shl i64 0, 0892 br label %bb7893 894bb6: ; preds = %bb7, %bb3, %entry895 %k = phi i1 [ false, %bb7 ], [ false, %bb3 ], [ false, %entry ]896 ret i1 %k897 898bb7: ; preds = %bb5, %bb4899 %l = phi ptr [ inttoptr (i64 1 to ptr), %bb5 ], [ null, %bb4 ]900 %m = phi i64 [ %j, %bb5 ], [ 0, %bb4 ]901 %n = icmp ult ptr %l, null902 br label %bb6903}904