[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)
commitc5114dbcc3cd5a768bed43e5ae88d87a88b4a1b1
treea40ba0c593d53aebda6ab6503acaeb501cda6f52
parentfc9897f66f40ec2b079cb2d697bd41db7db2f3ed
[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

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