SLP Vectorizer: Implement multi-block slp-vectorization.
authorNadav Rotem <nrotem@apple.com>
Sat, 22 Jun 2013 21:34:10 +0000 (21:34 +0000)
committerNadav Rotem <nrotem@apple.com>
Sat, 22 Jun 2013 21:34:10 +0000 (21:34 +0000)
commit53a0552b06cb8288004f7698f6e4640fe2a74f61
treee79c3c8bd0d330a982737744359053feb8251c92
parent71f28bf6fb996d5c71671641e5fc8794c7820f3e
SLP Vectorizer: Implement multi-block slp-vectorization.

Rewrote the SLP-vectorization as a whole-function vectorization pass. It is now able to vectorize chains across multiple basic blocks.
It still does not vectorize PHIs, but this should be easy to do now that we scan the entire function.
I removed the support for extracting values from trees.
We are now able to vectorize more programs, but there are some serious regressions in many workloads (such as flops-6 and mandel-2).

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@184647 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Vectorize/CMakeLists.txt
lib/Transforms/Vectorize/SLPVectorizer.cpp
lib/Transforms/Vectorize/VecUtils.cpp [deleted file]
lib/Transforms/Vectorize/VecUtils.h [deleted file]
test/Transforms/SLPVectorizer/X86/diamond.ll
test/Transforms/SLPVectorizer/X86/multi_block.ll [new file with mode: 0644]
test/Transforms/SLPVectorizer/X86/multi_user.ll