mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Don't use getSetCCResultType for creating a vselect
The vselect mask isn't a setcc. This breaks in the case when the result of getSetCCResultType is larger than the vector operands e.g. %tmp = select i1 %cmp <2 x i8> %a, <2 x i8> %b when getSetCCResultType returns <2 x i32>, the assertion that the (MaskTy.getSizeInBits() == Op1.getValueType().getSizeInBits()) is hit. No test since I don't think I can hit this with any of the current targets. The R600/SI implementation would break, since it returns a vector of i1 for this, but it doesn't reach ExpandSELECT for other reasons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190376 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ffdee89a3c
commit
c6c08508ca
@ -599,8 +599,7 @@ SDValue VectorLegalizer::ExpandSELECT(SDValue Op) {
|
||||
return DAG.UnrollVectorOp(Op.getNode());
|
||||
|
||||
// Generate a mask operand.
|
||||
EVT MaskTy = TLI.getSetCCResultType(*DAG.getContext(), VT);
|
||||
assert(MaskTy.isVector() && "Invalid CC type");
|
||||
EVT MaskTy = VT.changeVectorElementTypeToInteger();
|
||||
assert(MaskTy.getSizeInBits() == Op1.getValueType().getSizeInBits()
|
||||
&& "Invalid mask size");
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user