[llvm] [LoopVectorizer] Add support for partial reductions (PR #92418)
Sam Tebbs via llvm-commits
llvm-commits at lists.llvm.org
Mon Nov 18 09:14:21 PST 2024
================
@@ -22,6 +22,25 @@ class LoopVectorizationLegality;
class LoopVectorizationCostModel;
class TargetLibraryInfo;
struct HistogramInfo;
+class TargetTransformInfo;
+
+/// A chain of instructions that form a partial reduction.
+/// Designed to match: reduction_bin_op (bin_op (extend (A), (extend (B))),
+/// accumulator).
+struct PartialReductionChain {
+ /// 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;
+
+ Instruction *BinOp;
+
+ /// The scaling factor between the size of the reduction type and the
+ /// (possibly extended) inputs.
+ unsigned ScaleFactor;
----------------
SamTebbs33 wrote:
I've moved to to the partial reduction map.
https://github.com/llvm/llvm-project/pull/92418
More information about the llvm-commits
mailing list