diff --git a/mlir/test/Interfaces/TilingInterface/tile-using-interface.mlir b/mlir/test/Interfaces/TilingInterface/tile-using-interface.mlir --- a/mlir/test/Interfaces/TilingInterface/tile-using-interface.mlir +++ b/mlir/test/Interfaces/TilingInterface/tile-using-interface.mlir @@ -273,3 +273,17 @@ // CHECK: scf.yield %[[INNER2]] // CHECK: scf.yield %[[INNER1]] // CHECK: return %[[OUTER]] + +// ----- + +// CHECK-LABEL: func @linalg_copy_matmul( +// CHECK: scf.for +// CHECK: scf.for +// CHECK: memref.subview +// CHECK: memref.subview +// CHECK: linalg.copy +func.func @linalg_copy_matmul(%a: memref, %b: memref) { + linalg.copy {__internal_linalg_transform__ = "simple_copy_memref"} + ins(%a : memref) outs(%b : memref) + return +} diff --git a/mlir/test/lib/Interfaces/TilingInterface/TestTilingInterface.cpp b/mlir/test/lib/Interfaces/TilingInterface/TestTilingInterface.cpp --- a/mlir/test/lib/Interfaces/TilingInterface/TestTilingInterface.cpp +++ b/mlir/test/lib/Interfaces/TilingInterface/TestTilingInterface.cpp @@ -507,7 +507,8 @@ addPatternForTiling(context, patterns, "pad_inner_tiling", {0, 3}); // 9. Tiling inner dimension of 2d pad tensor operations. addPatternForTiling(context, patterns, "pad_outer_tiling", {2, 3}); - + // 10. Tiling M and N dims of `linalg.copy` on memrefs. + addPatternForTiling(context, patterns, "simple_copy_memref", {10, 20}); return; } if (testTileConsumerAndFuseProducer) {