diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-08-02 21:43:08 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-08-02 21:43:08 +0000 |
commit | e6de494b7442f5a725ab77bdb80aa20de5447736 (patch) | |
tree | 80b72c04779c44d1cd1c4c73f8d3d47c345f287a /llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | |
parent | 03f95064770bbfd0d6aebc26d4f1c27ed62942ef (diff) | |
download | bcm5719-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.cpp | 12 |
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); |