mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
Add LLVMContext argument to getSetCCResultType
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@182180 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -335,6 +335,12 @@ namespace {
|
||||
if (!LegalTypes) return true;
|
||||
return TLI.isTypeLegal(VT);
|
||||
}
|
||||
|
||||
/// getSetCCResultType - Convenience wrapper around
|
||||
/// TargetLowering::getSetCCResultType
|
||||
EVT getSetCCResultType(EVT VT) const {
|
||||
return TLI.getSetCCResultType(*DAG.getContext(), VT);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2636,7 +2642,7 @@ SDValue DAGCombiner::visitAND(SDNode *N) {
|
||||
(!LegalOperations ||
|
||||
(TLI.isCondCodeLegal(Result, LL.getSimpleValueType()) &&
|
||||
TLI.isOperationLegal(ISD::SETCC,
|
||||
TLI.getSetCCResultType(N0.getSimpleValueType())))))
|
||||
getSetCCResultType(N0.getSimpleValueType())))))
|
||||
return DAG.getSetCC(N->getDebugLoc(), N0.getValueType(),
|
||||
LL, LR, Result);
|
||||
}
|
||||
@@ -3148,7 +3154,7 @@ SDValue DAGCombiner::visitOR(SDNode *N) {
|
||||
(!LegalOperations ||
|
||||
(TLI.isCondCodeLegal(Result, LL.getSimpleValueType()) &&
|
||||
TLI.isOperationLegal(ISD::SETCC,
|
||||
TLI.getSetCCResultType(N0.getValueType())))))
|
||||
getSetCCResultType(N0.getValueType())))))
|
||||
return DAG.getSetCC(N->getDebugLoc(), N0.getValueType(),
|
||||
LL, LR, Result);
|
||||
}
|
||||
@@ -4225,7 +4231,7 @@ SDValue DAGCombiner::visitSELECT_CC(SDNode *N) {
|
||||
return N2;
|
||||
|
||||
// Determine if the condition we're dealing with is constant
|
||||
SDValue SCC = SimplifySetCC(TLI.getSetCCResultType(N0.getValueType()),
|
||||
SDValue SCC = SimplifySetCC(getSetCCResultType(N0.getValueType()),
|
||||
N0, N1, CC, N->getDebugLoc(), false);
|
||||
if (SCC.getNode()) AddToWorkList(SCC.getNode());
|
||||
|
||||
@@ -4508,7 +4514,7 @@ SDValue DAGCombiner::visitSIGN_EXTEND(SDNode *N) {
|
||||
// On some architectures (such as SSE/NEON/etc) the SETCC result type is
|
||||
// of the same size as the compared operands. Only optimize sext(setcc())
|
||||
// if this is the case.
|
||||
EVT SVT = TLI.getSetCCResultType(N0VT);
|
||||
EVT SVT = getSetCCResultType(N0VT);
|
||||
|
||||
// We know that the # elements of the results is the same as the
|
||||
// # elements of the compare (and the # elements of the compare result
|
||||
@@ -4542,10 +4548,10 @@ SDValue DAGCombiner::visitSIGN_EXTEND(SDNode *N) {
|
||||
cast<CondCodeSDNode>(N0.getOperand(2))->get(), true);
|
||||
if (SCC.getNode()) return SCC;
|
||||
if (!VT.isVector() && (!LegalOperations ||
|
||||
TLI.isOperationLegal(ISD::SETCC, TLI.getSetCCResultType(VT))))
|
||||
TLI.isOperationLegal(ISD::SETCC, getSetCCResultType(VT))))
|
||||
return DAG.getNode(ISD::SELECT, N->getDebugLoc(), VT,
|
||||
DAG.getSetCC(N->getDebugLoc(),
|
||||
TLI.getSetCCResultType(VT),
|
||||
getSetCCResultType(VT),
|
||||
N0.getOperand(0), N0.getOperand(1),
|
||||
cast<CondCodeSDNode>(N0.getOperand(2))->get()),
|
||||
NegOne, DAG.getConstant(0, VT));
|
||||
@@ -6815,7 +6821,7 @@ SDValue DAGCombiner::visitBRCOND(SDNode *N) {
|
||||
cast<ConstantSDNode>(Op1)->getAPIntValue()==AndConst.logBase2()) {
|
||||
SDValue SetCC =
|
||||
DAG.getSetCC(N->getDebugLoc(),
|
||||
TLI.getSetCCResultType(Op0.getValueType()),
|
||||
getSetCCResultType(Op0.getValueType()),
|
||||
Op0, DAG.getConstant(0, Op0.getValueType()),
|
||||
ISD::SETNE);
|
||||
|
||||
@@ -6885,7 +6891,7 @@ SDValue DAGCombiner::visitBRCOND(SDNode *N) {
|
||||
|
||||
EVT SetCCVT = N1.getValueType();
|
||||
if (LegalTypes)
|
||||
SetCCVT = TLI.getSetCCResultType(SetCCVT);
|
||||
SetCCVT = getSetCCResultType(SetCCVT);
|
||||
SDValue SetCC = DAG.getSetCC(TheXor->getDebugLoc(),
|
||||
SetCCVT,
|
||||
Op0, Op1,
|
||||
@@ -6916,7 +6922,7 @@ SDValue DAGCombiner::visitBR_CC(SDNode *N) {
|
||||
// MachineBasicBlock CFG, which is awkward.
|
||||
|
||||
// Use SimplifySetCC to simplify SETCC's.
|
||||
SDValue Simp = SimplifySetCC(TLI.getSetCCResultType(CondLHS.getValueType()),
|
||||
SDValue Simp = SimplifySetCC(getSetCCResultType(CondLHS.getValueType()),
|
||||
CondLHS, CondRHS, CC->get(), N->getDebugLoc(),
|
||||
false);
|
||||
if (Simp.getNode()) AddToWorkList(Simp.getNode());
|
||||
@@ -9737,7 +9743,7 @@ SDValue DAGCombiner::SimplifySelectCC(DebugLoc DL, SDValue N0, SDValue N1,
|
||||
ConstantSDNode *N3C = dyn_cast<ConstantSDNode>(N3.getNode());
|
||||
|
||||
// Determine if the condition we're dealing with is constant
|
||||
SDValue SCC = SimplifySetCC(TLI.getSetCCResultType(N0.getValueType()),
|
||||
SDValue SCC = SimplifySetCC(getSetCCResultType(N0.getValueType()),
|
||||
N0, N1, CC, DL, false);
|
||||
if (SCC.getNode()) AddToWorkList(SCC.getNode());
|
||||
ConstantSDNode *SCCC = dyn_cast_or_null<ConstantSDNode>(SCC.getNode());
|
||||
@@ -9803,7 +9809,7 @@ SDValue DAGCombiner::SimplifySelectCC(DebugLoc DL, SDValue N0, SDValue N1,
|
||||
SDValue One = DAG.getIntPtrConstant(EltSize);
|
||||
|
||||
SDValue Cond = DAG.getSetCC(DL,
|
||||
TLI.getSetCCResultType(N0.getValueType()),
|
||||
getSetCCResultType(N0.getValueType()),
|
||||
N0, N1, CC);
|
||||
AddToWorkList(Cond.getNode());
|
||||
SDValue CstOffset = DAG.getNode(ISD::SELECT, DL, Zero.getValueType(),
|
||||
@@ -9906,11 +9912,11 @@ SDValue DAGCombiner::SimplifySelectCC(DebugLoc DL, SDValue N0, SDValue N1,
|
||||
// NOTE: Don't create a SETCC if it's not legal on this target.
|
||||
if (!LegalOperations ||
|
||||
TLI.isOperationLegal(ISD::SETCC,
|
||||
LegalTypes ? TLI.getSetCCResultType(N0.getValueType()) : MVT::i1)) {
|
||||
LegalTypes ? getSetCCResultType(N0.getValueType()) : MVT::i1)) {
|
||||
SDValue Temp, SCC;
|
||||
// cast from setcc result type to select result type
|
||||
if (LegalTypes) {
|
||||
SCC = DAG.getSetCC(DL, TLI.getSetCCResultType(N0.getValueType()),
|
||||
SCC = DAG.getSetCC(DL, getSetCCResultType(N0.getValueType()),
|
||||
N0, N1, CC);
|
||||
if (N2.getValueType().bitsLT(SCC.getValueType()))
|
||||
Temp = DAG.getZeroExtendInReg(SCC, N2.getDebugLoc(),
|
||||
@@ -9943,8 +9949,8 @@ SDValue DAGCombiner::SimplifySelectCC(DebugLoc DL, SDValue N0, SDValue N1,
|
||||
if (0 && N3C && N3C->isNullValue() && N2C && (N2C->getAPIntValue() == 1ULL)) {
|
||||
EVT XType = N0.getValueType();
|
||||
if (!LegalOperations ||
|
||||
TLI.isOperationLegal(ISD::SETCC, TLI.getSetCCResultType(XType))) {
|
||||
SDValue Res = DAG.getSetCC(DL, TLI.getSetCCResultType(XType), N0, N1, CC);
|
||||
TLI.isOperationLegal(ISD::SETCC, getSetCCResultType(XType))) {
|
||||
SDValue Res = DAG.getSetCC(DL, getSetCCResultType(XType), N0, N1, CC);
|
||||
if (Res.getValueType() != VT)
|
||||
Res = DAG.getNode(ISD::ZERO_EXTEND, DL, VT, Res);
|
||||
return Res;
|
||||
|
Reference in New Issue
Block a user