[llvm] [InstCombine] Fold selects into masked loads (PR #160522)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 24 07:36:47 PDT 2025


================
@@ -4611,5 +4611,17 @@ Instruction *InstCombinerImpl::visitSelectInst(SelectInst &SI) {
       return replaceOperand(SI, 2, ConstantInt::get(FalseVal->getType(), 0));
   }
 
+  Value *MaskedLoadPtr;
+  const APInt *MaskedLoadAlignment;
+  if (TrueVal->hasOneUse() &&
+      match(TrueVal,
+            m_MaskedLoad(m_Value(MaskedLoadPtr), m_APInt(MaskedLoadAlignment),
+                         m_Specific(CondVal), m_Value())))
+    return replaceInstUsesWith(
+        SI, Builder.CreateMaskedLoad(
+                TrueVal->getType(), MaskedLoadPtr,
+                llvm::Align(MaskedLoadAlignment->getZExtValue()), CondVal,
----------------
nikic wrote:

```suggestion
                Align(MaskedLoadAlignment->getZExtValue()), CondVal,
```

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


More information about the llvm-commits mailing list