[x86] Teach the target combine step to aggressively fold pshufd insturcions.
authorChandler Carruth <chandlerc@gmail.com>
Fri, 27 Jun 2014 11:40:13 +0000 (11:40 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Fri, 27 Jun 2014 11:40:13 +0000 (11:40 +0000)
commit688001f042a2808dcee564519effb15c8e02271b
treedd4db30d1a273e1bedc942e910a000a9a37baa1e
parent24199883e5af30b4efc84cd5f2b9717b83693ccc
[x86] Teach the target combine step to aggressively fold pshufd insturcions.

Summary:
This allows it to fold pshufd instructions across intervening
half-shuffles and other noise. This pattern actually shows up in the
generic lowering tests, but I've also added direct tests using
intrinsics to make sure that the specific desired functionality is
working even if the lowering stuff changes in the future.

Differential Revision: http://reviews.llvm.org/D4292

llvm-svn: 211892
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/vector-shuffle-128-v8.ll
llvm/test/CodeGen/X86/vector-shuffle-combining.ll