[x86] Fully generalize the zext lowering in the new vector shuffle
authorChandler Carruth <chandlerc@gmail.com>
Fri, 19 Sep 2014 20:00:32 +0000 (20:00 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 19 Sep 2014 20:00:32 +0000 (20:00 +0000)
commitdc58d1e09921872f63a329dce631104616163bc5
tree438a30b7365f96c9f0933ae5a30bb1a277e33af5
parent55dd199bd3f86b7a89497545f0d09ca115b9872a
[x86] Fully generalize the zext lowering in the new vector shuffle
lowering to support both anyext and zext and to custom lower for many
different microarchitectures.

Using this allows us to get *exactly* the right code for zext and anyext
shuffles in all the vector sizes. For v16i8, the improvement is *huge*.
The new SSE2 test case added I refused to add before this because it was
sooooo muny instructions.

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