[InstCombine] Add transforms for `(icmp upred (or X, Y), X)`
We can simplify ule/ugt -> eq/ne and we can remove the `Or` in some cases of eq/ne. `icmp (X | Y) u<= X` --> `(X | Y) == X` - https://alive2.llvm.org/ce/z/qnbbPv `icmp (X | Y) u> X` --> `(X | Y) != X` - https://alive2.llvm.org/ce/z/fvLqg3 `icmp (X | Y) eq/ne X` - --> `(~X & Y) eq/ne 0` iff X is freely invertible - --> `(X & ~Y) eq/ne -1` iff Y is freely invertible - https://alive2.llvm.org/ce/z/cpPV_W Reviewed By: nikic Differential Revision: https://reviews.llvm.org/D144610
Loading
Please sign in to comment