Don't try to make BUILD_VECTOR operands have the same
authorDuncan Sands <baldrick@free.fr>
Sat, 18 Apr 2009 20:16:54 +0000 (20:16 +0000)
committerDuncan Sands <baldrick@free.fr>
Sat, 18 Apr 2009 20:16:54 +0000 (20:16 +0000)
commitb10b5ac8d9da43ca2db61401a20af6b676c98438
tree29d0c808adeb32fa9b508ee757582fc28b6e32de
parentfa8ffc10b3edba947d20d5720435179054d8ba29
Don't try to make BUILD_VECTOR operands have the same
type as the vector element type: allow them to be of
a wider integer type than the element type all the way
through the system, and not just as far as LegalizeDAG.
This should be safe because it used to be this way
(the old type legalizer would produce such nodes), so
backends should be able to handle it.  In fact only
targets which have legal vector types with an illegal
promoted element type will ever see this (eg: <4 x i16>
on ppc).  This fixes a regression with the new type
legalizer (vec_splat.ll).  Also, treat SCALAR_TO_VECTOR
the same as BUILD_VECTOR.  After all, it is just a
special case of BUILD_VECTOR.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69467 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/DAGCombiner.cpp
lib/CodeGen/SelectionDAG/LegalizeDAG.cpp
lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp
lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp
lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
test/CodeGen/PowerPC/vec_splat.ll