|
@@ -483,8 +483,8 @@ SDValue DAGTypeLegalizer::PromoteIntRes_SDIV(SDNode *N) {
|
|
SDValue DAGTypeLegalizer::PromoteIntRes_SELECT(SDNode *N) {
|
|
SDValue DAGTypeLegalizer::PromoteIntRes_SELECT(SDNode *N) {
|
|
SDValue LHS = GetPromotedInteger(N->getOperand(1));
|
|
SDValue LHS = GetPromotedInteger(N->getOperand(1));
|
|
SDValue RHS = GetPromotedInteger(N->getOperand(2));
|
|
SDValue RHS = GetPromotedInteger(N->getOperand(2));
|
|
- return DAG.getNode(ISD::SELECT, SDLoc(N),
|
|
|
|
- LHS.getValueType(), N->getOperand(0),LHS,RHS);
|
|
|
|
|
|
+ return DAG.getSelect(SDLoc(N),
|
|
|
|
+ LHS.getValueType(), N->getOperand(0), LHS, RHS);
|
|
}
|
|
}
|
|
|
|
|
|
SDValue DAGTypeLegalizer::PromoteIntRes_VSELECT(SDNode *N) {
|
|
SDValue DAGTypeLegalizer::PromoteIntRes_VSELECT(SDNode *N) {
|
|
@@ -1478,8 +1478,8 @@ ExpandShiftWithUnknownAmountBit(SDNode *N, SDValue &Lo, SDValue &Hi) {
|
|
LoL = DAG.getConstant(0, NVT); // Lo part is zero.
|
|
LoL = DAG.getConstant(0, NVT); // Lo part is zero.
|
|
HiL = DAG.getNode(ISD::SHL, dl, NVT, InL, AmtExcess); // Hi from Lo part.
|
|
HiL = DAG.getNode(ISD::SHL, dl, NVT, InL, AmtExcess); // Hi from Lo part.
|
|
|
|
|
|
- Lo = DAG.getNode(ISD::SELECT, dl, NVT, isShort, LoS, LoL);
|
|
|
|
- Hi = DAG.getNode(ISD::SELECT, dl, NVT, isShort, HiS, HiL);
|
|
|
|
|
|
+ Lo = DAG.getSelect(dl, NVT, isShort, LoS, LoL);
|
|
|
|
+ Hi = DAG.getSelect(dl, NVT, isShort, HiS, HiL);
|
|
return true;
|
|
return true;
|
|
case ISD::SRL:
|
|
case ISD::SRL:
|
|
// Short: ShAmt < NVTBits
|
|
// Short: ShAmt < NVTBits
|
|
@@ -1494,8 +1494,8 @@ ExpandShiftWithUnknownAmountBit(SDNode *N, SDValue &Lo, SDValue &Hi) {
|
|
HiL = DAG.getConstant(0, NVT); // Hi part is zero.
|
|
HiL = DAG.getConstant(0, NVT); // Hi part is zero.
|
|
LoL = DAG.getNode(ISD::SRL, dl, NVT, InH, AmtExcess); // Lo from Hi part.
|
|
LoL = DAG.getNode(ISD::SRL, dl, NVT, InH, AmtExcess); // Lo from Hi part.
|
|
|
|
|
|
- Lo = DAG.getNode(ISD::SELECT, dl, NVT, isShort, LoS, LoL);
|
|
|
|
- Hi = DAG.getNode(ISD::SELECT, dl, NVT, isShort, HiS, HiL);
|
|
|
|
|
|
+ Lo = DAG.getSelect(dl, NVT, isShort, LoS, LoL);
|
|
|
|
+ Hi = DAG.getSelect(dl, NVT, isShort, HiS, HiL);
|
|
return true;
|
|
return true;
|
|
case ISD::SRA:
|
|
case ISD::SRA:
|
|
// Short: ShAmt < NVTBits
|
|
// Short: ShAmt < NVTBits
|
|
@@ -1511,8 +1511,8 @@ ExpandShiftWithUnknownAmountBit(SDNode *N, SDValue &Lo, SDValue &Hi) {
|
|
DAG.getConstant(NVTBits-1, ShTy));
|
|
DAG.getConstant(NVTBits-1, ShTy));
|
|
LoL = DAG.getNode(ISD::SRA, dl, NVT, InH, AmtExcess); // Lo from Hi part.
|
|
LoL = DAG.getNode(ISD::SRA, dl, NVT, InH, AmtExcess); // Lo from Hi part.
|
|
|
|
|
|
- Lo = DAG.getNode(ISD::SELECT, dl, NVT, isShort, LoS, LoL);
|
|
|
|
- Hi = DAG.getNode(ISD::SELECT, dl, NVT, isShort, HiS, HiL);
|
|
|
|
|
|
+ Lo = DAG.getSelect(dl, NVT, isShort, LoS, LoL);
|
|
|
|
+ Hi = DAG.getSelect(dl, NVT, isShort, HiS, HiL);
|
|
return true;
|
|
return true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1558,13 +1558,13 @@ void DAGTypeLegalizer::ExpandIntRes_ADDSUB(SDNode *N,
|
|
Hi = DAG.getNode(ISD::ADD, dl, NVT, HiOps, 2);
|
|
Hi = DAG.getNode(ISD::ADD, dl, NVT, HiOps, 2);
|
|
SDValue Cmp1 = DAG.getSetCC(dl, getSetCCResultType(NVT), Lo, LoOps[0],
|
|
SDValue Cmp1 = DAG.getSetCC(dl, getSetCCResultType(NVT), Lo, LoOps[0],
|
|
ISD::SETULT);
|
|
ISD::SETULT);
|
|
- SDValue Carry1 = DAG.getNode(ISD::SELECT, dl, NVT, Cmp1,
|
|
|
|
- DAG.getConstant(1, NVT),
|
|
|
|
- DAG.getConstant(0, NVT));
|
|
|
|
|
|
+ SDValue Carry1 = DAG.getSelect(dl, NVT, Cmp1,
|
|
|
|
+ DAG.getConstant(1, NVT),
|
|
|
|
+ DAG.getConstant(0, NVT));
|
|
SDValue Cmp2 = DAG.getSetCC(dl, getSetCCResultType(NVT), Lo, LoOps[1],
|
|
SDValue Cmp2 = DAG.getSetCC(dl, getSetCCResultType(NVT), Lo, LoOps[1],
|
|
ISD::SETULT);
|
|
ISD::SETULT);
|
|
- SDValue Carry2 = DAG.getNode(ISD::SELECT, dl, NVT, Cmp2,
|
|
|
|
- DAG.getConstant(1, NVT), Carry1);
|
|
|
|
|
|
+ SDValue Carry2 = DAG.getSelect(dl, NVT, Cmp2,
|
|
|
|
+ DAG.getConstant(1, NVT), Carry1);
|
|
Hi = DAG.getNode(ISD::ADD, dl, NVT, Hi, Carry2);
|
|
Hi = DAG.getNode(ISD::ADD, dl, NVT, Hi, Carry2);
|
|
} else {
|
|
} else {
|
|
Lo = DAG.getNode(ISD::SUB, dl, NVT, LoOps, 2);
|
|
Lo = DAG.getNode(ISD::SUB, dl, NVT, LoOps, 2);
|
|
@@ -1572,9 +1572,9 @@ void DAGTypeLegalizer::ExpandIntRes_ADDSUB(SDNode *N,
|
|
SDValue Cmp =
|
|
SDValue Cmp =
|
|
DAG.getSetCC(dl, getSetCCResultType(LoOps[0].getValueType()),
|
|
DAG.getSetCC(dl, getSetCCResultType(LoOps[0].getValueType()),
|
|
LoOps[0], LoOps[1], ISD::SETULT);
|
|
LoOps[0], LoOps[1], ISD::SETULT);
|
|
- SDValue Borrow = DAG.getNode(ISD::SELECT, dl, NVT, Cmp,
|
|
|
|
- DAG.getConstant(1, NVT),
|
|
|
|
- DAG.getConstant(0, NVT));
|
|
|
|
|
|
+ SDValue Borrow = DAG.getSelect(dl, NVT, Cmp,
|
|
|
|
+ DAG.getConstant(1, NVT),
|
|
|
|
+ DAG.getConstant(0, NVT));
|
|
Hi = DAG.getNode(ISD::SUB, dl, NVT, Hi, Borrow);
|
|
Hi = DAG.getNode(ISD::SUB, dl, NVT, Hi, Borrow);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -1725,9 +1725,9 @@ void DAGTypeLegalizer::ExpandIntRes_CTLZ(SDNode *N,
|
|
SDValue LoLZ = DAG.getNode(N->getOpcode(), dl, NVT, Lo);
|
|
SDValue LoLZ = DAG.getNode(N->getOpcode(), dl, NVT, Lo);
|
|
SDValue HiLZ = DAG.getNode(ISD::CTLZ_ZERO_UNDEF, dl, NVT, Hi);
|
|
SDValue HiLZ = DAG.getNode(ISD::CTLZ_ZERO_UNDEF, dl, NVT, Hi);
|
|
|
|
|
|
- Lo = DAG.getNode(ISD::SELECT, dl, NVT, HiNotZero, HiLZ,
|
|
|
|
- DAG.getNode(ISD::ADD, dl, NVT, LoLZ,
|
|
|
|
- DAG.getConstant(NVT.getSizeInBits(), NVT)));
|
|
|
|
|
|
+ Lo = DAG.getSelect(dl, NVT, HiNotZero, HiLZ,
|
|
|
|
+ DAG.getNode(ISD::ADD, dl, NVT, LoLZ,
|
|
|
|
+ DAG.getConstant(NVT.getSizeInBits(), NVT)));
|
|
Hi = DAG.getConstant(0, NVT);
|
|
Hi = DAG.getConstant(0, NVT);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1755,9 +1755,9 @@ void DAGTypeLegalizer::ExpandIntRes_CTTZ(SDNode *N,
|
|
SDValue LoLZ = DAG.getNode(ISD::CTTZ_ZERO_UNDEF, dl, NVT, Lo);
|
|
SDValue LoLZ = DAG.getNode(ISD::CTTZ_ZERO_UNDEF, dl, NVT, Lo);
|
|
SDValue HiLZ = DAG.getNode(N->getOpcode(), dl, NVT, Hi);
|
|
SDValue HiLZ = DAG.getNode(N->getOpcode(), dl, NVT, Hi);
|
|
|
|
|
|
- Lo = DAG.getNode(ISD::SELECT, dl, NVT, LoNotZero, LoLZ,
|
|
|
|
- DAG.getNode(ISD::ADD, dl, NVT, HiLZ,
|
|
|
|
- DAG.getConstant(NVT.getSizeInBits(), NVT)));
|
|
|
|
|
|
+ Lo = DAG.getSelect(dl, NVT, LoNotZero, LoLZ,
|
|
|
|
+ DAG.getNode(ISD::ADD, dl, NVT, HiLZ,
|
|
|
|
+ DAG.getConstant(NVT.getSizeInBits(), NVT)));
|
|
Hi = DAG.getConstant(0, NVT);
|
|
Hi = DAG.getConstant(0, NVT);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2289,14 +2289,14 @@ void DAGTypeLegalizer::ExpandIntRes_XMULO(SDNode *N,
|
|
// make sure we aren't using 0.
|
|
// make sure we aren't using 0.
|
|
SDValue isZero = DAG.getSetCC(dl, getSetCCResultType(VT),
|
|
SDValue isZero = DAG.getSetCC(dl, getSetCCResultType(VT),
|
|
RHS, DAG.getConstant(0, VT), ISD::SETEQ);
|
|
RHS, DAG.getConstant(0, VT), ISD::SETEQ);
|
|
- SDValue NotZero = DAG.getNode(ISD::SELECT, dl, VT, isZero,
|
|
|
|
- DAG.getConstant(1, VT), RHS);
|
|
|
|
|
|
+ SDValue NotZero = DAG.getSelect(dl, VT, isZero,
|
|
|
|
+ DAG.getConstant(1, VT), RHS);
|
|
SDValue DIV = DAG.getNode(ISD::UDIV, dl, VT, MUL, NotZero);
|
|
SDValue DIV = DAG.getNode(ISD::UDIV, dl, VT, MUL, NotZero);
|
|
SDValue Overflow = DAG.getSetCC(dl, N->getValueType(1), DIV, LHS,
|
|
SDValue Overflow = DAG.getSetCC(dl, N->getValueType(1), DIV, LHS,
|
|
ISD::SETNE);
|
|
ISD::SETNE);
|
|
- Overflow = DAG.getNode(ISD::SELECT, dl, N->getValueType(1), isZero,
|
|
|
|
- DAG.getConstant(0, N->getValueType(1)),
|
|
|
|
- Overflow);
|
|
|
|
|
|
+ Overflow = DAG.getSelect(dl, N->getValueType(1), isZero,
|
|
|
|
+ DAG.getConstant(0, N->getValueType(1)),
|
|
|
|
+ Overflow);
|
|
ReplaceValueWith(SDValue(N, 1), Overflow);
|
|
ReplaceValueWith(SDValue(N, 1), Overflow);
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
@@ -2601,8 +2601,8 @@ void DAGTypeLegalizer::IntegerExpandSetCCOperands(SDValue &NewLHS,
|
|
if (!NewLHS.getNode())
|
|
if (!NewLHS.getNode())
|
|
NewLHS = DAG.getSetCC(dl, getSetCCResultType(LHSHi.getValueType()),
|
|
NewLHS = DAG.getSetCC(dl, getSetCCResultType(LHSHi.getValueType()),
|
|
LHSHi, RHSHi, ISD::SETEQ);
|
|
LHSHi, RHSHi, ISD::SETEQ);
|
|
- NewLHS = DAG.getNode(ISD::SELECT, dl, Tmp1.getValueType(),
|
|
|
|
- NewLHS, Tmp1, Tmp2);
|
|
|
|
|
|
+ NewLHS = DAG.getSelect(dl, Tmp1.getValueType(),
|
|
|
|
+ NewLHS, Tmp1, Tmp2);
|
|
NewRHS = SDValue();
|
|
NewRHS = SDValue();
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2830,8 +2830,8 @@ SDValue DAGTypeLegalizer::ExpandIntOp_UINT_TO_FP(SDNode *N) {
|
|
SDValue Zero = DAG.getIntPtrConstant(0);
|
|
SDValue Zero = DAG.getIntPtrConstant(0);
|
|
SDValue Four = DAG.getIntPtrConstant(4);
|
|
SDValue Four = DAG.getIntPtrConstant(4);
|
|
if (TLI.isBigEndian()) std::swap(Zero, Four);
|
|
if (TLI.isBigEndian()) std::swap(Zero, Four);
|
|
- SDValue Offset = DAG.getNode(ISD::SELECT, dl, Zero.getValueType(), SignSet,
|
|
|
|
- Zero, Four);
|
|
|
|
|
|
+ SDValue Offset = DAG.getSelect(dl, Zero.getValueType(), SignSet,
|
|
|
|
+ Zero, Four);
|
|
unsigned Alignment = cast<ConstantPoolSDNode>(FudgePtr)->getAlignment();
|
|
unsigned Alignment = cast<ConstantPoolSDNode>(FudgePtr)->getAlignment();
|
|
FudgePtr = DAG.getNode(ISD::ADD, dl, TLI.getPointerTy(), FudgePtr, Offset);
|
|
FudgePtr = DAG.getNode(ISD::ADD, dl, TLI.getPointerTy(), FudgePtr, Offset);
|
|
Alignment = std::min(Alignment, 4u);
|
|
Alignment = std::min(Alignment, 4u);
|