[X86][AVX] combineX86ShuffleChain - combine shuffle(extractsubvector(x),extractsubvec...
authorSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 5 Jun 2019 12:56:53 +0000 (12:56 +0000)
committerSimon Pilgrim <llvm-dev@redking.me.uk>
Wed, 5 Jun 2019 12:56:53 +0000 (12:56 +0000)
commit886a55eaa05ddfecaf41b86d1735c503b3b17bda
tree23a3ebfcdd1eb33495d0ca78dfb45cca643ea93d
parent2121a4f7335a9e4985997d4d880c11c588b48a27
[X86][AVX] combineX86ShuffleChain - combine shuffle(extractsubvector(x),extractsubvector(y))

We already handle the case where we combine shuffle(extractsubvector(x),extractsubvector(x)), this relaxes the requirement to permit different sources as long as they have the same value type.

This causes a couple of cases where the VPERMV3 binary shuffles occur at a wider width than before, which I intend to improve in future commits - but as only the subvector's mask indices are defined, these will broadcast so we don't see any increase in constant size.

llvm-svn: 362599
llvm/lib/Target/X86/X86ISelLowering.cpp
llvm/test/CodeGen/X86/avx512-shuffles/partial_permute.ll
llvm/test/CodeGen/X86/pr29112.ll
llvm/test/CodeGen/X86/vector-shuffle-256-v32.ll