diff options
author | Nadav Rotem <nrotem@apple.com> | 2013-07-26 23:07:55 +0000 |
---|---|---|
committer | Nadav Rotem <nrotem@apple.com> | 2013-07-26 23:07:55 +0000 |
commit | cfd40da9b16537271c1cb3206728fc759c50e944 (patch) | |
tree | 69cbb8927b9d25f49f787f23306ea0ddf2213d52 /llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | |
parent | fff926670b94a8336c3a7fc45ca38a05b252c792 (diff) | |
download | bcm5719-llvm-cfd40da9b16537271c1cb3206728fc759c50e944.tar.gz bcm5719-llvm-cfd40da9b16537271c1cb3206728fc759c50e944.zip |
SLP Vectorier: Don't vectorize really short chains because they are already handled by the SelectionDAG store-vectorizer, which does a better job in deciding when to vectorize.
llvm-svn: 187267
Diffstat (limited to 'llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp')
-rw-r--r-- | llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp index c1accd32c5c..50e37e99169 100644 --- a/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp @@ -898,8 +898,12 @@ int BoUpSLP::getTreeCost() { DEBUG(dbgs() << "SLP: Calculating cost for tree of size " << VectorizableTree.size() << ".\n"); - if (!VectorizableTree.size()) { - assert(!ExternalUses.size() && "We should not have any external users"); + // Don't vectorize tiny trees. Small load/store chains or consecutive stores + // of constants will be vectoried in SelectionDAG in MergeConsecutiveStores. + if (VectorizableTree.size() < 3) { + if (!VectorizableTree.size()) { + assert(!ExternalUses.size() && "We should not have any external users"); + } return 0; } |