[x86] Teach the unpack lowering how to lower with an initial unpack in
authorChandler Carruth <chandlerc@gmail.com>
Thu, 19 Feb 2015 15:06:13 +0000 (15:06 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Thu, 19 Feb 2015 15:06:13 +0000 (15:06 +0000)
commitc57e90422fe64d89c527a8a7886e0f7d875fef3f
tree70b8f4cc0f69d462df776ba31c55d2b25c686d4e
parent7f583a4201d91c973e1c9c7e6783f61cd5cf21e1
[x86] Teach the unpack lowering how to lower with an initial unpack in
addition to lowering to trees rooted in an unpack.

This saves shuffles and or registers in many various ways, lets us
handle another class of v4i32 shuffles pre SSE4.1 without domain
crosses, etc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229856 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/sse3.ll
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/vector-shuffle-256-v32.ll
test/CodeGen/X86/vector-shuffle-combining.ll