From 3414bbf12a661bc518953d91e859a5b67b6dc432 Mon Sep 17 00:00:00 2001 From: Han-Chung Wang Date: Tue, 4 Nov 2025 13:28:00 -0800 Subject: [PATCH] =?UTF-8?q?Revert=20"[mlir][memref]:=20Collapse=20strided?= =?UTF-8?q?=20unit=20dim=20even=20if=20strides=20are=20dynamic=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit f74e90961f51c9437461007c89b037be41e4e887. --- mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp | 10 +++++----- mlir/test/Dialect/MemRef/ops.mlir | 7 +------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp index e271ac58db327..1c21a2f270da6 100644 --- a/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp +++ b/mlir/lib/Dialect/MemRef/IR/MemRefOps.cpp @@ -2568,11 +2568,6 @@ computeCollapsedLayoutMap(MemRefType srcType, auto trailingReassocs = ArrayRef(reassoc).drop_front(); auto stride = SaturatedInteger::wrap(resultStrides[resultStrideIndex--]); for (int64_t idx : llvm::reverse(trailingReassocs)) { - // Dimensions of size 1 should be skipped, because their strides are - // meaningless and could have any arbitrary value. - if (srcShape[idx - 1] == 1) - continue; - stride = stride * SaturatedInteger::wrap(srcShape[idx]); // Both source and result stride must have the same static value. In that @@ -2587,6 +2582,11 @@ computeCollapsedLayoutMap(MemRefType srcType, if (strict && (stride.saturated || srcStride.saturated)) return failure(); + // Dimensions of size 1 should be skipped, because their strides are + // meaningless and could have any arbitrary value. + if (srcShape[idx - 1] == 1) + continue; + if (!stride.saturated && !srcStride.saturated && stride != srcStride) return failure(); } diff --git a/mlir/test/Dialect/MemRef/ops.mlir b/mlir/test/Dialect/MemRef/ops.mlir index b1db99bb3ad08..a90c9505a8405 100644 --- a/mlir/test/Dialect/MemRef/ops.mlir +++ b/mlir/test/Dialect/MemRef/ops.mlir @@ -440,8 +440,7 @@ func.func @expand_collapse_shape_dynamic(%arg0: memref, %arg4: index, %arg5: index, %arg6: index, - %arg7: memref<4x?x4xf32>, - %arg8: memref<1x1x18x?xsi8, strided<[?, ?, ?, 1], offset: ?>>) { + %arg7: memref<4x?x4xf32>) { // CHECK: memref.collapse_shape {{.*}} {{\[}}[0, 1], [2]] // CHECK-SAME: memref into memref %0 = memref.collapse_shape %arg0 [[0, 1], [2]] : @@ -490,10 +489,6 @@ func.func @expand_collapse_shape_dynamic(%arg0: memref, // CHECK: memref.expand_shape {{.*}} {{\[}}[0, 1], [2], [3, 4]] %4 = memref.expand_shape %arg7 [[0, 1], [2], [3, 4]] output_shape [2, 2, %arg4, 2, 2] : memref<4x?x4xf32> into memref<2x2x?x2x2xf32> - -// CHECK: memref.collapse_shape {{.*}} {{\[}}[0, 1], [2], [3]] -// CHECK-SAME: memref<1x1x18x?xsi8, strided<[?, ?, ?, 1], offset: ?>> into memref<1x18x?xsi8, strided<[?, ?, 1], offset: ?>> - %5 = memref.collapse_shape %arg8 [[0, 1], [2], [3]] : memref<1x1x18x?xsi8, strided<[?, ?, ?, 1], offset: ?>> into memref<1x18x?xsi8, strided<[?, ?, 1], offset: ?>> return }