[PATCH] D140850: [Patch 2/4]: Add optimizations for icmp eq/ne (mul(X, Y), 0)

Noah Goldstein via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 4 09:09:58 PST 2023


goldstein.w.n added a comment.

In D140850#4025580 <https://reviews.llvm.org/D140850#4025580>, @nikic wrote:

> Proofs:
>
> Both odd: https://alive2.llvm.org/ce/z/9qgwMo
> One odd: https://alive2.llvm.org/ce/z/vRqUQO
> Non-zero nuw: https://alive2.llvm.org/ce/z/3Bqx2-
> Non-zero nsw: https://alive2.llvm.org/ce/z/AybG6r
>
> From the test diffs, I don't see any cases where we actually hit the true/false case. Presumably, this get's reliably handled by the "icmp eq isKnownNonZero, 0" fold in InstSimplify. If that's the case, we can omit handling for that.

We start hitting it in: https://reviews.llvm.org/D140851
See: `define i64 @mul_assume_V_oddV_s64_setz(i64 %v, i64 %other)`

Before then the missing cases in analysis was getting in the way. Could probably create a case where
it works at this patch. Would you like to add one?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D140850/new/

https://reviews.llvm.org/D140850



More information about the llvm-commits mailing list