[Mlir-commits] [mlir] 33c134e - [mlir][linalg] Refine test for tensor.pad vectorization (#110742)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Tue Oct 1 23:34:06 PDT 2024


Author: Andrzej WarzyƄski
Date: 2024-10-02T07:34:03+01:00
New Revision: 33c134ef1b4fe1db44a7092ea4e385ba205bf06a

URL: https://github.com/llvm/llvm-project/commit/33c134ef1b4fe1db44a7092ea4e385ba205bf06a
DIFF: https://github.com/llvm/llvm-project/commit/33c134ef1b4fe1db44a7092ea4e385ba205bf06a.diff

LOG: [mlir][linalg] Refine test for tensor.pad vectorization (#110742)

This particular test was missing the `vectorize_padding` attribute and
hence didn't really trigger anything meaningful. I've added the
attribute and additional check-lines to verify that:
  * The vectorizer was indeed run (and generated vector Ops).
  * The final `tensor.insert_slice` Op is preserved.

Note that another `tensor.insert_slice` Op, inserted by the vectoriser,
was rewritten as a `vector.transfer_read`/`vector.transfer_write` pair
and hence is not present in the test output.

Added: 
    

Modified: 
    mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir

Removed: 
    


################################################################################
diff  --git a/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir b/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir
index 9a43d43cd9460a..80564ad35cfdbe 100644
--- a/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir
+++ b/mlir/test/Dialect/Linalg/vectorization-with-patterns.mlir
@@ -1091,9 +1091,15 @@ module attributes {transform.with_named_sequence} {
 func.func private @make_vector() -> tensor<12x13xf32>
 
 // CHECK-LABEL: func @pad_and_insert_slice_dest
+//  CHECK-SAME:     %[[ARG0:.*]]: tensor<1x5x6xf32>
 // Check the insert slice is not rewritten if the padded result is used by the destination operand.
+//   CHECK-NOT:   tensor.pad
+//       CHECK:   %[[EMPTY:.*]] = tensor.empty() : tensor<1x12x13xf32>
+//       CHECK:   %[[WRITE_1:.*]] = vector.transfer_write %{{.*}}, %[[EMPTY]]{{.*}} : vector<1x12x13xf32>, tensor<1x12x13xf32>
+//       CHECK:   %[[READ:.*]]  = vector.transfer_read %[[ARG0:.*]]{{.*}} : tensor<1x5x6xf32>, vector<1x5x6xf32>
+//       CHECK:   %[[WRITE_2:.*]] = vector.transfer_write %[[READ]], %[[WRITE_1]]{{.*}} : vector<1x5x6xf32>, tensor<1x12x13xf32>
 //       CHECK:   %[[T1:.*]] = call @make_vector() : () -> tensor<12x13xf32>
-//       CHECK:   = tensor.insert_slice %[[T1]] into
+//       CHECK:   tensor.insert_slice %[[T1]] into %[[WRITE_2]]
 func.func @pad_and_insert_slice_dest(
     %arg0: tensor<1x5x6xf32>) -> tensor<1x12x13xf32> {
   %c5 = arith.constant 5.0 : f32
@@ -1110,7 +1116,7 @@ module attributes {transform.with_named_sequence} {
   transform.named_sequence @__transform_main(%arg1: !transform.any_op {transform.readonly}) {
     %3 = transform.structured.match ops{["tensor.pad"]} in %arg1 : (!transform.any_op) -> !transform.any_op
     %4 = transform.get_parent_op %3 {isolated_from_above} : (!transform.any_op) -> !transform.any_op
-    %5 = transform.structured.vectorize_children_and_apply_patterns %4 : (!transform.any_op) -> !transform.any_op
+    %5 = transform.structured.vectorize_children_and_apply_patterns %4  { vectorize_padding } : (!transform.any_op) -> !transform.any_op
     transform.yield
   }
 }


        


More information about the Mlir-commits mailing list