[llvm] [LV] Use ExtractLane(LastActiveLane, V) live outs when tail-folding. (PR #149042)
Luke Lau via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 17 02:00:37 PDT 2025
================
@@ -221,6 +225,44 @@ bool VPlanVerifier::verifyEVLRecipe(const VPInstruction &EVL) const {
});
}
+bool VPlanVerifier::verifyLastActiveLaneRecipe(
+ const VPInstruction &LastActiveLane) const {
+ assert(LastActiveLane.getOpcode() == VPInstruction::LastActiveLane &&
+ "must be called with VPInstruction::LastActiveLane");
+
+ if (LastActiveLane.getNumOperands() < 1) {
+ errs() << "LastActiveLane must have at least one operand\n";
+ return false;
+ }
+
+ const VPlan &Plan = *LastActiveLane.getParent()->getPlan();
+ // All operands must be prefix-mask. Currently we check for header masks or
+ // EVL-derived masks, as those are currently the only operands in practice,
+ // but this may need updating in the future..
+ for (VPValue *Op : LastActiveLane.operands()) {
+ if (vputils::isHeaderMask(Op, Plan))
+ continue;
+
+ // Masks derived from EVL are also fine.
+ auto BroadcastOrEVL =
+ m_CombineOr(m_Broadcast(m_VPValue()), m_EVL(m_VPValue()));
----------------
lukel97 wrote:
Should this be
```suggestion
m_CombineOr(m_Broadcast(m_EVL(m_VPValue())), m_EVL(m_VPValue()));
```
https://github.com/llvm/llvm-project/pull/149042
More information about the llvm-commits
mailing list