summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Analysis/LoopAccessAnalysis.cpp16
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp7
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorize.cpp1
3 files changed, 10 insertions, 14 deletions
diff --git a/llvm/lib/Analysis/LoopAccessAnalysis.cpp b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
index b43e290956d..4b8e8afdabb 100644
--- a/llvm/lib/Analysis/LoopAccessAnalysis.cpp
+++ b/llvm/lib/Analysis/LoopAccessAnalysis.cpp
@@ -1869,13 +1869,9 @@ void LoopAccessInfo::analyzeLoop(AliasAnalysis *AA, LoopInfo *LI,
for (StoreInst *ST : Stores) {
Value *Ptr = ST->getPointerOperand();
- if (isUniform(Ptr)) {
- // Consider multiple stores to the same uniform address as a store of a
- // variant value.
- bool MultipleStoresToUniformPtr = !UniformStores.insert(Ptr).second;
- HasVariantStoreToLoopInvariantAddress |=
- (!isUniform(ST->getValueOperand()) || MultipleStoresToUniformPtr);
- }
+ if (isUniform(Ptr))
+ HasMultipleStoresToLoopInvariantAddress |=
+ !UniformStores.insert(Ptr).second;
// If we did *not* see this pointer before, insert it to the read-write
// list. At this phase it is only a 'write' list.
@@ -2276,7 +2272,7 @@ LoopAccessInfo::LoopAccessInfo(Loop *L, ScalarEvolution *SE,
PtrRtChecking(llvm::make_unique<RuntimePointerChecking>(SE)),
DepChecker(llvm::make_unique<MemoryDepChecker>(*PSE, L)), TheLoop(L),
NumLoads(0), NumStores(0), MaxSafeDepDistBytes(-1), CanVecMem(false),
- HasVariantStoreToLoopInvariantAddress(false) {
+ HasMultipleStoresToLoopInvariantAddress(false) {
if (canAnalyzeLoop())
analyzeLoop(AA, LI, TLI, DT);
}
@@ -2308,8 +2304,8 @@ void LoopAccessInfo::print(raw_ostream &OS, unsigned Depth) const {
PtrRtChecking->print(OS, Depth);
OS << "\n";
- OS.indent(Depth) << "Variant Store to invariant address was "
- << (HasVariantStoreToLoopInvariantAddress ? "" : "not ")
+ OS.indent(Depth) << "Multiple stores to invariant address were "
+ << (HasMultipleStoresToLoopInvariantAddress ? "" : "not ")
<< "found in loop.\n";
OS.indent(Depth) << "SCEV assumptions:\n";
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
index 7e11504c0e0..bde90a71b41 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp
@@ -817,11 +817,12 @@ bool LoopVectorizationLegality::canVectorizeMemory() {
if (!LAI->canVectorizeMemory())
return false;
- if (LAI->hasVariantStoreToLoopInvariantAddress()) {
+ if (LAI->hasMultipleStoresToLoopInvariantAddress()) {
ORE->emit(createMissedAnalysis("CantVectorizeStoreToLoopInvariantAddress")
- << "write of variant value to a loop invariant address could not "
+ << "multiple writes to a loop invariant address could not "
"be vectorized");
- LLVM_DEBUG(dbgs() << "LV: We don't allow storing to uniform addresses\n");
+ LLVM_DEBUG(
+ dbgs() << "LV: We don't allow multiple stores to a uniform address\n");
return false;
}
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 2ba2f00b4a5..5a11c5a54ae 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -1189,7 +1189,6 @@ private:
/// Load: scalar load + broadcast.
/// Store: scalar store + (loop invariant value stored? 0 : extract of last
/// element)
- /// TODO: Test the extra cost of the extract when loop variant value stored.
unsigned getUniformMemOpCost(Instruction *I, unsigned VF);
/// Returns whether the instruction is a load or store and will be a emitted
OpenPOWER on IntegriCloud