[PATCH] D141773: [InstCombine] Generalize (icmp sgt (1 << Y), -1) -> (icmp ne Y, BitWidth-1) to any negative constant.
Roman Lebedev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Jan 14 18:10:26 PST 2023
lebedev.ri added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp:2051
+ // (1 << Y) > C -> Y != 31 if C is negative.
+ if (Pred == ICmpInst::ICMP_SGT && C.sle(0))
return new ICmpInst(ICmpInst::ICMP_NE, Y, BitWidthMinusOne);
----------------
Nitpick: either change the proof to check *this* precondition, or use the same check as in the proof.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp:2057-2058
+ // (1 << Y) < C -> Y == 31 if C is negative and not signed min.
+ // Exclude signed min by subtracting 1 and lower the upper bound to 0.
+ if (Pred == ICmpInst::ICMP_SLT && (C-1).sle(0))
return new ICmpInst(ICmpInst::ICMP_EQ, Y, BitWidthMinusOne);
----------------
Same nitpick. Not what the proof shows.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D141773/new/
https://reviews.llvm.org/D141773
More information about the llvm-commits
mailing list