diff options
author | Anna Thomas <anna@azul.com> | 2018-09-25 20:57:20 +0000 |
---|---|---|
committer | Anna Thomas <anna@azul.com> | 2018-09-25 20:57:20 +0000 |
commit | b1e3d4531826e6134b05e8ff3c96a5696a72ad50 (patch) | |
tree | a9176db686066adc9afee51427604eaf8b78aaaa /llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp | |
parent | c81aff79d3ae0e81b3183e3f077627ea569ad4fc (diff) | |
download | bcm5719-llvm-b1e3d4531826e6134b05e8ff3c96a5696a72ad50.tar.gz bcm5719-llvm-b1e3d4531826e6134b05e8ff3c96a5696a72ad50.zip |
[LV][LAA] Vectorize loop invariant values stored into loop invariant address
Summary:
We are overly conservative in loop vectorizer with respect to stores to loop
invariant addresses.
More details in https://bugs.llvm.org/show_bug.cgi?id=38546
This is the first part of the fix where we start with vectorizing loop invariant
values to loop invariant addresses.
This also includes changes to ORE for stores to invariant address.
Reviewers: anemet, Ayal, mkuper, mssimpso
Subscribers: llvm-commits
Differential Revision: https://reviews.llvm.org/D50665
llvm-svn: 343028
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp index 9c81cdc9083..7e11504c0e0 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorizationLegality.cpp @@ -817,9 +817,10 @@ bool LoopVectorizationLegality::canVectorizeMemory() { if (!LAI->canVectorizeMemory()) return false; - if (LAI->hasStoreToLoopInvariantAddress()) { + if (LAI->hasVariantStoreToLoopInvariantAddress()) { ORE->emit(createMissedAnalysis("CantVectorizeStoreToLoopInvariantAddress") - << "write to a loop invariant address could not be vectorized"); + << "write of variant value to a loop invariant address could not " + "be vectorized"); LLVM_DEBUG(dbgs() << "LV: We don't allow storing to uniform addresses\n"); return false; } |