[llvm] 20f87d8 - [InstCombine] computeKnownBitsMul - use KnownBits::isNonZero() helper.
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 6 09:43:49 PST 2020
On Fri, Nov 6, 2020 at 6:41 PM Simon Pilgrim via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
>
> Author: Simon Pilgrim
> Date: 2020-11-06T17:27:13Z
> New Revision: 20f87d82ed31fff7f11b893d0fef5111295a6cce
>
> URL:
> https://github.com/llvm/llvm-project/commit/20f87d82ed31fff7f11b893d0fef5111295a6cce
> DIFF:
> https://github.com/llvm/llvm-project/commit/20f87d82ed31fff7f11b893d0fef5111295a6cce.diff
>
> LOG: [InstCombine] computeKnownBitsMul - use KnownBits::isNonZero() helper.
>
> Avoid an expensive isKnownNonZero() call - this is a small cleanup before
> moving the extra NSW functionality from computeKnownBitsMul into
> KnownBits::computeForMul.
>
> Added:
>
>
> Modified:
> llvm/include/llvm/Support/KnownBits.h
> llvm/lib/Analysis/ValueTracking.cpp
>
> Removed:
>
>
>
>
> ################################################################################
> diff --git a/llvm/include/llvm/Support/KnownBits.h
> b/llvm/include/llvm/Support/KnownBits.h
> index de1c0cdf9177..40470b6e0f7b 100644
> --- a/llvm/include/llvm/Support/KnownBits.h
> +++ b/llvm/include/llvm/Support/KnownBits.h
> @@ -97,6 +97,9 @@ struct KnownBits {
> /// Returns true if this value is known to be non-negative.
> bool isNonNegative() const { return Zero.isSignBitSet(); }
>
> + /// Returns true if this value is known to be non-zero.
> + bool isNonZero() const { return One.countPopulation() != 0; }
> +
>
Can't you write this as just "One != 0"?
Nikita
> /// Returns true if this value is known to be positive.
> bool isStrictlyPositive() const { return Zero.isSignBitSet() &&
> !One.isNullValue(); }
>
>
> diff --git a/llvm/lib/Analysis/ValueTracking.cpp
> b/llvm/lib/Analysis/ValueTracking.cpp
> index 44cf4f80b59d..db591ce67709 100644
> --- a/llvm/lib/Analysis/ValueTracking.cpp
> +++ b/llvm/lib/Analysis/ValueTracking.cpp
> @@ -436,10 +436,10 @@ static void computeKnownBitsMul(const Value *Op0,
> const Value *Op1, bool NSW,
> // The product of a negative number and a non-negative number is
> either
> // negative or zero.
> if (!isKnownNonNegative)
> - isKnownNegative = (isKnownNegativeOp1 && isKnownNonNegativeOp0 &&
> - isKnownNonZero(Op0, Depth, Q)) ||
> - (isKnownNegativeOp0 && isKnownNonNegativeOp1 &&
> - isKnownNonZero(Op1, Depth, Q));
> + isKnownNegative =
> + (isKnownNegativeOp1 && isKnownNonNegativeOp0 &&
> + Known2.isNonZero()) ||
> + (isKnownNegativeOp0 && isKnownNonNegativeOp1 &&
> Known.isNonZero());
> }
> }
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201106/a6505568/attachment.html>
More information about the llvm-commits
mailing list