forked from OSchip/llvm-project
[LegalizeTypes] Remove unnecessary if around switch in ScalarizeVectorOperand and SplitVectorOperand. NFC
The if was checking !Res.getNode() but that's always true since Res was initialized to SDValue() and not touched before the if. This appears to be a leftover from a previous implementation of Custom legalization where Res was updated instead of returning immediately.
This commit is contained in:
parent
82f86ae01a
commit
98d7e583db
|
@ -558,76 +558,74 @@ bool DAGTypeLegalizer::ScalarizeVectorOperand(SDNode *N, unsigned OpNo) {
|
|||
dbgs() << "\n");
|
||||
SDValue Res = SDValue();
|
||||
|
||||
if (!Res.getNode()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
#ifndef NDEBUG
|
||||
dbgs() << "ScalarizeVectorOperand Op #" << OpNo << ": ";
|
||||
N->dump(&DAG);
|
||||
dbgs() << "\n";
|
||||
dbgs() << "ScalarizeVectorOperand Op #" << OpNo << ": ";
|
||||
N->dump(&DAG);
|
||||
dbgs() << "\n";
|
||||
#endif
|
||||
report_fatal_error("Do not know how to scalarize this operator's "
|
||||
"operand!\n");
|
||||
case ISD::BITCAST:
|
||||
Res = ScalarizeVecOp_BITCAST(N);
|
||||
break;
|
||||
case ISD::ANY_EXTEND:
|
||||
case ISD::ZERO_EXTEND:
|
||||
case ISD::SIGN_EXTEND:
|
||||
case ISD::TRUNCATE:
|
||||
case ISD::FP_TO_SINT:
|
||||
case ISD::FP_TO_UINT:
|
||||
case ISD::SINT_TO_FP:
|
||||
case ISD::UINT_TO_FP:
|
||||
Res = ScalarizeVecOp_UnaryOp(N);
|
||||
break;
|
||||
case ISD::STRICT_SINT_TO_FP:
|
||||
case ISD::STRICT_UINT_TO_FP:
|
||||
case ISD::STRICT_FP_TO_SINT:
|
||||
case ISD::STRICT_FP_TO_UINT:
|
||||
Res = ScalarizeVecOp_UnaryOp_StrictFP(N);
|
||||
break;
|
||||
case ISD::CONCAT_VECTORS:
|
||||
Res = ScalarizeVecOp_CONCAT_VECTORS(N);
|
||||
break;
|
||||
case ISD::EXTRACT_VECTOR_ELT:
|
||||
Res = ScalarizeVecOp_EXTRACT_VECTOR_ELT(N);
|
||||
break;
|
||||
case ISD::VSELECT:
|
||||
Res = ScalarizeVecOp_VSELECT(N);
|
||||
break;
|
||||
case ISD::SETCC:
|
||||
Res = ScalarizeVecOp_VSETCC(N);
|
||||
break;
|
||||
case ISD::STORE:
|
||||
Res = ScalarizeVecOp_STORE(cast<StoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::STRICT_FP_ROUND:
|
||||
Res = ScalarizeVecOp_STRICT_FP_ROUND(N, OpNo);
|
||||
break;
|
||||
case ISD::FP_ROUND:
|
||||
Res = ScalarizeVecOp_FP_ROUND(N, OpNo);
|
||||
break;
|
||||
case ISD::VECREDUCE_FADD:
|
||||
case ISD::VECREDUCE_FMUL:
|
||||
case ISD::VECREDUCE_ADD:
|
||||
case ISD::VECREDUCE_MUL:
|
||||
case ISD::VECREDUCE_AND:
|
||||
case ISD::VECREDUCE_OR:
|
||||
case ISD::VECREDUCE_XOR:
|
||||
case ISD::VECREDUCE_SMAX:
|
||||
case ISD::VECREDUCE_SMIN:
|
||||
case ISD::VECREDUCE_UMAX:
|
||||
case ISD::VECREDUCE_UMIN:
|
||||
case ISD::VECREDUCE_FMAX:
|
||||
case ISD::VECREDUCE_FMIN:
|
||||
Res = ScalarizeVecOp_VECREDUCE(N);
|
||||
break;
|
||||
case ISD::VECREDUCE_SEQ_FADD:
|
||||
case ISD::VECREDUCE_SEQ_FMUL:
|
||||
Res = ScalarizeVecOp_VECREDUCE_SEQ(N);
|
||||
break;
|
||||
}
|
||||
report_fatal_error("Do not know how to scalarize this operator's "
|
||||
"operand!\n");
|
||||
case ISD::BITCAST:
|
||||
Res = ScalarizeVecOp_BITCAST(N);
|
||||
break;
|
||||
case ISD::ANY_EXTEND:
|
||||
case ISD::ZERO_EXTEND:
|
||||
case ISD::SIGN_EXTEND:
|
||||
case ISD::TRUNCATE:
|
||||
case ISD::FP_TO_SINT:
|
||||
case ISD::FP_TO_UINT:
|
||||
case ISD::SINT_TO_FP:
|
||||
case ISD::UINT_TO_FP:
|
||||
Res = ScalarizeVecOp_UnaryOp(N);
|
||||
break;
|
||||
case ISD::STRICT_SINT_TO_FP:
|
||||
case ISD::STRICT_UINT_TO_FP:
|
||||
case ISD::STRICT_FP_TO_SINT:
|
||||
case ISD::STRICT_FP_TO_UINT:
|
||||
Res = ScalarizeVecOp_UnaryOp_StrictFP(N);
|
||||
break;
|
||||
case ISD::CONCAT_VECTORS:
|
||||
Res = ScalarizeVecOp_CONCAT_VECTORS(N);
|
||||
break;
|
||||
case ISD::EXTRACT_VECTOR_ELT:
|
||||
Res = ScalarizeVecOp_EXTRACT_VECTOR_ELT(N);
|
||||
break;
|
||||
case ISD::VSELECT:
|
||||
Res = ScalarizeVecOp_VSELECT(N);
|
||||
break;
|
||||
case ISD::SETCC:
|
||||
Res = ScalarizeVecOp_VSETCC(N);
|
||||
break;
|
||||
case ISD::STORE:
|
||||
Res = ScalarizeVecOp_STORE(cast<StoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::STRICT_FP_ROUND:
|
||||
Res = ScalarizeVecOp_STRICT_FP_ROUND(N, OpNo);
|
||||
break;
|
||||
case ISD::FP_ROUND:
|
||||
Res = ScalarizeVecOp_FP_ROUND(N, OpNo);
|
||||
break;
|
||||
case ISD::VECREDUCE_FADD:
|
||||
case ISD::VECREDUCE_FMUL:
|
||||
case ISD::VECREDUCE_ADD:
|
||||
case ISD::VECREDUCE_MUL:
|
||||
case ISD::VECREDUCE_AND:
|
||||
case ISD::VECREDUCE_OR:
|
||||
case ISD::VECREDUCE_XOR:
|
||||
case ISD::VECREDUCE_SMAX:
|
||||
case ISD::VECREDUCE_SMIN:
|
||||
case ISD::VECREDUCE_UMAX:
|
||||
case ISD::VECREDUCE_UMIN:
|
||||
case ISD::VECREDUCE_FMAX:
|
||||
case ISD::VECREDUCE_FMIN:
|
||||
Res = ScalarizeVecOp_VECREDUCE(N);
|
||||
break;
|
||||
case ISD::VECREDUCE_SEQ_FADD:
|
||||
case ISD::VECREDUCE_SEQ_FMUL:
|
||||
Res = ScalarizeVecOp_VECREDUCE_SEQ(N);
|
||||
break;
|
||||
}
|
||||
|
||||
// If the result is null, the sub-method took care of registering results etc.
|
||||
|
@ -2009,92 +2007,90 @@ bool DAGTypeLegalizer::SplitVectorOperand(SDNode *N, unsigned OpNo) {
|
|||
if (CustomLowerNode(N, N->getOperand(OpNo).getValueType(), false))
|
||||
return false;
|
||||
|
||||
if (!Res.getNode()) {
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
switch (N->getOpcode()) {
|
||||
default:
|
||||
#ifndef NDEBUG
|
||||
dbgs() << "SplitVectorOperand Op #" << OpNo << ": ";
|
||||
N->dump(&DAG);
|
||||
dbgs() << "\n";
|
||||
dbgs() << "SplitVectorOperand Op #" << OpNo << ": ";
|
||||
N->dump(&DAG);
|
||||
dbgs() << "\n";
|
||||
#endif
|
||||
report_fatal_error("Do not know how to split this operator's "
|
||||
"operand!\n");
|
||||
report_fatal_error("Do not know how to split this operator's "
|
||||
"operand!\n");
|
||||
|
||||
case ISD::SETCC: Res = SplitVecOp_VSETCC(N); break;
|
||||
case ISD::BITCAST: Res = SplitVecOp_BITCAST(N); break;
|
||||
case ISD::EXTRACT_SUBVECTOR: Res = SplitVecOp_EXTRACT_SUBVECTOR(N); break;
|
||||
case ISD::EXTRACT_VECTOR_ELT:Res = SplitVecOp_EXTRACT_VECTOR_ELT(N); break;
|
||||
case ISD::CONCAT_VECTORS: Res = SplitVecOp_CONCAT_VECTORS(N); break;
|
||||
case ISD::TRUNCATE:
|
||||
case ISD::SETCC: Res = SplitVecOp_VSETCC(N); break;
|
||||
case ISD::BITCAST: Res = SplitVecOp_BITCAST(N); break;
|
||||
case ISD::EXTRACT_SUBVECTOR: Res = SplitVecOp_EXTRACT_SUBVECTOR(N); break;
|
||||
case ISD::EXTRACT_VECTOR_ELT:Res = SplitVecOp_EXTRACT_VECTOR_ELT(N); break;
|
||||
case ISD::CONCAT_VECTORS: Res = SplitVecOp_CONCAT_VECTORS(N); break;
|
||||
case ISD::TRUNCATE:
|
||||
Res = SplitVecOp_TruncateHelper(N);
|
||||
break;
|
||||
case ISD::STRICT_FP_ROUND:
|
||||
case ISD::FP_ROUND: Res = SplitVecOp_FP_ROUND(N); break;
|
||||
case ISD::FCOPYSIGN: Res = SplitVecOp_FCOPYSIGN(N); break;
|
||||
case ISD::STORE:
|
||||
Res = SplitVecOp_STORE(cast<StoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::MSTORE:
|
||||
Res = SplitVecOp_MSTORE(cast<MaskedStoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::MSCATTER:
|
||||
Res = SplitVecOp_MSCATTER(cast<MaskedScatterSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::MGATHER:
|
||||
Res = SplitVecOp_MGATHER(cast<MaskedGatherSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::VSELECT:
|
||||
Res = SplitVecOp_VSELECT(N, OpNo);
|
||||
break;
|
||||
case ISD::STRICT_SINT_TO_FP:
|
||||
case ISD::STRICT_UINT_TO_FP:
|
||||
case ISD::SINT_TO_FP:
|
||||
case ISD::UINT_TO_FP:
|
||||
if (N->getValueType(0).bitsLT(
|
||||
N->getOperand(N->isStrictFPOpcode() ? 1 : 0).getValueType()))
|
||||
Res = SplitVecOp_TruncateHelper(N);
|
||||
break;
|
||||
case ISD::STRICT_FP_ROUND:
|
||||
case ISD::FP_ROUND: Res = SplitVecOp_FP_ROUND(N); break;
|
||||
case ISD::FCOPYSIGN: Res = SplitVecOp_FCOPYSIGN(N); break;
|
||||
case ISD::STORE:
|
||||
Res = SplitVecOp_STORE(cast<StoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::MSTORE:
|
||||
Res = SplitVecOp_MSTORE(cast<MaskedStoreSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::MSCATTER:
|
||||
Res = SplitVecOp_MSCATTER(cast<MaskedScatterSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::MGATHER:
|
||||
Res = SplitVecOp_MGATHER(cast<MaskedGatherSDNode>(N), OpNo);
|
||||
break;
|
||||
case ISD::VSELECT:
|
||||
Res = SplitVecOp_VSELECT(N, OpNo);
|
||||
break;
|
||||
case ISD::STRICT_SINT_TO_FP:
|
||||
case ISD::STRICT_UINT_TO_FP:
|
||||
case ISD::SINT_TO_FP:
|
||||
case ISD::UINT_TO_FP:
|
||||
if (N->getValueType(0).bitsLT(
|
||||
N->getOperand(N->isStrictFPOpcode() ? 1 : 0).getValueType()))
|
||||
Res = SplitVecOp_TruncateHelper(N);
|
||||
else
|
||||
Res = SplitVecOp_UnaryOp(N);
|
||||
break;
|
||||
case ISD::FP_TO_SINT:
|
||||
case ISD::FP_TO_UINT:
|
||||
case ISD::STRICT_FP_TO_SINT:
|
||||
case ISD::STRICT_FP_TO_UINT:
|
||||
case ISD::STRICT_FP_EXTEND:
|
||||
case ISD::FP_EXTEND:
|
||||
case ISD::SIGN_EXTEND:
|
||||
case ISD::ZERO_EXTEND:
|
||||
case ISD::ANY_EXTEND:
|
||||
case ISD::FTRUNC:
|
||||
else
|
||||
Res = SplitVecOp_UnaryOp(N);
|
||||
break;
|
||||
break;
|
||||
case ISD::FP_TO_SINT:
|
||||
case ISD::FP_TO_UINT:
|
||||
case ISD::STRICT_FP_TO_SINT:
|
||||
case ISD::STRICT_FP_TO_UINT:
|
||||
case ISD::STRICT_FP_EXTEND:
|
||||
case ISD::FP_EXTEND:
|
||||
case ISD::SIGN_EXTEND:
|
||||
case ISD::ZERO_EXTEND:
|
||||
case ISD::ANY_EXTEND:
|
||||
case ISD::FTRUNC:
|
||||
Res = SplitVecOp_UnaryOp(N);
|
||||
break;
|
||||
|
||||
case ISD::ANY_EXTEND_VECTOR_INREG:
|
||||
case ISD::SIGN_EXTEND_VECTOR_INREG:
|
||||
case ISD::ZERO_EXTEND_VECTOR_INREG:
|
||||
Res = SplitVecOp_ExtVecInRegOp(N);
|
||||
break;
|
||||
case ISD::ANY_EXTEND_VECTOR_INREG:
|
||||
case ISD::SIGN_EXTEND_VECTOR_INREG:
|
||||
case ISD::ZERO_EXTEND_VECTOR_INREG:
|
||||
Res = SplitVecOp_ExtVecInRegOp(N);
|
||||
break;
|
||||
|
||||
case ISD::VECREDUCE_FADD:
|
||||
case ISD::VECREDUCE_FMUL:
|
||||
case ISD::VECREDUCE_ADD:
|
||||
case ISD::VECREDUCE_MUL:
|
||||
case ISD::VECREDUCE_AND:
|
||||
case ISD::VECREDUCE_OR:
|
||||
case ISD::VECREDUCE_XOR:
|
||||
case ISD::VECREDUCE_SMAX:
|
||||
case ISD::VECREDUCE_SMIN:
|
||||
case ISD::VECREDUCE_UMAX:
|
||||
case ISD::VECREDUCE_UMIN:
|
||||
case ISD::VECREDUCE_FMAX:
|
||||
case ISD::VECREDUCE_FMIN:
|
||||
Res = SplitVecOp_VECREDUCE(N, OpNo);
|
||||
break;
|
||||
case ISD::VECREDUCE_SEQ_FADD:
|
||||
case ISD::VECREDUCE_SEQ_FMUL:
|
||||
Res = SplitVecOp_VECREDUCE_SEQ(N);
|
||||
break;
|
||||
}
|
||||
case ISD::VECREDUCE_FADD:
|
||||
case ISD::VECREDUCE_FMUL:
|
||||
case ISD::VECREDUCE_ADD:
|
||||
case ISD::VECREDUCE_MUL:
|
||||
case ISD::VECREDUCE_AND:
|
||||
case ISD::VECREDUCE_OR:
|
||||
case ISD::VECREDUCE_XOR:
|
||||
case ISD::VECREDUCE_SMAX:
|
||||
case ISD::VECREDUCE_SMIN:
|
||||
case ISD::VECREDUCE_UMAX:
|
||||
case ISD::VECREDUCE_UMIN:
|
||||
case ISD::VECREDUCE_FMAX:
|
||||
case ISD::VECREDUCE_FMIN:
|
||||
Res = SplitVecOp_VECREDUCE(N, OpNo);
|
||||
break;
|
||||
case ISD::VECREDUCE_SEQ_FADD:
|
||||
case ISD::VECREDUCE_SEQ_FMUL:
|
||||
Res = SplitVecOp_VECREDUCE_SEQ(N);
|
||||
break;
|
||||
}
|
||||
|
||||
// If the result is null, the sub-method took care of registering results etc.
|
||||
|
|
Loading…
Reference in New Issue