[Mlir-commits] [mlir] [mlir][linalg] Add pattern to clean unused results after fusion (PR #158627)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Fri Sep 19 09:12:05 PDT 2025
================
@@ -1079,4 +1079,49 @@ module {
// CHECK-NOT: linalg.generic
// CHECK: tensor.expand_shape
// CHECK: linalg.generic {{.*}}, iterator_types = ["parallel", "parallel", "parallel", "parallel", "parallel", "parallel", "reduction"]}
-// CHECK-SAME: ins(%[[ARG0]], %[[FUSED]]#1 : tensor<1x1x2x1xf32>, tensor<4x1x1x1xf32>)
\ No newline at end of file
+// CHECK-SAME: ins(%[[ARG0]], %[[FUSED]]#1 : tensor<1x1x2x1xf32>, tensor<4x1x1x1xf32>)
+
+// -----
+
+// CHECK-LABEL: @drop_unused_results
+// CHECK-SAME: [[ARG0:%[a-zA-Z0-9]+]]: tensor<64xf32>, [[ARG1:%[a-zA-Z0-9]+]]: tensor<1x56x56x64xf32>
+func.func @drop_unused_results(%arg0: tensor<64xf32>, %arg1: tensor<1x56x56x64xf32>) -> tensor<1x56x56x64xf32> {
+ %cst = arith.constant 3.40282347E+38 : f32
+ %cst_0 = arith.constant 0.000000e+00 : f32
+ // CHECK: [[OUT:%[a-zA-Z0-9]+]] = tensor.empty() : tensor<1x56x56x64xf32>
+ %0 = tensor.empty() : tensor<1x56x56x64xf32>
+ // CHECK: [[RES:%[0-9]+]] = linalg.generic {{.*}} ins([[ARG0]], [[ARG1]] : tensor<64xf32>, tensor<1x56x56x64xf32>) outs([[OUT]] : tensor<1x56x56x64xf32>)
+ %1:2 = linalg.generic {indexing_maps = [affine_map<(d0, d1, d2, d3) -> (d3)>, affine_map<(d0, d1, d2, d3) -> (d0, d1, d2, d3)>, affine_map<(d0, d1, d2, d3) -> (d0, d1, d2, d3)>], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%arg0 : tensor<64xf32>) outs(%arg1, %0 : tensor<1x56x56x64xf32>, tensor<1x56x56x64xf32>) {
----------------
MaheshRavishankar wrote:
This input in theory is wrong. I understand your pattern is making the semantics of the operation "right". But for an operation with all `parallel` iterator types, you cannot read the `out` value. If you are doing that then this has to be a reduction.
I would put this input operation as having "undefined" behavior and therefore "fixing" the benhavior does not make sense either. This should be fixed on the lowering itself.
We could make this explicitly a verifier error as well.
https://github.com/llvm/llvm-project/pull/158627
More information about the Mlir-commits
mailing list