[x86] When splitting 256-bit vectors into 128-bit vectors, don't extract
authorChandler Carruth <chandlerc@gmail.com>
Sun, 15 Feb 2015 10:12:02 +0000 (10:12 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 15 Feb 2015 10:12:02 +0000 (10:12 +0000)
commit46d3e580ed07de0fdf021a12aafcdde12b52bef9
tree4660659d46e5ede6f733bd7387a66479536d6fc3
parent27acd682e0c349bcd4542a373d895d1981f2f120
[x86] When splitting 256-bit vectors into 128-bit vectors, don't extract
subvectors from buildvectors. That doesn't really make any sense and it
breaks all of the down-stream matching of buildvectors to cleverly lower
shuffles.

With this, we now get the shift-based lowering of 256-bit vector
shuffles with AVX1 when we split them into 128-bit vectors. We also do
much better on the zero-extension patterns, although there remains quite
a bit of room for improvement here.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229299 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/vec_cast2.ll
test/CodeGen/X86/vector-shuffle-256-v16.ll
test/CodeGen/X86/vector-shuffle-256-v32.ll
test/CodeGen/X86/vector-shuffle-256-v8.ll