[llvm] r186845 - Fix an obvious typo in the loop vectorizer where the cost model uses the wrong variable. The variable BlockCost is ignored.
Nadav Rotem
nrotem at apple.com
Mon Jul 22 10:10:48 PDT 2013
Author: nadav
Date: Mon Jul 22 12:10:48 2013
New Revision: 186845
URL: http://llvm.org/viewvc/llvm-project?rev=186845&view=rev
Log:
Fix an obvious typo in the loop vectorizer where the cost model uses the wrong variable. The variable BlockCost is ignored.
We don't have tests for the effect of if-conversion loops because it requires a big test (that includes if-converted loops) and it is difficult to find and balance a loop to do the right thing.
Modified:
llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
Modified: llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp?rev=186845&r1=186844&r2=186845&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp (original)
+++ llvm/trunk/lib/Transforms/Vectorize/LoopVectorize.cpp Mon Jul 22 12:10:48 2013
@@ -4390,7 +4390,7 @@ unsigned LoopVectorizationCostModel::exp
continue;
unsigned C = getInstructionCost(it, VF);
- Cost += C;
+ BlockCost += C;
DEBUG(dbgs() << "LV: Found an estimated cost of "<< C <<" for VF " <<
VF << " For instruction: "<< *it << "\n");
}
@@ -4398,7 +4398,7 @@ unsigned LoopVectorizationCostModel::exp
// We assume that if-converted blocks have a 50% chance of being executed.
// When the code is scalar then some of the blocks are avoided due to CF.
// When the code is vectorized we execute all code paths.
- if (Legal->blockNeedsPredication(*bb) && VF == 1)
+ if (VF == 1 && Legal->blockNeedsPredication(*bb))
BlockCost /= 2;
Cost += BlockCost;
More information about the llvm-commits
mailing list