[x86] Remove the 2-addr-to-3-addr "optimization" from shufps to pshufd.
authorChandler Carruth <chandlerc@gmail.com>
Sun, 5 Oct 2014 22:57:31 +0000 (22:57 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sun, 5 Oct 2014 22:57:31 +0000 (22:57 +0000)
commit1d02acb7a0330ad68bce53e80e5538bedfcb6c2f
treeada0e86160da59dfef74925d76fee1a83af2df75
parent560bddce204e2502095821b6fde446cff7bc4840
[x86] Remove the 2-addr-to-3-addr "optimization" from shufps to pshufd.

This trades a (register-renamer-friendly) movaps for a floating point
/ integer domain cross. That is a very bad trade, even on architectures
where domain crossing is relatively fast. On any chip where there is
even a cycle stall, this is a Very Bad Idea. It doesn't even seem likely
to cause a spill to be introduced because the reason for the copy is to
destructively shuffle in place.

Thanks to Ben Kramer for fixing a bug in this code that my new shuffle
lowering exposed and highlighting that perhaps it should just go away.
=]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@219090 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86InstrInfo.cpp
test/CodeGen/X86/3addr-shufps.ll [deleted file]
test/CodeGen/X86/sincos-opt.ll
test/CodeGen/X86/sse41.ll
test/CodeGen/X86/v2f32.ll
test/CodeGen/X86/vector-shuffle-128-v2.ll
test/CodeGen/X86/vector-shuffle-combining.ll