[X86][SSE] Lower shuffles to permute(unpack(x,y)) (PR31151)
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 14 Sep 2018 18:33:31 +0000 (18:33 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Fri, 14 Sep 2018 18:33:31 +0000 (18:33 +0000)
commit32857c54d2232fc91226381db9ecfe4e95d57da0
tree90bb51278cceb719f8b0ae94d2d21d58eebe07f3
parentac356cac0c8a870e8f213df05bbb79714e3e9ac7
[X86][SSE] Lower shuffles to permute(unpack(x,y)) (PR31151)

Attempt to lower a shuffle as an unpack of elements from two inputs followed by a single-input (wider) permutation.

As long as the permutation is wider this is a win - there may be some circumstances where same size permutations would also be useful but I've left that for future work.

Differential Revision: https://reviews.llvm.org/D52043

llvm-svn: 342257
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/debuginfo-locations-dce.ll
llvm/test/CodeGen/X86/vector-shuffle-128-v16.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v16.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v32.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v8.ll