forked from OSchip/llvm-project
[ValueTracking] Use m_APInt instead of m_ConstantInt, NFC
This change would add functionality if isImpliedCondition worked on vector types; but since it bail out on vector predicates this change is an NFC. llvm-svn: 252672
This commit is contained in:
parent
4353b30542
commit
af1400f84b
|
@ -4103,6 +4103,7 @@ static bool isTruePredicate(CmpInst::Predicate Pred, Value *LHS, Value *RHS,
|
||||||
const DataLayout &DL, unsigned Depth,
|
const DataLayout &DL, unsigned Depth,
|
||||||
AssumptionCache *AC, const Instruction *CxtI,
|
AssumptionCache *AC, const Instruction *CxtI,
|
||||||
const DominatorTree *DT) {
|
const DominatorTree *DT) {
|
||||||
|
assert(!LHS->getType()->isVectorTy() && "TODO: extend to handle vectors!");
|
||||||
if (ICmpInst::isTrueWhenEqual(Pred) && LHS == RHS)
|
if (ICmpInst::isTrueWhenEqual(Pred) && LHS == RHS)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
@ -4112,27 +4113,27 @@ static bool isTruePredicate(CmpInst::Predicate Pred, Value *LHS, Value *RHS,
|
||||||
|
|
||||||
case CmpInst::ICMP_SLT:
|
case CmpInst::ICMP_SLT:
|
||||||
case CmpInst::ICMP_SLE: {
|
case CmpInst::ICMP_SLE: {
|
||||||
ConstantInt *CI;
|
const APInt *C;
|
||||||
|
|
||||||
// LHS s< LHS +_{nsw} C if C > 0
|
// LHS s< LHS +_{nsw} C if C > 0
|
||||||
// LHS s<= LHS +_{nsw} C if C >= 0
|
// LHS s<= LHS +_{nsw} C if C >= 0
|
||||||
if (match(RHS, m_NSWAdd(m_Specific(LHS), m_ConstantInt(CI)))) {
|
if (match(RHS, m_NSWAdd(m_Specific(LHS), m_APInt(C)))) {
|
||||||
if (Pred == CmpInst::ICMP_SLT)
|
if (Pred == CmpInst::ICMP_SLT)
|
||||||
return CI->getValue().isStrictlyPositive();
|
return C->isStrictlyPositive();
|
||||||
return !CI->isNegative();
|
return !C->isNegative();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
case CmpInst::ICMP_ULT:
|
case CmpInst::ICMP_ULT:
|
||||||
case CmpInst::ICMP_ULE: {
|
case CmpInst::ICMP_ULE: {
|
||||||
ConstantInt *CI;
|
const APInt *C;
|
||||||
|
|
||||||
// LHS u< LHS +_{nuw} C if C != 0
|
// LHS u< LHS +_{nuw} C if C != 0
|
||||||
// LHS u<= LHS +_{nuw} C
|
// LHS u<= LHS +_{nuw} C
|
||||||
if (match(RHS, m_NUWAdd(m_Specific(LHS), m_ConstantInt(CI)))) {
|
if (match(RHS, m_NUWAdd(m_Specific(LHS), m_APInt(C)))) {
|
||||||
if (Pred == CmpInst::ICMP_ULT)
|
if (Pred == CmpInst::ICMP_ULT)
|
||||||
return !CI->isZero();
|
return C->isMinValue();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Reference in New Issue