[x86] Teach the new vector shuffle lowering to re-use the SHUFPS
authorChandler Carruth <chandlerc@gmail.com>
Sun, 21 Sep 2014 13:35:14 +0000 (13:35 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 21 Sep 2014 13:35:14 +0000 (13:35 +0000)
commit974542d7d8d38c9b759f6945ce719bdbc0d78e91
tree8180c6d841024d93a715e59adf38b907d866dbcb
parent38e181630abe753d203c1be3941d510914c73088
[x86] Teach the new vector shuffle lowering to re-use the SHUFPS
lowering when it can use a symmetric SHUFPS across both 128-bit lanes.

This required making the SHUFPS lowering tolerant of other vector types,
and adjusting our canonicalization to canonicalize harder.

This is the last of the clever uses of symmetry I've thought of for
v8f32. The rest of the tricks I'm aware of here are to work around
assymetry in the mask.

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