209 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=hexagon -O3 -hexagon-instsimplify=0 < %s | FileCheck %s3 4define void @f0(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {5; CHECK-LABEL: f0:6; CHECK: // %bb.0: // %b07; CHECK-NEXT: {8; CHECK-NEXT: loop0(.LBB0_1,#3)9; CHECK-NEXT: }10; CHECK-NEXT: .p2align 411; CHECK-NEXT: .LBB0_1: // Block address taken12; CHECK-NEXT: // %b213; CHECK-NEXT: // =>This Inner Loop Header: Depth=114; CHECK-NEXT: {15; CHECK-NEXT: nop16; CHECK-NEXT: nop17; CHECK-NEXT: } :endloop018; CHECK-NEXT: // %bb.2: // %b319; CHECK-NEXT: {20; CHECK-NEXT: jumpr r3121; CHECK-NEXT: }22b0:23 br label %b124 25b1: ; preds = %b026 br label %b227 28b2: ; preds = %b2, %b129 %v0 = phi i32 [ 0, %b1 ], [ %v1, %b2 ]30 %v1 = add nsw i32 %v0, 131 %v2 = icmp slt i32 %v1, 332 br i1 %v2, label %b2, label %b333 34b3: ; preds = %b235 ret void36}37 38define void @f1(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {39; CHECK-LABEL: f1:40; CHECK: // %bb.0: // %b041; CHECK-NEXT: {42; CHECK-NEXT: loop0(.LBB1_1,#2)43; CHECK-NEXT: }44; CHECK-NEXT: .p2align 445; CHECK-NEXT: .LBB1_1: // Block address taken46; CHECK-NEXT: // %b247; CHECK-NEXT: // =>This Inner Loop Header: Depth=148; CHECK-NEXT: {49; CHECK-NEXT: nop50; CHECK-NEXT: nop51; CHECK-NEXT: } :endloop052; CHECK-NEXT: // %bb.2: // %b353; CHECK-NEXT: {54; CHECK-NEXT: jumpr r3155; CHECK-NEXT: }56b0:57 br label %b158 59b1: ; preds = %b060 br label %b261 62b2: ; preds = %b2, %b163 %v0 = phi i32 [ 0, %b1 ], [ %v1, %b2 ]64 %v1 = add nsw i32 %v0, 265 %v2 = icmp slt i32 %v1, 366 br i1 %v2, label %b2, label %b367 68b3: ; preds = %b269 ret void70}71 72define void @f2(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {73; CHECK-LABEL: f2:74; CHECK: // %bb.0: // %b075; CHECK-NEXT: {76; CHECK-NEXT: loop0(.LBB2_1,#1)77; CHECK-NEXT: }78; CHECK-NEXT: .p2align 479; CHECK-NEXT: .LBB2_1: // Block address taken80; CHECK-NEXT: // %b281; CHECK-NEXT: // =>This Inner Loop Header: Depth=182; CHECK-NEXT: {83; CHECK-NEXT: nop84; CHECK-NEXT: nop85; CHECK-NEXT: } :endloop086; CHECK-NEXT: // %bb.2: // %b387; CHECK-NEXT: {88; CHECK-NEXT: jumpr r3189; CHECK-NEXT: }90b0:91 br label %b192 93b1: ; preds = %b094 br label %b295 96b2: ; preds = %b2, %b197 %v0 = phi i32 [ 0, %b1 ], [ %v1, %b2 ]98 %v1 = add nsw i32 %v0, 399 %v2 = icmp slt i32 %v1, 3100 br i1 %v2, label %b2, label %b3101 102b3: ; preds = %b2103 ret void104}105 106define void @f3(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {107; CHECK-LABEL: f3:108; CHECK: // %bb.0: // %b0109; CHECK-NEXT: {110; CHECK-NEXT: loop0(.LBB3_1,#4)111; CHECK-NEXT: }112; CHECK-NEXT: .p2align 4113; CHECK-NEXT: .LBB3_1: // Block address taken114; CHECK-NEXT: // %b2115; CHECK-NEXT: // =>This Inner Loop Header: Depth=1116; CHECK-NEXT: {117; CHECK-NEXT: nop118; CHECK-NEXT: nop119; CHECK-NEXT: } :endloop0120; CHECK-NEXT: // %bb.2: // %b3121; CHECK-NEXT: {122; CHECK-NEXT: jumpr r31123; CHECK-NEXT: }124b0:125 br label %b1126 127b1: ; preds = %b0128 br label %b2129 130b2: ; preds = %b2, %b1131 %v0 = phi i32 [ 0, %b1 ], [ %v1, %b2 ]132 %v1 = add nsw i32 %v0, 1133 %v2 = icmp sle i32 %v1, 3134 br i1 %v2, label %b2, label %b3135 136b3: ; preds = %b2137 ret void138}139 140define void @f4(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {141; CHECK-LABEL: f4:142; CHECK: // %bb.0: // %b0143; CHECK-NEXT: {144; CHECK-NEXT: loop0(.LBB4_1,#2)145; CHECK-NEXT: }146; CHECK-NEXT: .p2align 4147; CHECK-NEXT: .LBB4_1: // Block address taken148; CHECK-NEXT: // %b2149; CHECK-NEXT: // =>This Inner Loop Header: Depth=1150; CHECK-NEXT: {151; CHECK-NEXT: nop152; CHECK-NEXT: nop153; CHECK-NEXT: } :endloop0154; CHECK-NEXT: // %bb.2: // %b3155; CHECK-NEXT: {156; CHECK-NEXT: jumpr r31157; CHECK-NEXT: }158b0:159 br label %b1160 161b1: ; preds = %b0162 br label %b2163 164b2: ; preds = %b2, %b1165 %v0 = phi i32 [ 0, %b1 ], [ %v1, %b2 ]166 %v1 = add nsw i32 %v0, 2167 %v2 = icmp sle i32 %v1, 3168 br i1 %v2, label %b2, label %b3169 170b3: ; preds = %b2171 ret void172}173 174define void @f5(ptr nocapture %a0, i32 %a1, i32 %a2) #0 {175; CHECK-LABEL: f5:176; CHECK: // %bb.0: // %b0177; CHECK-NEXT: {178; CHECK-NEXT: loop0(.LBB5_1,#2)179; CHECK-NEXT: }180; CHECK-NEXT: .p2align 4181; CHECK-NEXT: .LBB5_1: // Block address taken182; CHECK-NEXT: // %b2183; CHECK-NEXT: // =>This Inner Loop Header: Depth=1184; CHECK-NEXT: {185; CHECK-NEXT: nop186; CHECK-NEXT: nop187; CHECK-NEXT: } :endloop0188; CHECK-NEXT: // %bb.2: // %b3189; CHECK-NEXT: {190; CHECK-NEXT: jumpr r31191; CHECK-NEXT: }192b0:193 br label %b1194 195b1: ; preds = %b0196 br label %b2197 198b2: ; preds = %b2, %b1199 %v0 = phi i32 [ 0, %b1 ], [ %v1, %b2 ]200 %v1 = add nsw i32 %v0, 3201 %v2 = icmp sle i32 %v1, 3202 br i1 %v2, label %b2, label %b3203 204b3: ; preds = %b2205 ret void206}207 208attributes #0 = { nounwind }209