llvm/mlir/test/Dialect/Transform/test-interpreter-printing.mlir

// RUN: mlir-opt %s --transform-interpreter --allow-unregistered-dialect --verify-diagnostics | FileCheck %s

// RUN: mlir-opt %s --transform-interpreter --allow-unregistered-dialect --verify-diagnostics \
// RUN:   --mlir-print-debuginfo | FileCheck %s --check-prefix=CHECK-LOC

func.func @nested_ops() {
  "test.qux"() ({
    // expected-error @below{{fail_to_verify is set}}
    "test.baz"() ({
      "test.bar"() : () -> ()
    }) : () -> ()
  }) : () -> ()
}

module attributes {transform.with_named_sequence} {
  transform.named_sequence @__transform_main(%arg0: !transform.any_op) {
    // CHECK-LABEL{LITERAL}: [[[ IR printer: START top-level ]]]
    // CHECK-NEXT:  module {
    // CHECK-LOC-LABEL{LITERAL}: [[[ IR printer: START top-level ]]]
    // CHECK-LOC-NEXT:  #{{.+}} = loc(
    // CHECK-LOC-NEXT:  module {
    transform.print {name = "START"}

    // CHECK{LITERAL}: [[[ IR printer: Local scope top-level ]]]
    // CHECK-NEXT:      module {
    // CHECK-LOC{LITERAL}: [[[ IR printer: Local scope top-level ]]]
    // CHECK-LOC-NEXT:      module {
    transform.print {name = "Local scope", use_local_scope}

    %baz = transform.structured.match ops{["test.baz"]} in %arg0 : (!transform.any_op) -> !transform.any_op

    // CHECK{LITERAL}: [[[ IR printer: ]]]
    // CHECK-NEXT:      "test.baz"() ({
    // CHECK-NEXT:        "test.bar"() : () -> ()
    // CHECK-NEXT:       }) : () -> ()
    transform.print %baz : !transform.any_op

    // CHECK{LITERAL}: [[[ IR printer: Baz ]]]
    // CHECK-NEXT:      "test.baz"() ({
    transform.print %baz {name = "Baz"} : !transform.any_op

    // CHECK{LITERAL}: [[[ IR printer: No region ]]]
    // CHECK-NEXT:      "test.baz"() ({...}) : () -> ()
    transform.print %baz {name = "No region", skip_regions} : !transform.any_op

    // CHECK{LITERAL}: [[[ IR printer: No verify ]]]
    // CHECK-NEXT:      "test.baz"() ({
    // CHECK-NEXT:        transform.test_dummy_payload_op  {fail_to_verify} : () -> ()
    transform.test_produce_invalid_ir %baz : !transform.any_op
    transform.print %baz {name = "No verify", assume_verified} : !transform.any_op

    // CHECK-LABEL{LITERAL}: [[[ IR printer: END top-level ]]]
    transform.print {name = "END"}
    transform.yield
  }
}