diff --git a/mlir/include/mlir/Dialect/Transform/IR/TransformOps.td b/mlir/include/mlir/Dialect/Transform/IR/TransformOps.td --- a/mlir/include/mlir/Dialect/Transform/IR/TransformOps.td +++ b/mlir/include/mlir/Dialect/Transform/IR/TransformOps.td @@ -830,7 +830,8 @@ def PrintOp : TransformDialectOp<"print", [DeclareOpInterfaceMethods, - DeclareOpInterfaceMethods]> { + DeclareOpInterfaceMethods, + MatchOpInterface]> { let summary = "Dump each payload op"; let description = [{ This op dumps each payload op that is associated with the `target` operand diff --git a/mlir/test/Dialect/Linalg/match-ops-interpreter.mlir b/mlir/test/Dialect/Linalg/match-ops-interpreter.mlir --- a/mlir/test/Dialect/Linalg/match-ops-interpreter.mlir +++ b/mlir/test/Dialect/Linalg/match-ops-interpreter.mlir @@ -50,6 +50,34 @@ // ----- +module attributes { transform.with_named_sequence } { + transform.named_sequence @do_nothing(%arg0: !transform.any_op {transform.readonly}) { + transform.yield + } + + transform.named_sequence @print_in_matcher(%arg0: !transform.any_op {transform.readonly}) -> !transform.any_op { + transform.print %arg0 : !transform.any_op + transform.yield %arg0 : !transform.any_op + } + + transform.sequence failures(propagate) attributes { transform.target_tag = "transform" } { + ^bb0(%arg0: !transform.any_op): + transform.foreach_match in %arg0 + @print_in_matcher -> @do_nothing + : (!transform.any_op) -> !transform.any_op + } + + func.func @payload() attributes { transform.target_tag = "start_here" } { + // CHECK: [[ IR Printer ]] + // CHECK: test.print_me + %0 = "test.print_me"() : () -> (i1) + return + } +} + +// ----- + + module attributes { transform.with_named_sequence } { transform.named_sequence @do_nothing(%arg0: !transform.any_op {transform.readonly}) { transform.yield