[llvm] [LV] Simplify the chain traversal in `getScaledReductions()` (NFCI) (PR #184830)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Fri Mar 6 03:18:51 PST 2026
================
@@ -6159,33 +6131,71 @@ getScaledReductions(VPReductionPHIRecipe *RedPhiR, VPValue *PrevValue,
if (!BinOp || !Instruction::isBinaryOp(BinOp->getOpcode()) ||
!MatchExtends(BinOp->operands()))
- return false;
+ return std::nullopt;
} else if (match(UpdateR, m_Add(m_VPValue(), m_VPValue())) ||
match(UpdateR, m_FAdd(m_VPValue(), m_VPValue()))) {
- // We already know the operands for Update are Op and PhiOp.
+ // We already know Op is an operand of UpdateR.
if (!MatchExtends({Op}))
- return false;
+ return std::nullopt;
BinOp = UpdateR;
} else {
- return false;
+ return std::nullopt;
}
+ return ExtendedReductionOperand{BinOp, CastRecipes};
+}
+
+/// Examines reduction operations to see if the target can use a cheaper
+/// operation with a wider per-iteration input VF and narrower PHI VF.
+/// This works backwards from the \p ExitValue examining each operation in
+/// in the reduction.
----------------
fhahn wrote:
```suggestion
/// the reduction.
```
https://github.com/llvm/llvm-project/pull/184830
More information about the llvm-commits
mailing list