diff options
| author | Robert Lytton <robert@xmos.com> | 2013-09-18 12:43:35 +0000 |
|---|---|---|
| committer | Robert Lytton <robert@xmos.com> | 2013-09-18 12:43:35 +0000 |
| commit | f637e2cb2344415b12ad943d29b0fd78abde2b42 (patch) | |
| tree | f4dc1f98722d6a9a1df4998502f7d5b4e8e4b3cd /llvm/lib/Transforms | |
| parent | dcab7fbb830ffc06cfa088a76dcfc3b2b2b869e4 (diff) | |
| download | bcm5719-llvm-f637e2cb2344415b12ad943d29b0fd78abde2b42.tar.gz bcm5719-llvm-f637e2cb2344415b12ad943d29b0fd78abde2b42.zip | |
Prevent LoopVectorizer and SLPVectorizer running if the target has no vector registers.
XCore target: Add XCoreTargetTransformInfo
This is where getNumberOfRegisters() resides, which in turn returns the
number of vector registers (=0).
llvm-svn: 190936
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 5 | ||||
| -rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 5 |
2 files changed, 10 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp index 1d82c7b8f54..30908c8ebf3 100644 --- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp +++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp @@ -909,6 +909,11 @@ struct LoopVectorize : public LoopPass { DT = &getAnalysis<DominatorTree>(); TLI = getAnalysisIfAvailable<TargetLibraryInfo>(); + // If the target claims to have no vector registers don't attempt + // vectorization. + if (!TTI->getNumberOfRegisters(true)) + return false; + if (DL == NULL) { DEBUG(dbgs() << "LV: Not vectorizing because of missing data layout"); return false; diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index b287ca7c8d5..cd3f723cd3e 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -1572,6 +1572,11 @@ struct SLPVectorizer : public FunctionPass { StoreRefs.clear(); bool Changed = false; + // If the target claims to have no vector registers don't attempt + // vectorization. + if (!TTI->getNumberOfRegisters(true)) + return false; + // Must have DataLayout. We can't require it because some tests run w/o // triple. if (!DL) |

