[Mlir-commits] [mlir] eeb6b39 - [mlir][vector] remove lower_multi_reduction (#182332)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Feb 20 05:33:29 PST 2026
Author: Erick Ochoa Lopez
Date: 2026-02-20T08:33:24-05:00
New Revision: eeb6b394c5739414269e6b7522bd2c5be4b20faf
URL: https://github.com/llvm/llvm-project/commit/eeb6b394c5739414269e6b7522bd2c5be4b20faf
DIFF: https://github.com/llvm/llvm-project/commit/eeb6b394c5739414269e6b7522bd2c5be4b20faf.diff
LOG: [mlir][vector] remove lower_multi_reduction (#182332)
* Removes `ApplyLowerMultiReductionPatternsOp`
(`apply_patterns.vector.lower_multi_reduction`)
* Updates uses of `apply_patterns.vector.lower_multi_reduction` in tests
to use:
* reorder_and_expand_multi_reduction_dims
* multi_reduction_flattening
* multi_reduction_unrolling
* Removes `populateVectorMultiReductionLoweringPatterns` (unused)
Added:
Modified:
mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td
mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h
mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp
mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp
mlir/test/Dialect/LLVM/transform-e2e.mlir
mlir/test/Dialect/Vector/transform-vector.mlir
mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_1d.mlir
mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_2d.mlir
mlir/test/Integration/Dialect/Linalg/CPU/test-matmul-masked-vec.mlir
mlir/test/python/dialects/transform_vector_ext.py
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td b/mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td
index 685c88c17e556..9fec5804d0b3b 100644
--- a/mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td
+++ b/mlir/include/mlir/Dialect/Vector/TransformOps/VectorTransformOps.td
@@ -223,26 +223,6 @@ def ApplyMaterializeMasksPatternsOp : Op<Transform_Dialect,
let assemblyFormat = "attr-dict";
}
-def ApplyLowerMultiReductionPatternsOp : Op<Transform_Dialect,
- "apply_patterns.vector.lower_multi_reduction",
- [DeclareOpInterfaceMethods<PatternDescriptorOpInterface>]> {
- let description = [{
- Indicates that vector multi_reduction-like operations should be lowered to
- finer-grained vector primitives.
-
- This is usually a late step that is run after bufferization as part of the
- process of lowering to e.g. LLVM or NVVM.
- }];
-
- let arguments = (ins DefaultValuedAttr<VectorMultiReductionLoweringAttr,
- "vector::VectorMultiReductionLowering::InnerParallel">:$lowering_strategy
- );
-
- let assemblyFormat = [{
- (`lowering_strategy` `=` $lowering_strategy^)? attr-dict
- }];
-}
-
def ApplyReorderAndExpandMultiReductionPatternsOp: Op<Transform_Dialect,
"apply_patterns.vector.reorder_and_expand_multi_reduction_dims",
[DeclareOpInterfaceMethods<PatternDescriptorOpInterface>]> {
diff --git a/mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h b/mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h
index 33487a9d8d6e0..a933f68732a4d 100644
--- a/mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h
+++ b/mlir/include/mlir/Dialect/Vector/Transforms/LoweringPatterns.h
@@ -103,21 +103,6 @@ void populateVectorMultiReductionUnrollingPatterns(
RewritePatternSet &patterns, VectorMultiReductionLowering options,
PatternBenefit benefit = 1);
-/// Collect a set of patterns to convert vector.multi_reduction op into
-/// a sequence of vector.reduction ops. These patterns are the ones
-/// populated by:
-///
-/// * populateVectorMultiReductionReorderAndExpandPatterns
-/// * populateVectorMultiReductionFlatteningPatterns
-/// * populateVectorMultiReductionUnrollingPatterns
-///
-/// This is just a convenience wrapper that we use in testing and is effectively
-/// deprecated.
-/// TODO: Delete.
-void populateVectorMultiReductionLoweringPatterns(
- RewritePatternSet &patterns, VectorMultiReductionLowering options,
- PatternBenefit benefit = 1);
-
/// Populate the pattern set with the following patterns:
///
/// [TransferReadToVectorLoadLowering]
diff --git a/mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp b/mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp
index 6c97c6501a23e..23118bf3e726a 100644
--- a/mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp
+++ b/mlir/lib/Dialect/Vector/TransformOps/VectorTransformOps.cpp
@@ -126,18 +126,6 @@ void transform::ApplyMaterializeMasksPatternsOp::populatePatterns(
/*force32BitVectorIndices=*/false);
}
-void transform::ApplyLowerMultiReductionPatternsOp::populatePatterns(
- RewritePatternSet &patterns) {
- vector::VectorTransformsOptions vectorTransformOptions;
- vectorTransformOptions.setVectorMultiReductionLowering(getLoweringStrategy());
- vector::populateVectorMultiReductionReorderAndExpandPatterns(
- patterns, vectorTransformOptions.vectorMultiReductionLowering);
- vector::populateVectorMultiReductionFlatteningPatterns(
- patterns, vectorTransformOptions.vectorMultiReductionLowering);
- vector::populateVectorMultiReductionUnrollingPatterns(
- patterns, vectorTransformOptions.vectorMultiReductionLowering);
-}
-
void transform::ApplyReorderAndExpandMultiReductionPatternsOp::populatePatterns(
RewritePatternSet &patterns) {
vector::VectorTransformsOptions vectorTransformOptions;
diff --git a/mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp b/mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp
index fec04c967c9e1..663c43a44781b 100644
--- a/mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp
+++ b/mlir/lib/Dialect/Vector/Transforms/LowerVectorMultiReduction.cpp
@@ -549,15 +549,6 @@ void mlir::vector::populateVectorMultiReductionUnrollingPatterns(
benefit);
}
-void mlir::vector::populateVectorMultiReductionLoweringPatterns(
- RewritePatternSet &patterns, VectorMultiReductionLowering options,
- PatternBenefit benefit) {
- populateVectorMultiReductionReorderAndExpandPatterns(patterns, options,
- benefit);
- populateVectorMultiReductionFlatteningPatterns(patterns, options, benefit);
- populateVectorMultiReductionUnrollingPatterns(patterns, options, benefit);
-}
-
std::unique_ptr<Pass> vector::createLowerVectorMultiReductionPass(
vector::VectorMultiReductionLowering option) {
return std::make_unique<LowerVectorMultiReductionPass>(option);
diff --git a/mlir/test/Dialect/LLVM/transform-e2e.mlir b/mlir/test/Dialect/LLVM/transform-e2e.mlir
index c00b47fb936e9..ab58dda91a914 100644
--- a/mlir/test/Dialect/LLVM/transform-e2e.mlir
+++ b/mlir/test/Dialect/LLVM/transform-e2e.mlir
@@ -30,7 +30,9 @@ module attributes {transform.with_named_sequence} {
transform.apply_patterns to %f {
transform.apply_patterns.vector.lower_contraction lowering_strategy = "outerproduct"
transform.apply_patterns.vector.transfer_permutation_patterns
- transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerparallel"
+ transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims lowering_strategy = "innerparallel"
+ transform.apply_patterns.vector.multi_reduction_flattening lowering_strategy = "innerparallel"
+ transform.apply_patterns.vector.multi_reduction_unrolling lowering_strategy = "innerparallel"
transform.apply_patterns.vector.split_transfer_full_partial split_transfer_strategy = "linalg-copy"
transform.apply_patterns.vector.transfer_to_scf max_transfer_rank = 1 full_unroll = true
transform.apply_patterns.vector.lower_transfer max_transfer_rank = 1
diff --git a/mlir/test/Dialect/Vector/transform-vector.mlir b/mlir/test/Dialect/Vector/transform-vector.mlir
index 524a4f429211b..a37105d573219 100644
--- a/mlir/test/Dialect/Vector/transform-vector.mlir
+++ b/mlir/test/Dialect/Vector/transform-vector.mlir
@@ -39,7 +39,9 @@ module attributes {transform.with_named_sequence} {
} : !transform.any_op
transform.apply_patterns to %f {
- transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerparallel"
+ transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims lowering_strategy = "innerparallel"
+ transform.apply_patterns.vector.multi_reduction_flattening lowering_strategy = "innerparallel"
+ transform.apply_patterns.vector.multi_reduction_unrolling lowering_strategy = "innerparallel"
} : !transform.any_op
transform.apply_patterns to %f {
diff --git a/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_1d.mlir b/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_1d.mlir
index 3090e921553c6..25b65080339d5 100644
--- a/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_1d.mlir
+++ b/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_1d.mlir
@@ -150,7 +150,9 @@ module attributes {transform.with_named_sequence} {
// Step 3: Lower vector.multi_reduction
transform.apply_patterns to %func {
transform.apply_patterns.vector.lower_masked_transfers
- transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.multi_reduction_flattening lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.multi_reduction_unrolling lowering_strategy = "innerreduction"
} : !transform.op<"func.func">
transform.yield
diff --git a/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_2d.mlir b/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_2d.mlir
index fc0fd40b4d265..6072b44adf4fa 100644
--- a/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_2d.mlir
+++ b/mlir/test/Integration/Dialect/Linalg/CPU/ArmSVE/reduce_2d.mlir
@@ -155,7 +155,9 @@ module attributes {transform.with_named_sequence} {
// Step 3: Lower vector.multi_reduction
transform.apply_patterns to %func {
transform.apply_patterns.vector.lower_masked_transfers
- transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.multi_reduction_flattening lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.multi_reduction_unrolling lowering_strategy = "innerreduction"
} : !transform.op<"func.func">
transform.yield
diff --git a/mlir/test/Integration/Dialect/Linalg/CPU/test-matmul-masked-vec.mlir b/mlir/test/Integration/Dialect/Linalg/CPU/test-matmul-masked-vec.mlir
index bbda8d4e99d04..3c4f10316d0f3 100644
--- a/mlir/test/Integration/Dialect/Linalg/CPU/test-matmul-masked-vec.mlir
+++ b/mlir/test/Integration/Dialect/Linalg/CPU/test-matmul-masked-vec.mlir
@@ -53,7 +53,9 @@ module attributes {transform.with_named_sequence} {
%func_op = transform.get_parent_op %0 : (!transform.any_op) -> !transform.op<"func.func">
transform.structured.vectorize %0 vector_sizes [4, 4, 2] : !transform.any_op
transform.apply_patterns to %func_op {
- transform.apply_patterns.vector.lower_multi_reduction lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.multi_reduction_flattening lowering_strategy = "innerreduction"
+ transform.apply_patterns.vector.multi_reduction_unrolling lowering_strategy = "innerreduction"
} : !transform.op<"func.func">
transform.yield
}
diff --git a/mlir/test/python/dialects/transform_vector_ext.py b/mlir/test/python/dialects/transform_vector_ext.py
index 76e39864fea9f..8a3091d0b1b02 100644
--- a/mlir/test/python/dialects/transform_vector_ext.py
+++ b/mlir/test/python/dialects/transform_vector_ext.py
@@ -87,19 +87,6 @@ def enum_configurable_patterns():
lowering_strategy=vector.VectorContractLowering.ParallelArith
)
- # CHECK: transform.apply_patterns.vector.lower_multi_reduction
- vector.ApplyLowerMultiReductionPatternsOp()
- # CHECK: transform.apply_patterns.vector.lower_multi_reduction
- # This is the default mode, not printed.
- vector.ApplyLowerMultiReductionPatternsOp(
- lowering_strategy=vector.VectorMultiReductionLowering.InnerParallel
- )
- # CHECK: transform.apply_patterns.vector.lower_multi_reduction
- # CHECK-SAME: lowering_strategy = innerreduction
- vector.ApplyLowerMultiReductionPatternsOp(
- lowering_strategy=vector.VectorMultiReductionLowering.InnerReduction
- )
-
# CHECK: transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims
vector.ApplyReorderAndExpandMultiReductionPatternsOp()
# CHECK: transform.apply_patterns.vector.reorder_and_expand_multi_reduction_dims
More information about the Mlir-commits
mailing list