diff --git a/llvm/include/llvm/CodeGen/ISDOpcodes.h b/llvm/include/llvm/CodeGen/ISDOpcodes.h --- a/llvm/include/llvm/CodeGen/ISDOpcodes.h +++ b/llvm/include/llvm/CodeGen/ISDOpcodes.h @@ -1099,13 +1099,11 @@ /// SetCC operation. CondCode getSetCCInverse(CondCode Operation, EVT Type); - /// Return the operation corresponding to !(X op Y), where 'op' is a valid - /// SetCC operation. - CondCode getSetCCInverseInt(CondCode Operation); - - /// Return the operation corresponding to !(X op Y), where 'op' is a valid - /// SetCC operation. - CondCode getSetCCInverseFloat(CondCode Operation); + namespace GlobalISel { + /// Return the operation corresponding to !(X op Y), where 'op' is a valid + /// SetCC operation. + CondCode getSetCCInverse(CondCode Operation, bool isInteger); + } // end namespace GlobalISel /// Return the operation corresponding to (Y op X) when given the operation /// for (X op Y). diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -356,16 +356,12 @@ (OldG << 2)); // New L bit. } -ISD::CondCode ISD::getSetCCInverse(ISD::CondCode Op, EVT Type) { - bool IsInteger = Type.isInteger(); - if (IsInteger) - return getSetCCInverseInt(Op); - return getSetCCInverseFloat(Op); -} - -ISD::CondCode ISD::getSetCCInverseInt(ISD::CondCode Op) { +static ISD::CondCode getSetCCInverseImpl(ISD::CondCode Op, bool isInteger) { unsigned Operation = Op; - Operation ^= 7; // Flip L, G, E bits, but not U. + if (isInteger) + Operation ^= 7; // Flip L, G, E bits, but not U. + else + Operation ^= 15; // Flip all of the condition bits. if (Operation > ISD::SETTRUE2) Operation &= ~8; // Don't let N and U bits get set. @@ -373,14 +369,13 @@ return ISD::CondCode(Operation); } -ISD::CondCode ISD::getSetCCInverseFloat(ISD::CondCode Op) { - unsigned Operation = Op; - Operation ^= 15; // Flip all of the condition bits. - - if (Operation > ISD::SETTRUE2) - Operation &= ~8; // Don't let N and U bits get set. +ISD::CondCode ISD::getSetCCInverse(ISD::CondCode Op, EVT Type) { + return getSetCCInverseImpl(Op, Type.isInteger()); +} - return ISD::CondCode(Operation); +ISD::CondCode ISD::GlobalISel::getSetCCInverse(ISD::CondCode Op, + bool isInteger) { + return getSetCCInverseImpl(Op, isInteger); } /// For an integer comparison, return 1 if the comparison is a signed operation