[x86] Teach the x86 DAG combiner to form UNPCKLPS and UNPCKHPS
authorChandler Carruth <chandlerc@gmail.com>
Mon, 15 Sep 2014 11:26:25 +0000 (11:26 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 15 Sep 2014 11:26:25 +0000 (11:26 +0000)
commit2fdec16fbe545c2ba80ceac3ce62cf0277822fd9
treed78f6ff46aac143f5fd7ac8a65649f049a184df0
parent08780d4c1d95026c19f31bc19c2fba1789fe422f
[x86] Teach the x86 DAG combiner to form UNPCKLPS and UNPCKHPS
instructions from the relevant shuffle patterns.

This is the last tweak I'm aware of to generate essentially perfect
v4f32 and v2f64 shuffles with the new vector shuffle lowering up through
SSE4.1. I'm sure I've missed some and it'd be nice to check since v4f32
is amenable to exhaustive exploration, but this is all of the tricks I'm
aware of.

With AVX there is a new trick to use the VPERMILPS instruction, that's
coming up in a subsequent patch.

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