[PATCH] D27690: [LV] Don't vectorize when we have a static bound on trip count
Michael Kuperstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Dec 13 12:48:50 PST 2016
This revision was automatically updated to reflect the committed changes.
Closed by commit rL289583: [LV] Don't vectorize when we have a small static bound on trip count (authored by mkuper).
Changed prior to commit:
https://reviews.llvm.org/D27690?vs=81155&id=81285#toc
Repository:
rL LLVM
https://reviews.llvm.org/D27690
Files:
llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
llvm/trunk/test/Transforms/LoopVectorize/small-loop.ll
Index: llvm/trunk/test/Transforms/LoopVectorize/small-loop.ll
===================================================================
--- llvm/trunk/test/Transforms/LoopVectorize/small-loop.ll
+++ llvm/trunk/test/Transforms/LoopVectorize/small-loop.ll
@@ -30,3 +30,28 @@
ret void
}
+;CHECK-LABEL: @bound1(
+;CHECK-NOT: load <4 x i32>
+;CHECK: ret void
+define void @bound1(i32 %k) nounwind uwtable ssp {
+ br label %1
+
+; <label>:1 ; preds = %1, %0
+ %indvars.iv = phi i64 [ 0, %0 ], [ %indvars.iv.next, %1 ]
+ %2 = getelementptr inbounds [2048 x i32], [2048 x i32]* @b, i64 0, i64 %indvars.iv
+ %3 = load i32, i32* %2, align 4
+ %4 = getelementptr inbounds [2048 x i32], [2048 x i32]* @c, i64 0, i64 %indvars.iv
+ %5 = load i32, i32* %4, align 4
+ %6 = add nsw i32 %5, %3
+ %7 = getelementptr inbounds [2048 x i32], [2048 x i32]* @a, i64 0, i64 %indvars.iv
+ store i32 %6, i32* %7, align 4
+ %indvars.iv.next = add i64 %indvars.iv, 1
+ %lftr.wideiv = trunc i64 %indvars.iv.next to i32
+ %large = icmp sge i32 %lftr.wideiv, 8
+ %exitcond = icmp eq i32 %lftr.wideiv, %k
+ %realexit = or i1 %large, %exitcond
+ br i1 %realexit, label %8, label %1
+
+; <label>:8 ; preds = %1
+ ret void
+}
Index: llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
===================================================================
--- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -7382,8 +7382,8 @@
// Check the loop for a trip count threshold:
// do not vectorize loops with a tiny trip count.
- const unsigned TC = SE->getSmallConstantTripCount(L);
- if (TC > 0u && TC < TinyTripCountVectorThreshold) {
+ const unsigned MaxTC = SE->getSmallConstantMaxTripCount(L);
+ if (MaxTC > 0u && MaxTC < TinyTripCountVectorThreshold) {
DEBUG(dbgs() << "LV: Found a loop with a very small trip count. "
<< "This loop is not worth vectorizing.");
if (Hints.getForce() == LoopVectorizeHints::FK_Enabled)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D27690.81285.patch
Type: text/x-patch
Size: 2083 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161213/85fb4728/attachment.bin>
More information about the llvm-commits
mailing list