[Mlir-commits] [mlir] [mlir][vector] add ApplyReorderMultiReductionDimsPatternsOp tests (PR #180977)
Erick Ochoa Lopez
llvmlistbot at llvm.org
Tue Feb 17 12:43:31 PST 2026
================
@@ -0,0 +1,112 @@
+// RUN: mlir-opt %s --transform-interpreter='entry-point=innerreduction' | FileCheck %s --check-prefix=INNER_REDUCTION,ALL
+// RUN: mlir-opt %s --transform-interpreter='entry-point=innerparallel' | FileCheck %s --check-prefix=INNER_PARALLEL,ALL
+
+// INNER_REDUCTION-LABEL: func @inner_reduction_to_inner_parallel
+// INNER_REDUCTION-SAME: %[[INPUT:.+]]: vector<3x2x4xf32>
+// INNER_REDUCTION-SAME: %[[ACC:.+]]: vector<2x4xf32>
+func.func @inner_reduction_to_inner_parallel(%arg0: vector<3x2x4xf32>, %acc: vector<2x4xf32>) -> vector<2x4xf32> {
+ // INNER_REDUCTION: %[[TRANSPOSED:.+]] = vector.transpose %[[INPUT]], [1, 2, 0]
+ // INNER_REDUCTION: %[[RESULT:.+]] = vector.multi_reduction <mul>, %[[TRANSPOSED]], %[[ACC]] [2]
+ %0 = vector.multi_reduction <mul>, %arg0, %acc [0] : vector<3x2x4xf32> to vector<2x4xf32>
+ // INNER_REDUCTION: return %[[RESULT]]
+ return %0 : vector<2x4xf32>
+}
+
+// INNER_PARALLEL-LABEL: func @inner_parallel_to_inner_reduction
+// INNER_PARALLEL-SAME: %[[INPUT:.+]]: vector<3x2x4xf32>
+// INNER_PARALLEL-SAME: %[[ACC:.+]]: vector<3x2xf32>
+func.func @inner_parallel_to_inner_reduction(%arg0: vector<3x2x4xf32>, %acc: vector<3x2xf32>) -> vector<3x2xf32> {
+ // INNER_PARALLEL: %[[TRANSPOSED:.+]] = vector.transpose %[[INPUT]], [2, 0, 1]
+ // INNER_PARALLEL: vector.multi_reduction <mul>, %[[TRANSPOSED]], %[[ACC]] [0]
+ %0 = vector.multi_reduction <mul>, %arg0, %acc [2] : vector<3x2x4xf32> to vector<3x2xf32>
+ return %0 : vector<3x2xf32>
+}
+
+// INNER_REDUCTION-LABEL: func @transpose_multi_reduction_dims
+// INNER_REDUCTION-SAME: %[[INPUT:.+]]: vector<2x3x4x5xf32>
+// INNER_REDUCTION-SAME: %[[ACC:.+]]: vector<2x5xf32>
+func.func @transpose_multi_reduction_dims(%arg0: vector<2x3x4x5xf32>, %acc: vector<2x5xf32>) -> vector<2x5xf32> {
+ // INNER_REDUCTION: %[[TRANSPOSED:.+]] = vector.transpose %[[INPUT]], [0, 3, 1, 2]
+ // INNER_REDUCTION: %[[RESULT:.+]] = vector.multi_reduction <add>, %[[TRANSPOSED]], %[[ACC]] [2, 3]
+ %0 = vector.multi_reduction <add>, %arg0, %acc [1, 2] : vector<2x3x4x5xf32> to vector<2x5xf32>
+ // INNER_REDUCTION: return %[[RESULT]]
+ return %0 : vector<2x5xf32>
+}
+
+// ALL-LABEL: func @transpose_parallel_middle
+// ALL-SAME: %[[INPUT:.+]]: vector<3x4x5xf32>
+// ALL-SAME: %[[ACC:.+]]: vector<4xf32>
+func.func @transpose_parallel_middle(%arg0: vector<3x4x5xf32>, %acc: vector<4xf32>) -> vector<4xf32> {
+ // INNER_REDUCTION: %[[TRANSPOSED:.+]] = vector.transpose %[[INPUT]], [1, 0, 2]
+ // INNER_REDUCTION: %[[RESULT:.+]] = vector.multi_reduction <add>, %[[TRANSPOSED]], %[[ACC]] [1, 2]
+ // INNER_PARALLEL: %[[TRANSPOSED:.+]] = vector.transpose %[[INPUT]], [0, 2, 1]
+ // INNER_PARALLEL: %[[RESULT:.+]] = vector.multi_reduction <add>, %[[TRANSPOSED]], %[[ACC]] [0, 1]
+ %0 = vector.multi_reduction <add>, %arg0, %acc [0, 2] : vector<3x4x5xf32> to vector<4xf32>
+ // ALL: return %[[RESULT]]
+ return %0 : vector<4xf32>
+}
----------------
amd-eochoalo wrote:
https://github.com/llvm/llvm-project/pull/180977/commits/dd6de094a1c595d545139e348781ac2927a14023 I'm deleting the unnecessary tests. You were right and they both test the same paths so it is not useful to have them both. These were taken from the original tests which did have these two separate tests. Originally I did not want to remove older tests until after all new tests for the other populate methods are added. This is because the original tests test multiple patterns at the same time. I've restricted myself to only removing the ones that more obviously test for the transpose https://github.com/llvm/llvm-project/pull/180977/commits/1592aba4ddbd6862bcc5a18b466fb558a0dd280a . I would like to delete all or most tests in the mlir/test/Dialect/Vector/vector-multi-reduction-outer-lowering.mlir since most of them just test different operations. E.g., `<add>, <mul>, <min>, <max>`, But that can wait until we have the other tests.
https://github.com/llvm/llvm-project/pull/180977
More information about the Mlir-commits
mailing list