[llvm-branch-commits] [llvm] [ConstantFolding] Add constant folding for mask.beforefirst (PR #234472)
Nikita Popov via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Oct 22 01:18: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;
----------------
nikic wrote:
Undef seems unlikely to be relevant in this context, I'd rather just not handle it.
We could also ignore unknown elements of SeenActive is already true. But again, that seems unlikely to be relevant (would need a constant expression inside the vector).
https://github.com/llvm/llvm-project/pull/234472
More information about the llvm-branch-commits
mailing list