mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Change TargetLowering::isCondCodeLegal to take an MVT, instead of EVT.
llvm-svn: 169843
This commit is contained in:
parent
cfd4d97792
commit
7692ba3a13
@ -534,10 +534,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);
|
||||
}
|
||||
@ -3140,7 +3141,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);
|
||||
}
|
||||
@ -3403,7 +3405,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!");
|
||||
|
@ -2405,36 +2405,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…
Reference in New Issue
Block a user