[SystemZ] Fix another assertion failure in tryBuildVectorShuffle
authorUlrich Weigand <ulrich.weigand@de.ibm.com>
Thu, 8 Oct 2015 17:46:59 +0000 (17:46 +0000)
committerUlrich Weigand <ulrich.weigand@de.ibm.com>
Thu, 8 Oct 2015 17:46:59 +0000 (17:46 +0000)
commit27c5c326238b4c1c42442a2f391466eeb903b749
tree794ffdd35753602d728e9cad55d6303ed8ff3e82
parente6bb1eaae586b01f4d96ba2f7b82c4c26ae38fd9
[SystemZ] Fix another assertion failure in tryBuildVectorShuffle

This fixes yet another scenario where tryBuildVectorShuffle would
attempt to create a BUILD_VECTOR node with an invalid combination
of types.  This can happen if the incoming BUILD_VECTOR has elements
of a type different from the vector element type, which is allowed
in certain cases as long as they are all the same type.

When one of these elements is used in the residual vector, and
UNDEF elements are added to fill up the residual vector, those
UNDEFs then have to use the type of the original element, not
the vector element type, or else the resulting BUILD_VECTOR
will have an invalid type combination.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@249706 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/SystemZ/SystemZISelLowering.cpp
test/CodeGen/SystemZ/vec-perm-13.ll [new file with mode: 0644]