xref: /llvm-project/mlir/test/Examples/transform/Ch3/ops.mlir (revision b33b91a21788d439f49d6db4e7224c20f740f1a7)
1// RUN: transform-opt-ch3 %s --transform-interpreter \
2// RUN:   --allow-unregistered-dialect --split-input-file | FileCheck %s
3
4// ****************************** IMPORTANT NOTE ******************************
5//
6// If you are changing this file, you may also need to change
7// mlir/docs/Tutorials/Transform accordingly.
8//
9// ****************************************************************************
10
11func.func private @orig()
12func.func private @updated()
13
14// CHECK-LABEL: func @test1
15func.func @test1() {
16  // CHECK: call @updated
17  call @orig() : () -> ()
18  return
19}
20
21module attributes {transform.with_named_sequence} {
22  transform.named_sequence @__transform_main(%arg0: !transform.any_op) {
23    %call = transform.structured.match ops{["func.call"]} in %arg0 : (!transform.any_op) -> !transform.op<"func.call">
24    // CHECK: transform.my.change_call_target %{{.*}}, "updated" : !transform.op<"func.call">
25    transform.my.change_call_target %call, "updated" : !transform.op<"func.call">
26    transform.yield
27  }
28}
29
30// -----
31
32func.func private @orig()
33
34// CHECK-LABEL: func @test2
35func.func @test2() {
36  // CHECK: "my.mm4"
37  call @orig() : () -> ()
38  return
39}
40
41module attributes {transform.with_named_sequence} {
42  transform.named_sequence @__transform_main(%arg0: !transform.any_op) {
43    %call = transform.structured.match ops{["func.call"]} in %arg0 : (!transform.any_op) -> !transform.my.call_op_interface
44    // CHECK: transform.my.call_to_op %{{.*}} : (!transform.my.call_op_interface) -> !transform.any_op
45    transform.my.call_to_op %call : (!transform.my.call_op_interface) -> !transform.any_op
46    transform.yield
47  }
48}
49