summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorSilviu Baranga <silviu.baranga@arm.com>2015-08-10 14:50:54 +0000
committerSilviu Baranga <silviu.baranga@arm.com>2015-08-10 14:50:54 +0000
commit61bdc51339875e7674723191b3822784bcbf79b5 (patch)
tree35a7911498a9af66211c57c14890e67f67a6946e /llvm/lib/Transforms
parente29ab2bfabd12d06214a4a516ea9a2d44b5f1a0b (diff)
downloadbcm5719-llvm-61bdc51339875e7674723191b3822784bcbf79b5.tar.gz
bcm5719-llvm-61bdc51339875e7674723191b3822784bcbf79b5.zip
[TTI] Add a hook for specifying per-target defaults for Interleaved Accesses
Summary: This adds a hook to TTI which enables us to selectively turn on by default interleaved access vectorization for targets on which we have have performed the required benchmarking. Reviewers: rengolin Subscribers: rengolin, llvm-commits Differential Revision: http://reviews.llvm.org/D11901 llvm-svn: 244449
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorize.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 139b7fd9632..53074b0f9d6 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -3880,9 +3880,15 @@ bool LoopVectorizationLegality::canVectorize() {
: "")
<< "!\n");
+ bool UseInterleaved = TTI->enableInterleavedAccessVectorization();
+
+ // If an override option has been passed in for interleaved accesses, use it.
+ if (EnableInterleavedMemAccesses.getNumOccurrences() > 0)
+ UseInterleaved = EnableInterleavedMemAccesses;
+
// Analyze interleaved memory accesses.
- if (EnableInterleavedMemAccesses)
- InterleaveInfo.analyzeInterleaving(Strides);
+ if (UseInterleaved)
+ InterleaveInfo.analyzeInterleaving(Strides);
// Okay! We can vectorize. At this point we don't have any other mem analysis
// which may limit our maximum vectorization factor, so just return true with
OpenPOWER on IntegriCloud