[llvm] 725fcf4 - [KnownBits] Reduce number of overflow checks for uadd/sub_sat (NFCI)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Wed May 24 02:17:06 PDT 2023
Author: Nikita Popov
Date: 2023-05-24T11:16:58+02:00
New Revision: 725fcf40c3e55b2c03a1ed2326375984c0a8560f
URL: https://github.com/llvm/llvm-project/commit/725fcf40c3e55b2c03a1ed2326375984c0a8560f
DIFF: https://github.com/llvm/llvm-project/commit/725fcf40c3e55b2c03a1ed2326375984c0a8560f.diff
LOG: [KnownBits] Reduce number of overflow checks for uadd/sub_sat (NFCI)
Only check for overflow on the min/max values, don't also check
for predicates in addition to that.
Added:
Modified:
llvm/lib/Support/KnownBits.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Support/KnownBits.cpp b/llvm/lib/Support/KnownBits.cpp
index c665f8a30597..d52f08739be7 100644
--- a/llvm/lib/Support/KnownBits.cpp
+++ b/llvm/lib/Support/KnownBits.cpp
@@ -491,29 +491,25 @@ static KnownBits computeForSatAddSub(bool Add, bool Signed,
}
} else if (Add) {
// uadd.sat
- Overflow = KnownBits::ult(Res, RHS);
- if (!Overflow)
- Overflow = KnownBits::ult(Res, LHS);
- if (!Overflow) {
- bool Of;
+ bool Of;
+ (void)LHS.getMaxValue().uadd_ov(RHS.getMaxValue(), Of);
+ if (!Of) {
+ Overflow = false;
+ } else {
(void)LHS.getMinValue().uadd_ov(RHS.getMinValue(), Of);
if (Of)
Overflow = true;
- (void)LHS.getMaxValue().uadd_ov(RHS.getMaxValue(), Of);
- if (!Of)
- Overflow = false;
}
} else {
// usub.sat
- Overflow = KnownBits::ugt(Res, LHS);
- if (!Overflow) {
- bool Of;
+ bool Of;
+ (void)LHS.getMinValue().usub_ov(RHS.getMaxValue(), Of);
+ if (!Of) {
+ Overflow = false;
+ } else {
(void)LHS.getMaxValue().usub_ov(RHS.getMinValue(), Of);
if (Of)
- Overflow = Of;
- (void)LHS.getMinValue().usub_ov(RHS.getMaxValue(), Of);
- if (!Of)
- Overflow = Of;
+ Overflow = true;
}
}
More information about the llvm-commits
mailing list