forked from OSchip/llvm-project
[IR] CmpInst: add getUnsignedPredicate()
There's already getSignedPredicate(), it is not symmetrical to not have it's opposite. I wanted to use it in new code, but it wasn't there..
This commit is contained in:
parent
5e312e0041
commit
a5ae3edaa3
|
@ -920,6 +920,18 @@ public:
|
|||
return getSignedPredicate(getPredicate());
|
||||
}
|
||||
|
||||
/// For example, SLT->ULT, SLE->ULE, SGT->UGT, SGE->UGE, ULT->Failed assert
|
||||
/// @returns the unsigned version of the signed predicate pred.
|
||||
static Predicate getUnsignedPredicate(Predicate pred);
|
||||
|
||||
/// For example, SLT->ULT, SLE->ULE, SGT->UGT, SGE->UGE, ULT->Failed assert
|
||||
/// @returns the unsigned version of the predicate for this instruction (which
|
||||
/// has to be an signed predicate).
|
||||
/// return the unsigned version of a predicate
|
||||
Predicate getUnsignedPredicate() {
|
||||
return getUnsignedPredicate(getPredicate());
|
||||
}
|
||||
|
||||
/// This is just a convenience.
|
||||
/// Determine if this is true when both operands are the same.
|
||||
bool isTrueWhenEqual() const {
|
||||
|
|
|
@ -3847,7 +3847,7 @@ CmpInst::Predicate CmpInst::getNonStrictPredicate(Predicate pred) {
|
|||
}
|
||||
|
||||
CmpInst::Predicate CmpInst::getSignedPredicate(Predicate pred) {
|
||||
assert(CmpInst::isUnsigned(pred) && "Call only with signed predicates!");
|
||||
assert(CmpInst::isUnsigned(pred) && "Call only with unsigned predicates!");
|
||||
|
||||
switch (pred) {
|
||||
default:
|
||||
|
@ -3863,6 +3863,23 @@ CmpInst::Predicate CmpInst::getSignedPredicate(Predicate pred) {
|
|||
}
|
||||
}
|
||||
|
||||
CmpInst::Predicate CmpInst::getUnsignedPredicate(Predicate pred) {
|
||||
assert(CmpInst::isSigned(pred) && "Call only with signed predicates!");
|
||||
|
||||
switch (pred) {
|
||||
default:
|
||||
llvm_unreachable("Unknown predicate!");
|
||||
case CmpInst::ICMP_SLT:
|
||||
return CmpInst::ICMP_ULT;
|
||||
case CmpInst::ICMP_SLE:
|
||||
return CmpInst::ICMP_ULE;
|
||||
case CmpInst::ICMP_SGT:
|
||||
return CmpInst::ICMP_UGT;
|
||||
case CmpInst::ICMP_SGE:
|
||||
return CmpInst::ICMP_UGE;
|
||||
}
|
||||
}
|
||||
|
||||
bool CmpInst::isUnsigned(Predicate predicate) {
|
||||
switch (predicate) {
|
||||
default: return false;
|
||||
|
|
Loading…
Reference in New Issue