OSDN Git Service

[x86] Implement more aggressive use of PACKUS chains for lowering common
authorChandler Carruth <chandlerc@gmail.com>
Mon, 4 Aug 2014 09:40:02 +0000 (09:40 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 4 Aug 2014 09:40:02 +0000 (09:40 +0000)
commit93f5d9f093314289187440921a3c73c92cf8bfd3
tree4e3698d607331e0df347061cbfa6071cf2410911
parenta6a0f12942b3008fb51a3ea71b2fee0dba11245d
[x86] Implement more aggressive use of PACKUS chains for lowering common
patterns of v16i8 shuffles.

This implements one of the more important FIXMEs for the SSE2 support in
the new shuffle lowering. We now generate the optimal shuffle sequence
for truncate-derived shuffles which show up essentially everywhere.

Unfortunately, this exposes a weakness in other parts of the shuffle
logic -- we can no longer form PSHUFB here. I'll add the necessary
support for that and other things in a subsequent commit.

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