mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
[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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@230176 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
1584f114c1
commit
0e8abfa6ed
@ -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
Block a user