diff options
author | Adam Nemet <anemet@apple.com> | 2015-02-01 16:56:02 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2015-02-01 16:56:02 +0000 |
commit | 5985971fa57d0151db3b96b5c4318232b65d1a98 (patch) | |
tree | 0412376287f337e522c3b0b77c79ca161febe656 /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | |
parent | a2abc59dac427dbcef35be3597705bc4e71b9ad7 (diff) | |
download | bcm5719-llvm-5985971fa57d0151db3b96b5c4318232b65d1a98.tar.gz bcm5719-llvm-5985971fa57d0151db3b96b5c4318232b65d1a98.zip |
[LoopVectorize] Add accessors for Num{Stores,Loads,PredStores} in AccessAnalysis
These members are moving to LoopAccessAnalysis. The accessors help to hide
this.
NFC. This is part of the patchset that splits out the memory dependence logic
from LoopVectorizationLegality into a new class LoopAccessAnalysis.
LoopAccessAnalysis will be used by the new Loop Distribution pass.
llvm-svn: 227750
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorize.cpp')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 60dffd6a988..87d5a51079f 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -628,10 +628,6 @@ struct RuntimePointerCheck { /// induction variable and the different reduction variables. class LoopVectorizationLegality { public: - unsigned NumLoads; - unsigned NumStores; - unsigned NumPredStores; - LoopVectorizationLegality(Loop *L, ScalarEvolution *SE, const DataLayout *DL, DominatorTree *DT, TargetLibraryInfo *TLI, AliasAnalysis *AA, Function *F, @@ -854,6 +850,15 @@ public: bool isMaskRequired(const Instruction* I) { return (MaskedOp.count(I) != 0); } + unsigned getNumStores() const { + return NumStores; + } + unsigned getNumLoads() const { + return NumLoads; + } + unsigned getNumPredStores() const { + return NumPredStores; + } private: /// Check if a single basic block loop is vectorizable. /// At this point we know that this is a loop with a constant trip count @@ -908,6 +913,10 @@ private: VectorizationReport::emitAnalysis(Message, TheFunction, TheLoop); } + unsigned NumLoads; + unsigned NumStores; + unsigned NumPredStores; + /// The loop that we evaluate. Loop *TheLoop; /// Scev analysis. @@ -5449,7 +5458,7 @@ LoopVectorizationCostModel::selectVectorizationFactor(bool OptForSize) { return Factor; } - if (!EnableCondStoresVectorization && Legal->NumPredStores) { + if (!EnableCondStoresVectorization && Legal->getNumPredStores()) { emitAnalysis(VectorizationReport() << "store that is conditionally executed prevents vectorization"); DEBUG(dbgs() << "LV: No vectorization. There are conditional stores.\n"); @@ -5719,8 +5728,10 @@ LoopVectorizationCostModel::selectUnrollFactor(bool OptForSize, // Unroll until store/load ports (estimated by max unroll factor) are // saturated. - unsigned StoresUF = UF / (Legal->NumStores ? Legal->NumStores : 1); - unsigned LoadsUF = UF / (Legal->NumLoads ? Legal->NumLoads : 1); + unsigned NumStores = Legal->getNumStores(); + unsigned NumLoads = Legal->getNumLoads(); + unsigned StoresUF = UF / (NumStores ? NumStores : 1); + unsigned LoadsUF = UF / (NumLoads ? NumLoads : 1); // If we have a scalar reduction (vector reductions are already dealt with // by this point), we can increase the critical path length if the loop |