diff options
author | Nadav Rotem <nrotem@apple.com> | 2013-07-22 17:10:48 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2013-07-22 17:10:48 +0000 |
commit | b987c405481336aefdea61ee1df8f5d8ffa143cc (patch) | |
tree | 02a61a8fc2899a2767387e9fe0875840f34e9d89 /lib/Transforms/Vectorize | |
parent | 6303ef1fb7bba4e6c6823a6732019e0996efe575 (diff) | |
download | external_llvm-b987c405481336aefdea61ee1df8f5d8ffa143cc.zip external_llvm-b987c405481336aefdea61ee1df8f5d8ffa143cc.tar.gz external_llvm-b987c405481336aefdea61ee1df8f5d8ffa143cc.tar.bz2 |
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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@186845 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Vectorize')
-rw-r--r-- | lib/Transforms/Vectorize/LoopVectorize.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/Transforms/Vectorize/LoopVectorize.cpp b/lib/Transforms/Vectorize/LoopVectorize.cpp index 4f6ab06..46a63c2 100644 --- a/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -4390,7 +4390,7 @@ unsigned LoopVectorizationCostModel::expectedCost(unsigned VF) { 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::expectedCost(unsigned VF) { // 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; |