[ValueTracking] Add logic for `isKnownNonZero(sshl.sat/ushl.sat X, Y)`
authorNoah Goldstein <goldstein.w.n@gmail.com>
Sun, 30 Apr 2023 14:33:00 +0000 (09:33 -0500)
committerNoah Goldstein <goldstein.w.n@gmail.com>
Sun, 30 Apr 2023 15:06:45 +0000 (10:06 -0500)
commitf1dfa4938a2f608b6288cf55da905a440b2763d6
treefc8e7e5d01a45f3aafbb90fa1bc569f47a420f33
parentea5a0d4b909fb71376686a3c34bbaf05ed47fb3f
[ValueTracking] Add logic for `isKnownNonZero(sshl.sat/ushl.sat X, Y)`

`(sshl/ushl X, Y) != 0` -> `X != 0`

Alive2 Links
    https://alive2.llvm.org/ce/z/4WLM2p
    https://alive2.llvm.org/ce/z/BHFng4

Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D149411
llvm/lib/Analysis/ValueTracking.cpp
llvm/test/Analysis/ValueTracking/known-non-zero.ll