Returning failure when tile sizes are all zero prevents the change in the marker. This makes pattern rewriter run the pattern multiple times only to exit when it hits a limit. Instead just clone the operation (since tiling is essentially cloning in this case). Then the transformation filter kicks in to avoid the pattern rewriter to be invoked many times. Differential Revision: https://reviews.llvm.org/D113949
13 lines
528 B
MLIR
13 lines
528 B
MLIR
// RUN: mlir-opt -test-linalg-transform-patterns=test-tile-pattern %s | FileCheck %s
|
|
|
|
func @matmul_zero_tile(
|
|
%arg0: tensor<?x?xf32>, %arg1 : tensor<?x?xf32>, %arg2 : tensor<?x?xf32>) -> tensor<?x?xf32> {
|
|
%0 = linalg.matmul {__internal_linalg_transform__ = "tile"}
|
|
ins(%arg0, %arg1 : tensor<?x?xf32>, tensor<?x?xf32>)
|
|
outs(%arg2 : tensor<?x?xf32>) -> tensor<?x?xf32>
|
|
return %0 : tensor<?x?xf32>
|
|
}
|
|
// CHECK-LABEL: matmul_zero_tile
|
|
// CHECK: linalg.matmul
|
|
// CHECK-NOT: __internal_linalg_transform__
|