[llvm] [LV] Add support for partial reductions without a binary op (PR #133922)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 2 01:13:28 PDT 2025
================
@@ -24,22 +24,23 @@ struct HistogramInfo;
struct VFRange;
/// A chain of instructions that form a partial reduction.
-/// Designed to match: reduction_bin_op (bin_op (extend (A), (extend (B))),
-/// accumulator).
+/// Designed to match either:
+/// reduction_bin_op (extend (A), accumulator), or
+/// reduction_bin_op (bin_op (extend (A), (extend (B))), accumulator).
struct PartialReductionChain {
PartialReductionChain(Instruction *Reduction, Instruction *ExtendA,
- Instruction *ExtendB, Instruction *BinOp)
- : Reduction(Reduction), ExtendA(ExtendA), ExtendB(ExtendB), BinOp(BinOp) {
- }
+ Instruction *ExtendB, Instruction *ExtendUser)
+ : Reduction(Reduction), ExtendA(ExtendA), ExtendB(ExtendB),
+ ExtendUser(ExtendUser) {}
/// The top-level binary operation that forms the reduction to a scalar
/// after the loop body.
Instruction *Reduction;
/// The extension of each of the inner binary operation's operands.
Instruction *ExtendA;
Instruction *ExtendB;
- /// The binary operation using the extends that is then reduced.
- Instruction *BinOp;
+ /// The user of the extend that is then reduced.
----------------
fhahn wrote:
```suggestion
/// The user of the extends that is then reduced.
```
Still for multiple extends, right?
https://github.com/llvm/llvm-project/pull/133922
More information about the llvm-commits
mailing list