mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-15 16:09:57 +00:00
[InstSimplify] add nuw %x, C2 must be at least C2
Use the fact that add nuw always creates a larger bit pattern when trying to simplify comparisons. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@245638 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b4fce5a1c1
commit
bdab9f9f82
@ -2360,6 +2360,9 @@ static Value *SimplifyICmpInst(unsigned Predicate, Value *LHS, Value *RHS,
|
||||
} else if (match(LHS, m_And(m_Value(), m_ConstantInt(CI2)))) {
|
||||
// 'and x, CI2' produces [0, CI2].
|
||||
Upper = CI2->getValue() + 1;
|
||||
} else if (match(LHS, m_NUWAdd(m_Value(), m_ConstantInt(CI2)))) {
|
||||
// 'add nuw x, CI2' produces [CI2, UINT_MAX].
|
||||
Lower = CI2->getValue();
|
||||
}
|
||||
if (Lower != Upper) {
|
||||
ConstantRange LHS_CR = ConstantRange(Lower, Upper);
|
||||
|
@ -1164,3 +1164,11 @@ define i1 @tautological8(i32 %A, i32 %B) {
|
||||
; CHECK-LABEL: @tautological8(
|
||||
; CHECK: ret i1 false
|
||||
}
|
||||
|
||||
define i1 @tautological9(i32 %x) {
|
||||
%add = add nuw i32 %x, 13
|
||||
%cmp = icmp ne i32 %add, 12
|
||||
ret i1 %cmp
|
||||
; CHECK-LABEL: @tautological9(
|
||||
; CHECK: ret i1 true
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user