[PATCH] D122077: [InstCombine] Fold (ctpop(X) == 1) | (X == 0) into ctpop(X) < 2
Sanjay Patel via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Mar 21 08:11:36 PDT 2022
spatel added inline comments.
================
Comment at: llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp:916
+/// fold (icmp ne ctpop(X) 1) & (icmp ne X 0) into (icmp uge ctpop(X) 2).
+static Value *foldOrOfCtpop(ICmpInst *Cmp0, ICmpInst *Cmp1, bool IsAnd,
+ InstCombiner::BuilderTy &Builder) {
----------------
This name is too specific now that we are handling 'and'. It could be called "foldIsPowerOf2OrZero" to match the transform below?
================
Comment at: llvm/test/Transforms/InstCombine/ispow2.ll:540
define i1 @isnot_pow2_ctpop_wrong_pred1(i32 %x) {
; CHECK-LABEL: @isnot_pow2_ctpop_wrong_pred1(
----------------
It seems better to rename this test and the next one now that we can optimize it - "is_pow2_or_zero" or similar.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D122077/new/
https://reviews.llvm.org/D122077
More information about the cfe-commits
mailing list