summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
diff options
context:
space:
mode:
authorAdam Nemet <anemet@apple.com>2016-06-15 15:49:46 +0000
committerAdam Nemet <anemet@apple.com>2016-06-15 15:49:46 +0000
commit82b9d2a72c2a774cd308e15275903bff5ad53eba (patch)
treef8285bbb4f5c06d27e6bfb95a7d43512b41d9c59 /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
parent51a9cc9ce7bbdce7e71b609c4cd2b7f5f6741b4b (diff)
downloadbcm5719-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.cpp14
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));
OpenPOWER on IntegriCloud