[llvm] [InstCombine] Fold Minimum over Trailing/Leading Bits Counts (PR #90402)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 4 11:51:11 PDT 2024
================
@@ -1661,6 +1698,16 @@ Instruction *InstCombinerImpl::visitCallInst(CallInst &CI) {
Value *Cmp = Builder.CreateICmpNE(I0, Zero);
return CastInst::Create(Instruction::ZExt, Cmp, II->getType());
}
+ // umin(cttz(x), const) --> cttz(x | (1 << const))
+ if (Value *FoldedCttz =
+ foldMinimumOverTrailingOrLeadingZeroCount<Intrinsic::cttz>(
+ I0, I1, DL, Builder))
+ return replaceInstUsesWith(*II, FoldedCttz);
+ // umin(ctlz(x), const) --> ctlz(x | ((SignedMin >> const)))
----------------
nikic wrote:
```suggestion
// umin(ctlz(x), const) --> ctlz(x | (SignedMin >> const))
```
https://github.com/llvm/llvm-project/pull/90402
More information about the llvm-commits
mailing list