[Mlir-commits] [mlir] [MLIR][Linalg] pack, unpack to take memref inputs (PR #129036)
Han-Chung Wang
llvmlistbot at llvm.org
Fri Apr 18 16:25:58 PDT 2025
================
@@ -1847,3 +1873,51 @@ func.func @no_fold_extract_slice_into_unpack_non_zero_offset(
// CHECK-SAME: into %[[DEST]]
// CHECK: %[[SLICE:.+]] = tensor.extract_slice %[[UNPACK]]
// CHECK: return %[[SLICE]]
+
+// -----
+
+// CHECK-LABEL: func.func @fold_cast_unpack_dynamic_tile_size(
+// CHECK-SAME: %[[SRC:.*]]: tensor<1x1x8x1xi32>,
+// CHECK-SAME: %[[DEST:.*]]: tensor<7x?xi32>) -> tensor<7x?xi32> {
+// CHECK: %[[RES:.*]] = linalg.unpack %[[SRC]] inner_dims_pos = [0, 1] inner_tiles = [8, 1] into %[[DEST]] {test_attr} : tensor<1x1x8x1xi32> -> tensor<7x?xi32>
+// CHECK: return %[[RES]] : tensor<7x?xi32>
+func.func @fold_cast_unpack_dynamic_tile_size(
+ %src: tensor<1x1x8x1xi32>,
+ %res: tensor<7x?xi32>) -> tensor<7x?xi32> {
+
+ %cast = tensor.cast %src : tensor<1x1x8x1xi32> to tensor<1x1x?x1xi32>
+ %c8 = arith.constant 8 : index
+ %unpack = linalg.unpack %cast
+ inner_dims_pos = [0, 1]
+ inner_tiles = [%c8, 1]
+ into %res {test_attr} : tensor<1x1x?x1xi32> -> tensor<7x?xi32>
+ return %unpack : tensor<7x?xi32>
+}
+
+//===----------------------------------------------------------------------===//
+// linalg.unpack + linalg.pack
+//===----------------------------------------------------------------------===//
----------------
hanhanW wrote:
1. you need a separator (i.e., `// -----`)
2. I don't follow why we add a boundary comment here, while the pack/unpack tests are not grouped in the section. Maybe just delete it and you can clean it up in a follow-up.
https://github.com/llvm/llvm-project/pull/129036
More information about the Mlir-commits
mailing list