[PATCH] D32686: [InstCombine][KnownBits] Use KnownBits better to detect nsw adds
Craig Topper via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 30 20:56:54 PDT 2017
craig.topper added inline comments.
================
Comment at: lib/Transforms/InstCombine/InstCombineAddSub.cpp:853
+/// Otherwise return false.
+static bool checkRippleForAdd(const KnownBits &RHSKnown,
+ const KnownBits &LHSKnown) {
----------------
The these parameter names are swapped relative to the caller. Prefer LHS followed by RHS.
================
Comment at: lib/Transforms/InstCombine/InstCombineAddSub.cpp:866
+ // there is no overflow to the sign bit.
+ if(RHSKnown.isNonNegative() || LHSKnown.isNonNegative()) {
+ APInt MaxRHS = ~RHSKnown.Zero;
----------------
craig.topper wrote:
> Space between 'if' and 'parenthese'
Also do LHS check first then RHS. Basically as much as possible do everything for LHS before RHS.
================
Comment at: lib/Transforms/InstCombine/InstCombineAddSub.cpp:871
+ MaxLHS.clearSignBit();
+ APInt Result = MaxLHS + MaxRHS;
+ return Result.isSignBitClear();
----------------
craig.topper wrote:
> Wrap both MaxLHS and MaxRHS in std::move so we can reuse one of their allocations to hold the addition result when dealing with larger than 64-bit numbers.
Or better yet, maybe just use MaxLHS += MaxRHS.
https://reviews.llvm.org/D32686
More information about the llvm-commits
mailing list