From: Michael Kuperstein Date: Tue, 13 Dec 2016 20:38:18 +0000 (+0000) Subject: [LV] Don't vectorize when we have a small static bound on trip count X-Git-Tag: llvmorg-4.0.0-rc1~2193 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3d23d4a2343a59cfa6977d8dc12c626b7b97e20e;p=platform%2Fupstream%2Fllvm.git [LV] Don't vectorize when we have a small static bound on trip count We currently check if the exact trip count is known and is smaller than the "tiny loop" bound. We should be checking the maximum bound on the trip count instead. Differential Revision: https://reviews.llvm.org/D27690 llvm-svn: 289583 --- diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index a7f2005..33f269d 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -7382,8 +7382,8 @@ bool LoopVectorizePass::processLoop(Loop *L) { // 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) diff --git a/llvm/test/Transforms/LoopVectorize/small-loop.ll b/llvm/test/Transforms/LoopVectorize/small-loop.ll index 01bf54b..9a5dc4a 100644 --- a/llvm/test/Transforms/LoopVectorize/small-loop.ll +++ b/llvm/test/Transforms/LoopVectorize/small-loop.ll @@ -30,3 +30,28 @@ define void @example1() nounwind uwtable ssp { 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 + +;