[llvm-branch-commits] [llvm] [ConstantFolding] Add constant folding for mask.beforefirst (PR #234472)

Luke Lau via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Thu Oct 22 01:23:53 PDT 2026


================
@@ -4551,6 +4552,20 @@ static Constant *ConstantFoldFixedVectorCall(
     }
     return nullptr;
   }
+  case Intrinsic::mask_beforefirst: {
+    bool SeenActive = false;
+    for (unsigned I = 0, E = FVTy->getNumElements(); I != E; ++I) {
+      Constant *Elt = Operands[0]->getAggregateElement(I);
+      if (isa_and_nonnull<PoisonValue>(Elt))
+        return PoisonValue::get(FVTy);
+      if (auto *CI = dyn_cast_or_null<ConstantInt>(Elt))
+        SeenActive |= CI->isOne();
+      else if (!isa_and_nonnull<UndefValue>(Elt))
+        return nullptr;
----------------
lukel97 wrote:

Not handling undef is fine by me. When used by the loop vectorizer the inputs will always be frozen anyway so it won't make a difference in practice. 

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


More information about the llvm-branch-commits mailing list