summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2017-08-02 21:43:08 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2017-08-02 21:43:08 +0000
commite6de494b7442f5a725ab77bdb80aa20de5447736 (patch)
tree80b72c04779c44d1cd1c4c73f8d3d47c345f287a /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
parent03f95064770bbfd0d6aebc26d4f1c27ed62942ef (diff)
downloadbcm5719-llvm-e6de494b7442f5a725ab77bdb80aa20de5447736.tar.gz
bcm5719-llvm-e6de494b7442f5a725ab77bdb80aa20de5447736.zip
LV: Don't insert runtime ptr checks on divergent targets
llvm-svn: 309890
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/LoopVectorize.cpp')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorize.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index ab2eaf586b8..dbd54c49669 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -6278,6 +6278,18 @@ Optional<unsigned> LoopVectorizationCostModel::computeMaxVF(bool OptForSize) {
return None;
}
+ if (Legal->getRuntimePointerChecking()->Need && TTI.hasBranchDivergence()) {
+ // TODO: It may by useful to do since it's still likely to be dynamically
+ // uniform if the target can skip.
+ DEBUG(dbgs() << "LV: Not inserting runtime ptr check for divergent target");
+
+ ORE->emit(
+ createMissedAnalysis("CantVersionLoopWithDivergentTarget")
+ << "runtime pointer checks needed. Not enabled for divergent target");
+
+ return None;
+ }
+
if (!OptForSize) // Remaining checks deal with scalar loop when OptForSize.
return computeFeasibleMaxVF(OptForSize);
OpenPOWER on IntegriCloud