[llvm] [InstCombine] Create `or` as `disjoint` where applicable (PR #193725)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Thu Apr 23 06:59:19 PDT 2026


================
@@ -1921,8 +1921,9 @@ Instruction *InstCombinerImpl::visitAdd(BinaryOperator &I) {
       match(RHS, m_OneUse(m_Intrinsic<Intrinsic::ctpop>(m_Value(B)))) &&
       haveNoCommonBitsSet(A, B, SQ.getWithInstruction(&I)))
     return replaceInstUsesWith(
-        I, Builder.CreateIntrinsic(Intrinsic::ctpop, {I.getType()},
-                                   {Builder.CreateOr(A, B)}));
+        I, Builder.CreateIntrinsic(
+               Intrinsic::ctpop, {I.getType()},
+               {Builder.CreateOr(A, B, "", /*IsDisjoint=*/true)}));
----------------
nikic wrote:

I think it would make sense to add a CreateDisjointOr API.

https://github.com/llvm/llvm-project/pull/193725


More information about the llvm-commits mailing list