mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-24 03:25:00 +00:00
Change TargetLowering::isCondCodeLegal to take an MVT, instead of EVT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@170524 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
16537418f4
commit
fdbeb057b8
@ -524,10 +524,10 @@ public:
|
||||
|
||||
/// isCondCodeLegal - Return true if the specified condition code is legal
|
||||
/// on this target.
|
||||
bool isCondCodeLegal(ISD::CondCode CC, EVT VT) const {
|
||||
bool isCondCodeLegal(ISD::CondCode CC, MVT VT) const {
|
||||
return
|
||||
getCondCodeAction(CC, VT.getSimpleVT()) == Legal ||
|
||||
getCondCodeAction(CC, VT.getSimpleVT()) == Custom;
|
||||
getCondCodeAction(CC, VT) == Legal ||
|
||||
getCondCodeAction(CC, VT) == Custom;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2632,7 +2632,8 @@ SDValue DAGCombiner::visitAND(SDNode *N) {
|
||||
bool isInteger = LL.getValueType().isInteger();
|
||||
ISD::CondCode Result = ISD::getSetCCAndOperation(Op0, Op1, isInteger);
|
||||
if (Result != ISD::SETCC_INVALID &&
|
||||
(!LegalOperations || TLI.isCondCodeLegal(Result, LL.getValueType())))
|
||||
(!LegalOperations ||
|
||||
TLI.isCondCodeLegal(Result, LL.getSimpleValueType())))
|
||||
return DAG.getSetCC(N->getDebugLoc(), N0.getValueType(),
|
||||
LL, LR, Result);
|
||||
}
|
||||
@ -3141,7 +3142,8 @@ SDValue DAGCombiner::visitOR(SDNode *N) {
|
||||
bool isInteger = LL.getValueType().isInteger();
|
||||
ISD::CondCode Result = ISD::getSetCCOrOperation(Op0, Op1, isInteger);
|
||||
if (Result != ISD::SETCC_INVALID &&
|
||||
(!LegalOperations || TLI.isCondCodeLegal(Result, LL.getValueType())))
|
||||
(!LegalOperations ||
|
||||
TLI.isCondCodeLegal(Result, LL.getSimpleValueType())))
|
||||
return DAG.getSetCC(N->getDebugLoc(), N0.getValueType(),
|
||||
LL, LR, Result);
|
||||
}
|
||||
@ -3404,7 +3406,8 @@ SDValue DAGCombiner::visitXOR(SDNode *N) {
|
||||
ISD::CondCode NotCC = ISD::getSetCCInverse(cast<CondCodeSDNode>(CC)->get(),
|
||||
isInt);
|
||||
|
||||
if (!LegalOperations || TLI.isCondCodeLegal(NotCC, LHS.getValueType())) {
|
||||
if (!LegalOperations ||
|
||||
TLI.isCondCodeLegal(NotCC, LHS.getSimpleValueType())) {
|
||||
switch (N0.getOpcode()) {
|
||||
default:
|
||||
llvm_unreachable("Unhandled SetCC Equivalent!");
|
||||
|
@ -2414,36 +2414,36 @@ TargetLowering::SimplifySetCC(EVT VT, SDValue N0, SDValue N1,
|
||||
|
||||
// If the condition is not legal, see if we can find an equivalent one
|
||||
// which is legal.
|
||||
if (!isCondCodeLegal(Cond, N0.getValueType())) {
|
||||
if (!isCondCodeLegal(Cond, N0.getSimpleValueType())) {
|
||||
// If the comparison was an awkward floating-point == or != and one of
|
||||
// the comparison operands is infinity or negative infinity, convert the
|
||||
// condition to a less-awkward <= or >=.
|
||||
if (CFP->getValueAPF().isInfinity()) {
|
||||
if (CFP->getValueAPF().isNegative()) {
|
||||
if (Cond == ISD::SETOEQ &&
|
||||
isCondCodeLegal(ISD::SETOLE, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETOLE, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETOLE);
|
||||
if (Cond == ISD::SETUEQ &&
|
||||
isCondCodeLegal(ISD::SETOLE, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETOLE, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETULE);
|
||||
if (Cond == ISD::SETUNE &&
|
||||
isCondCodeLegal(ISD::SETUGT, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETUGT, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETUGT);
|
||||
if (Cond == ISD::SETONE &&
|
||||
isCondCodeLegal(ISD::SETUGT, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETUGT, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETOGT);
|
||||
} else {
|
||||
if (Cond == ISD::SETOEQ &&
|
||||
isCondCodeLegal(ISD::SETOGE, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETOGE, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETOGE);
|
||||
if (Cond == ISD::SETUEQ &&
|
||||
isCondCodeLegal(ISD::SETOGE, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETOGE, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETUGE);
|
||||
if (Cond == ISD::SETUNE &&
|
||||
isCondCodeLegal(ISD::SETULT, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETULT, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETULT);
|
||||
if (Cond == ISD::SETONE &&
|
||||
isCondCodeLegal(ISD::SETULT, N0.getValueType()))
|
||||
isCondCodeLegal(ISD::SETULT, N0.getSimpleValueType()))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, ISD::SETOLT);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user