[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