diff options
Diffstat (limited to 'llvm/test/Transforms/LoopUnroll')
12 files changed, 162 insertions, 87 deletions
diff --git a/llvm/test/Transforms/LoopUnroll/AArch64/runtime-loop.ll b/llvm/test/Transforms/LoopUnroll/AArch64/runtime-loop.ll index d3dc081fa6f..98c9819a63d 100644 --- a/llvm/test/Transforms/LoopUnroll/AArch64/runtime-loop.ll +++ b/llvm/test/Transforms/LoopUnroll/AArch64/runtime-loop.ll @@ -1,13 +1,21 @@ -; RUN: opt < %s -S -loop-unroll -mtriple aarch64 -mcpu=cortex-a57 | FileCheck %s +; RUN: opt < %s -S -loop-unroll -mtriple aarch64 -mcpu=cortex-a57 | FileCheck %s -check-prefix=EPILOG +; RUN: opt < %s -S -loop-unroll -mtriple aarch64 -mcpu=cortex-a57 -unroll-runtime-epilog=false | FileCheck %s -check-prefix=PROLOG ; Tests for unrolling loops with run-time trip counts -; CHECK: %xtraiter = and i32 %n -; CHECK: %lcmp.mod = icmp ne i32 %xtraiter, 0 -; CHECK: br i1 %lcmp.mod, label %for.body.prol, label %for.body.preheader.split +; EPILOG: %xtraiter = and i32 %n +; EPILOG: %lcmp.mod = icmp ne i32 %xtraiter, %n +; EPILOG: br i1 %lcmp.mod, label %for.body.preheader.new, label %for.end.loopexit.unr-lcssa -; CHECK: for.body.prol: -; CHECK: for.body: +; PROLOG: %xtraiter = and i32 %n +; PROLOG: %lcmp.mod = icmp ne i32 %xtraiter, 0 +; PROLOG: br i1 %lcmp.mod, label %for.body.prol.preheader, label %for.body.prol.loopexit + +; EPILOG: for.body: +; EPILOG: for.body.epil: + +; PROLOG: for.body.prol: +; PROLOG: for.body: define i32 @test(i32* nocapture %a, i32 %n) nounwind uwtable readonly { entry: diff --git a/llvm/test/Transforms/LoopUnroll/PowerPC/a2-unrolling.ll b/llvm/test/Transforms/LoopUnroll/PowerPC/a2-unrolling.ll index e9aa1acd5fe..bf2b9cf40dd 100644 --- a/llvm/test/Transforms/LoopUnroll/PowerPC/a2-unrolling.ll +++ b/llvm/test/Transforms/LoopUnroll/PowerPC/a2-unrolling.ll @@ -1,4 +1,5 @@ -; RUN: opt < %s -S -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 -loop-unroll | FileCheck %s +; RUN: opt < %s -S -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 -loop-unroll | FileCheck %s -check-prefix=EPILOG +; RUN: opt < %s -S -mtriple=powerpc64-unknown-linux-gnu -mcpu=a2 -loop-unroll -unroll-runtime-epilog=false | FileCheck %s -check-prefix=PROLOG define void @unroll_opt_for_size() nounwind optsize { entry: br label %loop @@ -13,11 +14,17 @@ exit: ret void } -; CHECK-LABEL: @unroll_opt_for_size -; CHECK: add -; CHECK-NEXT: add -; CHECK-NEXT: add -; CHECK: icmp +; EPILOG-LABEL: @unroll_opt_for_size +; EPILOG: add +; EPILOG-NEXT: add +; EPILOG-NEXT: add +; EPILOG: icmp + +; PROLOG-LABEL: @unroll_opt_for_size +; PROLOG: add +; PROLOG-NEXT: add +; PROLOG-NEXT: add +; PROLOG: icmp define i32 @test(i32* nocapture %a, i32 %n) nounwind uwtable readonly { entry: @@ -40,8 +47,13 @@ for.end: ; preds = %for.body, %entry ret i32 %sum.0.lcssa } -; CHECK-LABEL: @test -; CHECK: for.body.prol{{.*}}: -; CHECK: for.body: -; CHECK: br i1 %exitcond.7, label %for.end.loopexit{{.*}}, label %for.body +; EPILOG-LABEL: @test +; EPILOG: for.body: +; EPILOG: br i1 %niter.ncmp.7, label %for.end.loopexit{{.*}}, label %for.body +; EPILOG: for.body.epil{{.*}}: + +; PROLOG-LABEL: @test +; PROLOG: for.body.prol{{.*}}: +; PROLOG: for.body: +; PROLOG: br i1 %exitcond.7, label %for.end.loopexit{{.*}}, label %for.body diff --git a/llvm/test/Transforms/LoopUnroll/X86/mmx.ll b/llvm/test/Transforms/LoopUnroll/X86/mmx.ll index 2c4aa086e83..7f00545b71f 100644 --- a/llvm/test/Transforms/LoopUnroll/X86/mmx.ll +++ b/llvm/test/Transforms/LoopUnroll/X86/mmx.ll @@ -14,9 +14,9 @@ for.body: ; preds = %for.body, %entry exit: ; preds = %for.body %ret = phi x86_mmx [ undef, %for.body ] - ; CHECK: %[[ret_unr:.*]] = phi x86_mmx [ undef, - ; CHECK: %[[ret_ph:.*]] = phi x86_mmx [ undef, - ; CHECK: %[[ret:.*]] = phi x86_mmx [ %[[ret_unr]], {{.*}} ], [ %[[ret_ph]] + ; CHECK: %[[ret_ph:.*]] = phi x86_mmx [ undef, %entry + ; CHECK: %[[ret_ph1:.*]] = phi x86_mmx [ undef, + ; CHECK: %[[ret:.*]] = phi x86_mmx [ %[[ret_ph]], {{.*}} ], [ %[[ret_ph1]], ; CHECK: ret x86_mmx %[[ret]] ret x86_mmx %ret } diff --git a/llvm/test/Transforms/LoopUnroll/high-cost-trip-count-computation.ll b/llvm/test/Transforms/LoopUnroll/high-cost-trip-count-computation.ll index b4f7565c395..bdb8566e0df 100644 --- a/llvm/test/Transforms/LoopUnroll/high-cost-trip-count-computation.ll +++ b/llvm/test/Transforms/LoopUnroll/high-cost-trip-count-computation.ll @@ -34,7 +34,7 @@ define i32 @test2(i64* %loc, i64 %conv7) { ; CHECK: udiv ; CHECK: udiv ; CHECK-NOT: udiv -; CHECK-LABEL: for.body.prol +; CHECK-LABEL: for.body entry: %rem0 = load i64, i64* %loc, align 8 %ExpensiveComputation = udiv i64 %rem0, 42 ; <<< Extra computations are added to the trip-count expression diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop.ll index fea15b65d5a..efa242762f2 100644 --- a/llvm/test/Transforms/LoopUnroll/runtime-loop.ll +++ b/llvm/test/Transforms/LoopUnroll/runtime-loop.ll @@ -1,18 +1,30 @@ -; RUN: opt < %s -S -loop-unroll -unroll-runtime=true | FileCheck %s +; RUN: opt < %s -S -loop-unroll -unroll-runtime=true | FileCheck %s -check-prefix=EPILOG +; RUN: opt < %s -S -loop-unroll -unroll-runtime=true -unroll-runtime-epilog=false | FileCheck %s -check-prefix=PROLOG target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" ; Tests for unrolling loops with run-time trip counts -; CHECK: %xtraiter = and i32 %n -; CHECK: %lcmp.mod = icmp ne i32 %xtraiter, 0 -; CHECK: br i1 %lcmp.mod, label %for.body.prol, label %for.body.preheader.split +; EPILOG: %xtraiter = and i32 %n +; EPILOG: %lcmp.mod = icmp ne i32 %xtraiter, %n +; EPILOG: br i1 %lcmp.mod, label %for.body.preheader.new, label %for.end.loopexit.unr-lcssa + +; PROLOG: %xtraiter = and i32 %n +; PROLOG: %lcmp.mod = icmp ne i32 %xtraiter, 0 +; PROLOG: br i1 %lcmp.mod, label %for.body.prol.preheader, label %for.body.prol.loopexit + +; EPILOG: for.body.epil: +; EPILOG: %indvars.iv.epil = phi i64 [ %indvars.iv.next.epil, %for.body.epil ], [ %indvars.iv.unr, %for.body.epil.preheader ] +; EPILOG: %epil.iter.sub = sub i32 %epil.iter, 1 +; EPILOG: %epil.iter.cmp = icmp ne i32 %epil.iter.sub, 0 +; EPILOG: br i1 %epil.iter.cmp, label %for.body.epil, label %for.end.loopexit.epilog-lcssa, !llvm.loop !0 + +; PROLOG: for.body.prol: +; PROLOG: %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %for.body.prol ], [ 0, %for.body.prol.preheader ] +; PROLOG: %prol.iter.sub = sub i32 %prol.iter, 1 +; PROLOG: %prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0 +; PROLOG: br i1 %prol.iter.cmp, label %for.body.prol, label %for.body.prol.loopexit, !llvm.loop !0 -; CHECK: for.body.prol: -; CHECK: %indvars.iv.prol = phi i64 [ %indvars.iv.next.prol, %for.body.prol ], [ 0, %for.body.preheader ] -; CHECK: %prol.iter.sub = sub i32 %prol.iter, 1 -; CHECK: %prol.iter.cmp = icmp ne i32 %prol.iter.sub, 0 -; CHECK: br i1 %prol.iter.cmp, label %for.body.prol, label %for.body.preheader.split, !llvm.loop !0 define i32 @test(i32* nocapture %a, i32 %n) nounwind uwtable readonly { entry: @@ -39,8 +51,11 @@ for.end: ; preds = %for.body, %entry ; Still try to completely unroll loops with compile-time trip counts ; even if the -unroll-runtime is specified -; CHECK: for.body: -; CHECK-NOT: for.body.prol: +; EPILOG: for.body: +; EPILOG-NOT: for.body.epil: + +; PROLOG: for.body: +; PROLOG-NOT: for.body.prol: define i32 @test1(i32* nocapture %a) nounwind uwtable readonly { entry: @@ -64,7 +79,8 @@ for.end: ; preds = %for.body ; This is test 2007-05-09-UnknownTripCount.ll which can be unrolled now ; if the -unroll-runtime option is turned on -; CHECK: bb72.2: +; EPILOG: bb72.2: +; PROLOG: bb72.2: define void @foo(i32 %trips) { entry: @@ -86,8 +102,11 @@ cond_true138: ; Test run-time unrolling for a loop that counts down by -2. -; CHECK: for.body.prol: -; CHECK: br i1 %prol.iter.cmp, label %for.body.prol, label %for.body.preheader.split +; EPILOG: for.body.epil: +; EPILOG: br i1 %epil.iter.cmp, label %for.body.epil, label %for.cond.for.end_crit_edge.epilog-lcssa + +; PROLOG: for.body.prol: +; PROLOG: br i1 %prol.iter.cmp, label %for.body.prol, label %for.body.prol.loopexit define zeroext i16 @down(i16* nocapture %p, i32 %len) nounwind uwtable readonly { entry: @@ -116,8 +135,11 @@ for.end: ; preds = %for.cond.for.end_cr } ; Test run-time unrolling disable metadata. -; CHECK: for.body: -; CHECK-NOT: for.body.prol: +; EPILOG: for.body: +; EPILOG-NOT: for.body.epil: + +; PROLOG: for.body: +; PROLOG-NOT: for.body.prol: define zeroext i16 @test2(i16* nocapture %p, i32 %len) nounwind uwtable readonly { entry: @@ -148,6 +170,8 @@ for.end: ; preds = %for.cond.for.end_cr !0 = distinct !{!0, !1} !1 = !{!"llvm.loop.unroll.runtime.disable"} -; CHECK: !0 = distinct !{!0, !1} -; CHECK: !1 = !{!"llvm.loop.unroll.disable"} +; EPILOG: !0 = distinct !{!0, !1} +; EPILOG: !1 = !{!"llvm.loop.unroll.disable"} +; PROLOG: !0 = distinct !{!0, !1} +; PROLOG: !1 = !{!"llvm.loop.unroll.disable"} diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll index dcf159a09a1..b8ab3ca60c1 100644 --- a/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll +++ b/llvm/test/Transforms/LoopUnroll/runtime-loop1.ll @@ -1,19 +1,35 @@ -; RUN: opt < %s -S -loop-unroll -unroll-runtime -unroll-count=2 | FileCheck %s +; RUN: opt < %s -S -loop-unroll -unroll-runtime -unroll-count=2 | FileCheck %s -check-prefix=EPILOG +; RUN: opt < %s -S -loop-unroll -unroll-runtime -unroll-count=2 -unroll-runtime-epilog=false | FileCheck %s -check-prefix=PROLOG ; This tests that setting the unroll count works -; CHECK: for.body.preheader: -; CHECK: br {{.*}} label %for.body.prol, label %for.body.preheader.split, !dbg [[PH_LOC:![0-9]+]] -; CHECK: for.body.prol: -; CHECK: br label %for.body.preheader.split, !dbg [[BODY_LOC:![0-9]+]] -; CHECK: for.body.preheader.split: -; CHECK: br {{.*}} label %for.end.loopexit, label %for.body.preheader.split.split, !dbg [[PH_LOC]] -; CHECK: for.body: -; CHECK: br i1 %exitcond.1, label %for.end.loopexit.unr-lcssa, label %for.body, !dbg [[BODY_LOC]] -; CHECK-NOT: br i1 %exitcond.4, label %for.end.loopexit{{.*}}, label %for.body - -; CHECK-DAG: [[PH_LOC]] = !DILocation(line: 101, column: 1, scope: !{{.*}}) -; CHECK-DAG: [[BODY_LOC]] = !DILocation(line: 102, column: 1, scope: !{{.*}}) + +; EPILOG: for.body.preheader: +; EPILOG: br i1 %lcmp.mod, label %for.body.preheader.new, label %for.end.loopexit.unr-lcssa, !dbg [[PH_LOC:![0-9]+]] +; EPILOG: for.body: +; EPILOG: br i1 %niter.ncmp.1, label %for.end.loopexit.unr-lcssa.loopexit, label %for.body, !dbg [[BODY_LOC:![0-9]+]] +; EPILOG-NOT: br i1 %niter.ncmp.2, label %for.end.loopexit{{.*}}, label %for.body +; EPILOG: for.body.epil.preheader: +; EPILOG: br label %for.body.epil, !dbg [[EXIT_LOC:![0-9]+]] +; EPILOG: for.body.epil: +; EPILOG: br label %for.end.loopexit.epilog-lcssa, !dbg [[BODY_LOC:![0-9]+]] + +; EPILOG-DAG: [[PH_LOC]] = !DILocation(line: 101, column: 1, scope: !{{.*}}) +; EPILOG-DAG: [[BODY_LOC]] = !DILocation(line: 102, column: 1, scope: !{{.*}}) +; EPILOG-DAG: [[EXIT_LOC]] = !DILocation(line: 103, column: 1, scope: !{{.*}}) + +; PROLOG: for.body.preheader: +; PROLOG: br {{.*}} label %for.body.prol.preheader, label %for.body.prol.loopexit, !dbg [[PH_LOC:![0-9]+]] +; PROLOG: for.body.prol: +; PROLOG: br label %for.body.prol.loopexit, !dbg [[BODY_LOC:![0-9]+]] +; PROLOG: for.body.prol.loopexit: +; PROLOG: br {{.*}} label %for.end.loopexit, label %for.body.preheader.new, !dbg [[PH_LOC]] +; PROLOG: for.body: +; PROLOG: br i1 %exitcond.1, label %for.end.loopexit.unr-lcssa, label %for.body, !dbg [[BODY_LOC]] +; PROLOG-NOT: br i1 %exitcond.4, label %for.end.loopexit{{.*}}, label %for.body + +; PROLOG-DAG: [[PH_LOC]] = !DILocation(line: 101, column: 1, scope: !{{.*}}) +; PROLOG-DAG: [[BODY_LOC]] = !DILocation(line: 102, column: 1, scope: !{{.*}}) define i32 @test(i32* nocapture %a, i32 %n) nounwind uwtable readonly !dbg !6 { entry: diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll index 7c6bb969055..63b386c08d0 100644 --- a/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll +++ b/llvm/test/Transforms/LoopUnroll/runtime-loop2.ll @@ -1,12 +1,18 @@ -; RUN: opt < %s -S -loop-unroll -unroll-threshold=25 -unroll-runtime -unroll-count=8 | FileCheck %s +; RUN: opt < %s -S -loop-unroll -unroll-threshold=25 -unroll-runtime -unroll-count=8 | FileCheck %s -check-prefix=EPILOG +; RUN: opt < %s -S -loop-unroll -unroll-threshold=25 -unroll-runtime -unroll-runtime-epilog=false | FileCheck %s -check-prefix=PROLOG ; Choose a smaller, power-of-two, unroll count if the loop is too large. ; This test makes sure we're not unrolling 'odd' counts -; CHECK: for.body.prol: -; CHECK: for.body: -; CHECK: br i1 %exitcond.3, label %for.end.loopexit{{.*}}, label %for.body -; CHECK-NOT: br i1 %exitcond.4, label %for.end.loopexit{{.*}}, label %for.body +; EPILOG: for.body: +; EPILOG: br i1 %niter.ncmp.3, label %for.end.loopexit.unr-lcssa.loopexit{{.*}}, label %for.body +; EPILOG-NOT: br i1 %niter.ncmp.4, label %for.end.loopexit.unr-lcssa.loopexit{{.*}}, label %for.body +; EPILOG: for.body.epil: + +; PROLOG: for.body.prol: +; PROLOG: for.body: +; PROLOG: br i1 %exitcond.3, label %for.end.loopexit{{.*}}, label %for.body +; PROLOG-NOT: br i1 %exitcond.4, label %for.end.loopexit{{.*}}, label %for.body define i32 @test(i32* nocapture %a, i32 %n) nounwind uwtable readonly { entry: diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop4.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop4.ll index 5014c739e4c..8f1589134f7 100644 --- a/llvm/test/Transforms/LoopUnroll/runtime-loop4.ll +++ b/llvm/test/Transforms/LoopUnroll/runtime-loop4.ll @@ -1,13 +1,21 @@ -; RUN: opt < %s -S -O2 -unroll-runtime=true | FileCheck %s +; RUN: opt < %s -S -O2 -unroll-runtime=true | FileCheck %s -check-prefix=EPILOG +; RUN: opt < %s -S -O2 -unroll-runtime=true -unroll-runtime-epilog=false | FileCheck %s -check-prefix=PROLOG ; Check runtime unrolling prologue can be promoted by LICM pass. -; CHECK: entry: -; CHECK: %xtraiter -; CHECK: %lcmp.mod -; CHECK: loop1: -; CHECK: br i1 %lcmp.mod -; CHECK: loop2.prol: +; EPILOG: entry: +; EPILOG: %xtraiter +; EPILOG: %lcmp.mod +; EPILOG: loop1: +; EPILOG: br i1 %lcmp.mod +; EPILOG: loop2.epil: + +; PROLOG: entry: +; PROLOG: %xtraiter +; PROLOG: %lcmp.mod +; PROLOG: loop1: +; PROLOG: br i1 %lcmp.mod +; PROLOG: loop2.prol: define void @unroll(i32 %iter, i32* %addr1, i32* %addr2) nounwind { entry: diff --git a/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll b/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll index e8d51775ce1..78a3eeb1a37 100644 --- a/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll +++ b/llvm/test/Transforms/LoopUnroll/runtime-loop5.ll @@ -11,9 +11,6 @@ entry: %cmp1 = icmp eq i3 %n, 0 br i1 %cmp1, label %for.end, label %for.body -; UNROLL-16-NOT: for.body.prol: -; UNROLL-4: for.body.prol: - for.body: ; preds = %for.body, %entry ; UNROLL-16-LABEL: for.body: ; UNROLL-4-LABEL: for.body: @@ -39,6 +36,10 @@ for.body: ; preds = %for.body, %entry ; UNROLL-16-LABEL: for.end ; UNROLL-4-LABEL: for.end + +; UNROLL-16-NOT: for.body.epil: +; UNROLL-4: for.body.epil: + for.end: ; preds = %for.body, %entry %sum.0.lcssa = phi i3 [ 0, %entry ], [ %add, %for.body ] ret i3 %sum.0.lcssa diff --git a/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll b/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll index 052077cdd5d..5c250933af5 100644 --- a/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll +++ b/llvm/test/Transforms/LoopUnroll/tripcount-overflow.ll @@ -13,13 +13,13 @@ target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" ; CHECK: entry: ; CHECK-NEXT: %0 = add i32 %N, 1 ; CHECK-NEXT: %xtraiter = and i32 %0, 1 -; CHECK-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, 0 -; CHECK-NEXT: br i1 %lcmp.mod, label %while.body.prol, label %entry.split +; CHECK-NEXT: %lcmp.mod = icmp ne i32 %xtraiter, %0 +; CHECK-NEXT: br i1 %lcmp.mod, label %entry.new, label %while.end.unr-lcssa -; CHECK: while.body.prol: -; CHECK: br label %entry.split +; CHECK: while.body.epil: +; CHECK: br label %while.end.epilog-lcssa -; CHECK: entry.split: +; CHECK: while.end.epilog-lcssa: ; Function Attrs: nounwind readnone ssp uwtable define i32 @foo(i32 %N) { diff --git a/llvm/test/Transforms/LoopUnroll/unroll-cleanup.ll b/llvm/test/Transforms/LoopUnroll/unroll-cleanup.ll index 1e42203876e..163a469661c 100644 --- a/llvm/test/Transforms/LoopUnroll/unroll-cleanup.ll +++ b/llvm/test/Transforms/LoopUnroll/unroll-cleanup.ll @@ -4,14 +4,14 @@ ; RUN: opt < %s -O2 -S | FileCheck %s ; After loop unroll: -; %dec18 = add nsw i32 %dec18.in, -1 +; %niter.nsub = add nsw i32 %niter, -1 ; ... -; %dec18.1 = add nsw i32 %dec18, -1 +; %niter.nsub.1 = add nsw i32 %niter.nsub, -1 ; should be merged to: -; %dec18.1 = add nsw i32 %dec18.in, -2 +; %dec18.1 = add nsw i32 %niter, -2 ; ; CHECK-LABEL: @_Z3fn1v( -; CHECK: %dec18.1 = add nsw i32 %dec18.in, -2 +; CHECK: %niter.nsub.1 = add i32 %niter, -2 ; ModuleID = '<stdin>' target triple = "x86_64-unknown-linux-gnu" diff --git a/llvm/test/Transforms/LoopUnroll/unroll-pragmas.ll b/llvm/test/Transforms/LoopUnroll/unroll-pragmas.ll index 2843e627b3c..88f32c92d69 100644 --- a/llvm/test/Transforms/LoopUnroll/unroll-pragmas.ll +++ b/llvm/test/Transforms/LoopUnroll/unroll-pragmas.ll @@ -171,10 +171,6 @@ for.end: ; preds = %for.body, %entry ; should be duplicated (original and 4x unrolled). ; ; CHECK-LABEL: @runtime_loop_with_count4( -; CHECK: for.body.prol: -; CHECK: store -; CHECK-NOT: store -; CHECK: br i1 ; CHECK: for.body ; CHECK: store ; CHECK: store @@ -182,6 +178,10 @@ for.end: ; preds = %for.body, %entry ; CHECK: store ; CHECK-NOT: store ; CHECK: br i1 +; CHECK: for.body.epil: +; CHECK: store +; CHECK-NOT: store +; CHECK: br i1 define void @runtime_loop_with_count4(i32* nocapture %a, i32 %b) { entry: %cmp3 = icmp sgt i32 %b, 0 @@ -287,10 +287,6 @@ for.end: ; preds = %for.body ; (original and 8x). ; ; CHECK-LABEL: @runtime_loop_with_enable( -; CHECK: for.body.prol: -; CHECK: store -; CHECK-NOT: store -; CHECK: br i1 ; CHECK: for.body: ; CHECK: store i32 ; CHECK: store i32 @@ -302,6 +298,10 @@ for.end: ; preds = %for.body ; CHECK: store i32 ; CHECK-NOT: store i32 ; CHECK: br i1 +; CHECK: for.body.epil: +; CHECK: store +; CHECK-NOT: store +; CHECK: br i1 define void @runtime_loop_with_enable(i32* nocapture %a, i32 %b) { entry: %cmp3 = icmp sgt i32 %b, 0 @@ -328,16 +328,16 @@ for.end: ; preds = %for.body, %entry ; should be duplicated (original and 3x unrolled). ; ; CHECK-LABEL: @runtime_loop_with_count3( -; CHECK: for.body.prol: -; CHECK: store -; CHECK-NOT: store -; CHECK: br i1 ; CHECK: for.body ; CHECK: store ; CHECK: store ; CHECK: store ; CHECK-NOT: store ; CHECK: br i1 +; CHECK: for.body.epil: +; CHECK: store +; CHECK-NOT: store +; CHECK: br i1 define void @runtime_loop_with_count3(i32* nocapture %a, i32 %b) { entry: %cmp3 = icmp sgt i32 %b, 0 |