LegalizeTypes support for legalizing the mask
authorDuncan Sands <baldrick@free.fr>
Wed, 27 Feb 2008 13:03:44 +0000 (13:03 +0000)
committerDuncan Sands <baldrick@free.fr>
Wed, 27 Feb 2008 13:03:44 +0000 (13:03 +0000)
commit8745b52853c9b1d1370005d7cb42587ebe2a7193
tree34fed63d9a14c636f574d79d9a0e1318345de39d
parent4f069e6db1772a7e6cd8bfc360d819b56557badc
LegalizeTypes support for legalizing the mask
operand of a VECTOR_SHUFFLE.  The mask is a
vector of constant integers.  The code in
LegalizeDAG doesn't bother to legalize the
mask, since it's basically just storage for
a bunch of constants, however LegalizeTypes
is more picky.  The problem is that there may
not exist any legal vector-of-integers type
with a legal element type, so it is impossible
to create a legal mask!  Unless of course you
cheat by creating a BUILD_VECTOR where the
operands have a different type to the element
type of the vector being built...  This is
pretty ugly but works - all relevant tests in
the testsuite pass, and produce the same
assembler with and without LegalizeTypes.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@47670 91177308-0d34-0410-b5e6-96231b3b80d8
lib/CodeGen/SelectionDAG/LegalizeTypes.h
lib/CodeGen/SelectionDAG/LegalizeTypesSplit.cpp