[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