X86: Make shuffle -> shift conversion more aggressive about undefs.
authorBenjamin Kramer <benny.kra@googlemail.com>
Fri, 17 May 2013 14:48:34 +0000 (14:48 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Fri, 17 May 2013 14:48:34 +0000 (14:48 +0000)
commita0de26ce34877fac86ef6d939d56bbebb3b4e14c
tree2a62036b28ba9ee013cb3f2c0c81b575eecae1ee
parentc032d1aca07ab0a33741eb52b3a2d958e7982f12
X86: Make shuffle -> shift conversion more aggressive about undefs.

Shuffles that only move an element into position 0 of the vector are common in
the output of the loop vectorizer and often generate suboptimal code when SSSE3
is not available. Lower them to vector shifts if possible.

We still prefer palignr over psrldq because it has higher throughput on
sandybridge.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182102 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
test/CodeGen/X86/avx-vpermil.ll
test/CodeGen/X86/vec_insert-5.ll