xref: /llvm-project/mlir/test/Dialect/Transform/test-pdl-extension.mlir (revision 5468f8841353cd56350a6ebe6898d2563e5c34b0)
1// RUN: mlir-opt %s --transform-interpreter -allow-unregistered-dialect --split-input-file --verify-diagnostics
2
3module attributes {transform.with_named_sequence} {
4  transform.named_sequence @__transform_main(%root: !transform.any_op) {
5    transform.with_pdl_patterns %root : !transform.any_op {
6    ^bb0(%arg0: !transform.any_op):
7      sequence %arg0 : !transform.any_op failures(propagate) {
8      ^bb0(%arg1: !transform.any_op):
9        %0 = pdl_match @some in %arg1 : (!transform.any_op) -> !transform.any_op
10        transform.debug.emit_remark_at %0, "matched" : !transform.any_op
11      }
12
13      pdl.pattern @some : benefit(1) {
14        %0 = pdl.operation "test.some_op"
15        pdl.rewrite %0 with "transform.dialect"
16      }
17
18      pdl.pattern @other : benefit(1) {
19        %0 = pdl.operation "test.other_op"
20        pdl.rewrite %0 with "transform.dialect"
21      }
22    }
23    transform.yield
24  }
25}
26
27// expected-remark @below {{matched}}
28"test.some_op"() : () -> ()
29"test.other_op"() : () -> ()
30// expected-remark @below {{matched}}
31"test.some_op"() : () -> ()
32
33
34// -----
35
36module attributes {transform.with_named_sequence} {
37  transform.named_sequence @__transform_main(%root: !transform.any_op) {
38    transform.with_pdl_patterns %root : !transform.any_op {
39    ^bb0(%arg0: !transform.any_op):
40      sequence %arg0 : !transform.any_op failures(propagate) {
41      ^bb1(%arg1: !transform.any_op):
42        %0 = pdl_match @some in %arg1 : (!transform.any_op) -> !transform.any_op
43      }
44
45      pdl.pattern @some : benefit(1) {
46        %0 = pdl.operation "test.some_op"
47        pdl.apply_native_constraint "verbose_constraint"(%0 : !pdl.operation)
48        pdl.rewrite %0 with "transform.dialect"
49      }
50    }
51    transform.yield
52  }
53}
54
55// expected-warning @below {{from PDL constraint}}
56"test.some_op"() : () -> ()
57"test.other_op"() : () -> ()
58