forked from OSchip/llvm-project
[DAGCombine] Don't assume integer-type legailty in reduceBuildVecConvertToConvertBuildVec
DAGCombine will rewrite an BUILD_VECTOR where all non-undef inputs some from [US]INT_TO_FP, as a BUILD_VECTOR of integers with the conversion applied as a vector operation. We check operation legality of the conversion, but fail to check legality of the integer vector type itself. Because targets don't normally override operation legality defaults for illegal types, we need to check this also. This came up in the context of the QPX vector entensions for PowerPC (which can have legal floating-point vector types without corresponding legal integer vector types). No in-tree test case for this yes, but one can be added once the QPX support has been committed. llvm-svn: 230176
This commit is contained in:
parent
f5b957060b
commit
e2dd84e42f
|
@ -11194,6 +11194,11 @@ SDValue DAGCombiner::reduceBuildVecConvertToConvertBuildVec(SDNode *N) {
|
|||
if (!TLI.isOperationLegalOrCustom(Opcode, NVT))
|
||||
return SDValue();
|
||||
|
||||
// Just because the floating-point vector type is legal does not necessarily
|
||||
// mean that the corresponding integer vector type is.
|
||||
if (!isTypeLegal(NVT))
|
||||
return SDValue();
|
||||
|
||||
SmallVector<SDValue, 8> Opnds;
|
||||
for (unsigned i = 0; i != NumInScalars; ++i) {
|
||||
SDValue In = N->getOperand(i);
|
||||
|
|
Loading…
Reference in New Issue