diff options
author | Adam Nemet <anemet@apple.com> | 2016-06-15 15:49:46 +0000 |
---|---|---|
committer | Adam Nemet <anemet@apple.com> | 2016-06-15 15:49:46 +0000 |
commit | 82b9d2a72c2a774cd308e15275903bff5ad53eba (patch) | |
tree | f8285bbb4f5c06d27e6bfb95a7d43512b41d9c59 /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | |
parent | 51a9cc9ce7bbdce7e71b609c4cd2b7f5f6741b4b (diff) | |
download | bcm5719-llvm-82b9d2a72c2a774cd308e15275903bff5ad53eba.tar.gz bcm5719-llvm-82b9d2a72c2a774cd308e15275903bff5ad53eba.zip |
[LV] Add getter function for LoopVectorizationLegality::Strides. NFC
This should help moving Strides to LAA later.
llvm-svn: 272796
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorize.cpp')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 2b2467746f1..a5eedc9ff05 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -1448,6 +1448,8 @@ private: emitAnalysisDiag(TheFunction, TheLoop, *Hints, Message); } + ValueToValueMap &getSymbolicStrides() { return SymbolicStrides; } + unsigned NumPredStores; /// The loop that we evaluate. @@ -1508,7 +1510,7 @@ private: /// Used to emit an analysis of any legality issues. LoopVectorizeHints *Hints; - ValueToValueMap Strides; + ValueToValueMap SymbolicStrides; SmallPtrSet<Value *, 8> StrideSet; /// While vectorizing these instructions we have to generate a @@ -2220,7 +2222,7 @@ int LoopVectorizationLegality::isConsecutivePtr(Value *Ptr) { // We can emit wide load/stores only if the last non-zero index is the // induction variable. const SCEV *Last = nullptr; - if (!Strides.count(Gep)) + if (!getSymbolicStrides().count(Gep)) Last = PSE.getSCEV(Gep->getOperand(InductionOperand)); else { // Because of the multiplication by a stride we can have a s/zext cast. @@ -2232,7 +2234,7 @@ int LoopVectorizationLegality::isConsecutivePtr(Value *Ptr) { // %idxprom = zext i32 %mul to i64 << Safe cast. // %arrayidx = getelementptr inbounds i32* %B, i64 %idxprom // - Last = replaceSymbolicStrideSCEV(PSE, Strides, + Last = replaceSymbolicStrideSCEV(PSE, getSymbolicStrides(), Gep->getOperand(InductionOperand), Gep); if (const SCEVCastExpr *C = dyn_cast<SCEVCastExpr>(Last)) Last = @@ -4663,7 +4665,7 @@ bool LoopVectorizationLegality::canVectorize() { // Analyze interleaved memory accesses. if (UseInterleaved) - InterleaveInfo.analyzeInterleaving(Strides); + InterleaveInfo.analyzeInterleaving(getSymbolicStrides()); unsigned SCEVThreshold = VectorizeSCEVCheckThreshold; if (Hints->getForce() == LoopVectorizeHints::FK_Enabled) @@ -4952,7 +4954,7 @@ void LoopVectorizationLegality::collectStridedAccess(Value *MemAccess) { DEBUG(dbgs() << "LV: Found a strided access that we can version"); DEBUG(dbgs() << " Ptr: " << *Ptr << " Stride: " << *Stride << "\n"); - Strides[Ptr] = Stride; + SymbolicStrides[Ptr] = Stride; StrideSet.insert(Stride); } @@ -4994,7 +4996,7 @@ void LoopVectorizationLegality::collectLoopUniforms() { } bool LoopVectorizationLegality::canVectorizeMemory() { - LAI = &LAA->getInfo(TheLoop, Strides); + LAI = &LAA->getInfo(TheLoop, getSymbolicStrides()); auto &OptionalReport = LAI->getReport(); if (OptionalReport) emitAnalysis(VectorizationReport(*OptionalReport)); |