xref: /llvm-project/mlir/test/Dialect/IRDL/testd.irdl.mlir (revision 69d3ba3db922fca8cfc47b5f115b6bea6a737aab)
1// RUN: mlir-opt %s | mlir-opt | FileCheck %s
2
3// CHECK: irdl.dialect @testd {
4irdl.dialect @testd {
5  // CHECK: irdl.type @parametric {
6  // CHECK:   %[[v0:[^ ]*]] = irdl.any
7  // CHECK:   irdl.parameters(foo: %[[v0]])
8  // CHECK: }
9  irdl.type @parametric {
10    %0 = irdl.any
11    irdl.parameters(foo: %0)
12  }
13
14  // CHECK: irdl.attribute @parametric_attr {
15  // CHECK:  %[[v0:[^ ]*]] = irdl.any
16  // CHECK:  irdl.parameters(foo: %[[v0]])
17  // CHECK: }
18  irdl.attribute @parametric_attr {
19    %0 = irdl.any
20    irdl.parameters(foo: %0)
21  }
22
23  // CHECK: irdl.type @attr_in_type_out {
24  // CHECK:   %[[v0:[^ ]*]] = irdl.any
25  // CHECK:   irdl.parameters(foo: %[[v0]])
26  // CHECK: }
27  irdl.type @attr_in_type_out {
28    %0 = irdl.any
29    irdl.parameters(foo: %0)
30  }
31
32  // CHECK: irdl.operation @eq {
33  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
34  // CHECK:   irdl.results(foo: %[[v0]])
35  // CHECK: }
36  irdl.operation @eq {
37    %0 = irdl.is i32
38    irdl.results(foo: %0)
39  }
40
41  // CHECK: irdl.operation @anyof {
42  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
43  // CHECK:   %[[v1:[^ ]*]] = irdl.is i64
44  // CHECK:   %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])
45  // CHECK:   irdl.results(foo: %[[v2]])
46  // CHECK: }
47  irdl.operation @anyof {
48    %0 = irdl.is i32
49    %1 = irdl.is i64
50    %2 = irdl.any_of(%0, %1)
51    irdl.results(foo: %2)
52  }
53
54  // CHECK: irdl.operation @all_of {
55  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
56  // CHECK:   %[[v1:[^ ]*]] = irdl.is i64
57  // CHECK:   %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])
58  // CHECK:   %[[v3:[^ ]*]] = irdl.all_of(%[[v2]], %[[v1]])
59  // CHECK:   irdl.results(foo: %[[v3]])
60  // CHECK: }
61  irdl.operation @all_of {
62    %0 = irdl.is i32
63    %1 = irdl.is i64
64    %2 = irdl.any_of(%0, %1)
65    %3 = irdl.all_of(%2, %1)
66    irdl.results(foo: %3)
67  }
68
69  // CHECK: irdl.operation @any {
70  // CHECK:   %[[v0:[^ ]*]] = irdl.any
71  // CHECK:   irdl.results(foo: %[[v0]])
72  // CHECK: }
73  irdl.operation @any {
74    %0 = irdl.any
75    irdl.results(foo: %0)
76  }
77
78  // CHECK: irdl.operation @dyn_type_base {
79  // CHECK:   %[[v1:[^ ]*]] = irdl.base @testd::@parametric
80  // CHECK:   irdl.results(foo: %[[v1]])
81  // CHECK: }
82  irdl.operation @dyn_type_base {
83    %0 = irdl.base @testd::@parametric
84    irdl.results(foo: %0)
85  }
86
87  // CHECK: irdl.operation @dyn_attr_base {
88  // CHECK:   %[[v1:[^ ]*]] = irdl.base @testd::@parametric_attr
89  // CHECK:   irdl.attributes {"attr1" = %[[v1]]}
90  // CHECK: }
91  irdl.operation @dyn_attr_base {
92    %0 = irdl.base @testd::@parametric_attr
93    irdl.attributes {"attr1" = %0}
94  }
95
96  // CHECK: irdl.operation @named_type_base {
97  // CHECK:   %[[v1:[^ ]*]] = irdl.base "!builtin.integer"
98  // CHECK:   irdl.results(foo: %[[v1]])
99  // CHECK: }
100  irdl.operation @named_type_base {
101    %0 = irdl.base "!builtin.integer"
102    irdl.results(foo: %0)
103  }
104
105  // CHECK: irdl.operation @named_attr_base {
106  // CHECK:   %[[v1:[^ ]*]] = irdl.base "#builtin.integer"
107  // CHECK:   irdl.attributes {"attr1" = %[[v1]]}
108  // CHECK: }
109  irdl.operation @named_attr_base {
110    %0 = irdl.base "#builtin.integer"
111    irdl.attributes {"attr1" = %0}
112  }
113
114  // CHECK: irdl.operation @dynparams {
115  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
116  // CHECK:   %[[v1:[^ ]*]] = irdl.is i64
117  // CHECK:   %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])
118  // CHECK:   %[[v3:[^ ]*]] = irdl.parametric @testd::@parametric<%[[v2]]>
119  // CHECK:   irdl.results(foo: %[[v3]])
120  // CHECK: }
121  irdl.operation @dynparams {
122    %0 = irdl.is i32
123    %1 = irdl.is i64
124    %2 = irdl.any_of(%0, %1)
125    %3 = irdl.parametric @testd::@parametric<%2>
126    irdl.results(foo: %3)
127  }
128
129  // CHECK: irdl.operation @constraint_vars {
130  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
131  // CHECK:   %[[v1:[^ ]*]] = irdl.is i64
132  // CHECK:   %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])
133  // CHECK:   irdl.results(foo: %[[v2]], bar: %[[v2]])
134  // CHECK: }
135  irdl.operation @constraint_vars {
136    %0 = irdl.is i32
137    %1 = irdl.is i64
138    %2 = irdl.any_of(%0, %1)
139    irdl.results(foo: %2, bar: %2)
140  }
141
142  // CHECK: irdl.operation @attrs {
143  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
144  // CHECK:   %[[v1:[^ ]*]] = irdl.is i64
145  // CHECK:   irdl.attributes {"attr1" = %[[v0]], "attr2" = %[[v1]]}
146  // CHECK: }
147  irdl.operation @attrs {
148    %0 = irdl.is i32
149    %1 = irdl.is i64
150
151    irdl.attributes {
152      "attr1" = %0,
153      "attr2" = %1
154    }
155  }
156  // CHECK: irdl.operation @regions {
157  // CHECK:   %[[r0:[^ ]*]] = irdl.region
158  // CHECK:   %[[v0:[^ ]*]] = irdl.is i32
159  // CHECK:   %[[v1:[^ ]*]] = irdl.is i64
160  // CHECK:   %[[r1:[^ ]*]] = irdl.region(%[[v0]], %[[v1]])
161  // CHECK:   %[[r2:[^ ]*]] = irdl.region with size 3
162  // CHECK:   %[[r3:[^ ]*]] = irdl.region()
163  // CHECK:   irdl.regions(foo: %[[r0]], bar: %[[r1]], baz: %[[r2]], qux: %[[r3]])
164  // CHECK: }
165  irdl.operation @regions {
166    %r0 = irdl.region
167    %v0 = irdl.is i32
168    %v1 = irdl.is i64
169    %r1 = irdl.region(%v0, %v1)
170    %r2 = irdl.region with size 3
171    %r3 = irdl.region()
172
173    irdl.regions(foo: %r0, bar: %r1, baz: %r2, qux: %r3)
174  }
175
176  // CHECK: irdl.operation @region_and_operand {
177  // CHECK:   %[[v0:[^ ]*]] = irdl.any
178  // CHECK:   %[[r0:[^ ]*]] = irdl.region(%[[v0]])
179  // CHECK:   irdl.operands(foo: %[[v0]])
180  // CHECK:   irdl.regions(bar: %[[r0]])
181  // CHECK: }
182  irdl.operation @region_and_operand {
183    %v0 = irdl.any
184    %r0 = irdl.region(%v0)
185
186    irdl.operands(foo: %v0)
187    irdl.regions(bar: %r0)
188  }
189}
190