annotate mlir/test/IR/attribute.mlir @ 154:f7e988d3e4cc

fix def file
author anatofuz
date Wed, 11 Mar 2020 19:23:03 +0900
parents 1d019706d866
children 0572611fdcc8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: mlir-opt %s -split-input-file -verify-diagnostics | FileCheck %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
4 // Test Non-negative Int Attr
anatofuz
parents:
diff changeset
5 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
6
anatofuz
parents:
diff changeset
7 func @non_negative_int_attr_pass() {
anatofuz
parents:
diff changeset
8 // CHECK: test.non_negative_int_attr
anatofuz
parents:
diff changeset
9 "test.non_negative_int_attr"() {i32attr = 5 : i32, i64attr = 10 : i64} : () -> ()
anatofuz
parents:
diff changeset
10 // CHECK: test.non_negative_int_attr
anatofuz
parents:
diff changeset
11 "test.non_negative_int_attr"() {i32attr = 0 : i32, i64attr = 0 : i64} : () -> ()
anatofuz
parents:
diff changeset
12 return
anatofuz
parents:
diff changeset
13 }
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 // -----
anatofuz
parents:
diff changeset
16
anatofuz
parents:
diff changeset
17 func @negative_int_attr_fail() {
anatofuz
parents:
diff changeset
18 // expected-error @+1 {{'i32attr' failed to satisfy constraint: non-negative 32-bit integer attribute}}
anatofuz
parents:
diff changeset
19 "test.non_negative_int_attr"() {i32attr = -5 : i32, i64attr = 10 : i64} : () -> ()
anatofuz
parents:
diff changeset
20 return
anatofuz
parents:
diff changeset
21 }
anatofuz
parents:
diff changeset
22
anatofuz
parents:
diff changeset
23 // -----
anatofuz
parents:
diff changeset
24
anatofuz
parents:
diff changeset
25 func @negative_int_attr_fail() {
anatofuz
parents:
diff changeset
26 // expected-error @+1 {{'i64attr' failed to satisfy constraint: non-negative 64-bit integer attribute}}
anatofuz
parents:
diff changeset
27 "test.non_negative_int_attr"() {i32attr = 5 : i32, i64attr = -10 : i64} : () -> ()
anatofuz
parents:
diff changeset
28 return
anatofuz
parents:
diff changeset
29 }
anatofuz
parents:
diff changeset
30
anatofuz
parents:
diff changeset
31 // -----
anatofuz
parents:
diff changeset
32
anatofuz
parents:
diff changeset
33 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
34 // Test Positive Int Attr
anatofuz
parents:
diff changeset
35 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
36
anatofuz
parents:
diff changeset
37 func @positive_int_attr_pass() {
anatofuz
parents:
diff changeset
38 // CHECK: test.positive_int_attr
anatofuz
parents:
diff changeset
39 "test.positive_int_attr"() {i32attr = 5 : i32, i64attr = 10 : i64} : () -> ()
anatofuz
parents:
diff changeset
40 return
anatofuz
parents:
diff changeset
41 }
anatofuz
parents:
diff changeset
42
anatofuz
parents:
diff changeset
43 // -----
anatofuz
parents:
diff changeset
44
anatofuz
parents:
diff changeset
45 func @positive_int_attr_fail() {
anatofuz
parents:
diff changeset
46 // expected-error @+1 {{'i32attr' failed to satisfy constraint: positive 32-bit integer attribute}}
anatofuz
parents:
diff changeset
47 "test.positive_int_attr"() {i32attr = 0 : i32, i64attr = 5: i64} : () -> ()
anatofuz
parents:
diff changeset
48 return
anatofuz
parents:
diff changeset
49 }
anatofuz
parents:
diff changeset
50
anatofuz
parents:
diff changeset
51 // -----
anatofuz
parents:
diff changeset
52
anatofuz
parents:
diff changeset
53 func @positive_int_attr_fail() {
anatofuz
parents:
diff changeset
54 // expected-error @+1 {{'i64attr' failed to satisfy constraint: positive 64-bit integer attribute}}
anatofuz
parents:
diff changeset
55 "test.positive_int_attr"() {i32attr = 5 : i32, i64attr = 0: i64} : () -> ()
anatofuz
parents:
diff changeset
56 return
anatofuz
parents:
diff changeset
57 }
anatofuz
parents:
diff changeset
58
anatofuz
parents:
diff changeset
59 // -----
anatofuz
parents:
diff changeset
60
anatofuz
parents:
diff changeset
61 func @positive_int_attr_fail() {
anatofuz
parents:
diff changeset
62 // expected-error @+1 {{'i32attr' failed to satisfy constraint: positive 32-bit integer attribute}}
anatofuz
parents:
diff changeset
63 "test.positive_int_attr"() {i32attr = -10 : i32, i64attr = 5 : i64} : () -> ()
anatofuz
parents:
diff changeset
64 return
anatofuz
parents:
diff changeset
65 }
anatofuz
parents:
diff changeset
66
anatofuz
parents:
diff changeset
67 // -----
anatofuz
parents:
diff changeset
68
anatofuz
parents:
diff changeset
69 func @positive_int_attr_fail() {
anatofuz
parents:
diff changeset
70 // expected-error @+1 {{'i64attr' failed to satisfy constraint: positive 64-bit integer attribute}}
anatofuz
parents:
diff changeset
71 "test.positive_int_attr"() {i32attr = 5 : i32, i64attr = -10 : i64} : () -> ()
anatofuz
parents:
diff changeset
72 return
anatofuz
parents:
diff changeset
73 }
anatofuz
parents:
diff changeset
74
anatofuz
parents:
diff changeset
75 // -----
anatofuz
parents:
diff changeset
76
anatofuz
parents:
diff changeset
77 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
78 // Test TypeArrayAttr
anatofuz
parents:
diff changeset
79 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
80
anatofuz
parents:
diff changeset
81 func @correct_type_array_attr_pass() {
anatofuz
parents:
diff changeset
82 // CHECK: test.type_array_attr
anatofuz
parents:
diff changeset
83 "test.type_array_attr"() {attr = [i32, f32]} : () -> ()
anatofuz
parents:
diff changeset
84 return
anatofuz
parents:
diff changeset
85 }
anatofuz
parents:
diff changeset
86
anatofuz
parents:
diff changeset
87 // -----
anatofuz
parents:
diff changeset
88
anatofuz
parents:
diff changeset
89 func @non_type_in_type_array_attr_fail() {
anatofuz
parents:
diff changeset
90 // expected-error @+1 {{'attr' failed to satisfy constraint: type array attribute}}
anatofuz
parents:
diff changeset
91 "test.type_array_attr"() {attr = [i32, 5 : i64]} : () -> ()
anatofuz
parents:
diff changeset
92 return
anatofuz
parents:
diff changeset
93 }
anatofuz
parents:
diff changeset
94
anatofuz
parents:
diff changeset
95 // -----
anatofuz
parents:
diff changeset
96
anatofuz
parents:
diff changeset
97 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
98 // Test StringAttr with custom type
anatofuz
parents:
diff changeset
99 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
100
anatofuz
parents:
diff changeset
101 // CHECK-LABEL: func @string_attr_custom_type
anatofuz
parents:
diff changeset
102 func @string_attr_custom_type() {
anatofuz
parents:
diff changeset
103 // CHECK: "string_data" : !foo.string
anatofuz
parents:
diff changeset
104 test.string_attr_with_type "string_data"
anatofuz
parents:
diff changeset
105 return
anatofuz
parents:
diff changeset
106 }
anatofuz
parents:
diff changeset
107
anatofuz
parents:
diff changeset
108 // -----
anatofuz
parents:
diff changeset
109
anatofuz
parents:
diff changeset
110 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
111 // Test StrEnumAttr
anatofuz
parents:
diff changeset
112 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
113
anatofuz
parents:
diff changeset
114 // CHECK-LABEL: func @allowed_cases_pass
anatofuz
parents:
diff changeset
115 func @allowed_cases_pass() {
anatofuz
parents:
diff changeset
116 // CHECK: test.str_enum_attr
anatofuz
parents:
diff changeset
117 %0 = "test.str_enum_attr"() {attr = "A"} : () -> i32
anatofuz
parents:
diff changeset
118 // CHECK: test.str_enum_attr
anatofuz
parents:
diff changeset
119 %1 = "test.str_enum_attr"() {attr = "B"} : () -> i32
anatofuz
parents:
diff changeset
120 return
anatofuz
parents:
diff changeset
121 }
anatofuz
parents:
diff changeset
122
anatofuz
parents:
diff changeset
123 // -----
anatofuz
parents:
diff changeset
124
anatofuz
parents:
diff changeset
125 func @disallowed_case_fail() {
anatofuz
parents:
diff changeset
126 // expected-error @+1 {{allowed string cases: 'A', 'B'}}
anatofuz
parents:
diff changeset
127 %0 = "test.str_enum_attr"() {attr = 7: i32} : () -> i32
anatofuz
parents:
diff changeset
128 return
anatofuz
parents:
diff changeset
129 }
anatofuz
parents:
diff changeset
130
anatofuz
parents:
diff changeset
131 // -----
anatofuz
parents:
diff changeset
132
anatofuz
parents:
diff changeset
133 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
134 // Test I32EnumAttr
anatofuz
parents:
diff changeset
135 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
136
anatofuz
parents:
diff changeset
137 // CHECK-LABEL: func @allowed_cases_pass
anatofuz
parents:
diff changeset
138 func @allowed_cases_pass() {
anatofuz
parents:
diff changeset
139 // CHECK: test.i32_enum_attr
anatofuz
parents:
diff changeset
140 %0 = "test.i32_enum_attr"() {attr = 5: i32} : () -> i32
anatofuz
parents:
diff changeset
141 // CHECK: test.i32_enum_attr
anatofuz
parents:
diff changeset
142 %1 = "test.i32_enum_attr"() {attr = 10: i32} : () -> i32
anatofuz
parents:
diff changeset
143 return
anatofuz
parents:
diff changeset
144 }
anatofuz
parents:
diff changeset
145
anatofuz
parents:
diff changeset
146 // -----
anatofuz
parents:
diff changeset
147
anatofuz
parents:
diff changeset
148 func @disallowed_case7_fail() {
anatofuz
parents:
diff changeset
149 // expected-error @+1 {{allowed 32-bit integer cases: 5, 10}}
anatofuz
parents:
diff changeset
150 %0 = "test.i32_enum_attr"() {attr = 7: i32} : () -> i32
anatofuz
parents:
diff changeset
151 return
anatofuz
parents:
diff changeset
152 }
anatofuz
parents:
diff changeset
153
anatofuz
parents:
diff changeset
154 // -----
anatofuz
parents:
diff changeset
155
anatofuz
parents:
diff changeset
156 func @disallowed_case7_fail() {
anatofuz
parents:
diff changeset
157 // expected-error @+1 {{allowed 32-bit integer cases: 5, 10}}
anatofuz
parents:
diff changeset
158 %0 = "test.i32_enum_attr"() {attr = 5: i64} : () -> i32
anatofuz
parents:
diff changeset
159 return
anatofuz
parents:
diff changeset
160 }
anatofuz
parents:
diff changeset
161
anatofuz
parents:
diff changeset
162 // -----
anatofuz
parents:
diff changeset
163
anatofuz
parents:
diff changeset
164 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
165 // Test I64EnumAttr
anatofuz
parents:
diff changeset
166 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
167
anatofuz
parents:
diff changeset
168 // CHECK-LABEL: func @allowed_cases_pass
anatofuz
parents:
diff changeset
169 func @allowed_cases_pass() {
anatofuz
parents:
diff changeset
170 // CHECK: test.i64_enum_attr
anatofuz
parents:
diff changeset
171 %0 = "test.i64_enum_attr"() {attr = 5: i64} : () -> i32
anatofuz
parents:
diff changeset
172 // CHECK: test.i64_enum_attr
anatofuz
parents:
diff changeset
173 %1 = "test.i64_enum_attr"() {attr = 10: i64} : () -> i32
anatofuz
parents:
diff changeset
174 return
anatofuz
parents:
diff changeset
175 }
anatofuz
parents:
diff changeset
176
anatofuz
parents:
diff changeset
177 // -----
anatofuz
parents:
diff changeset
178
anatofuz
parents:
diff changeset
179 func @disallowed_case7_fail() {
anatofuz
parents:
diff changeset
180 // expected-error @+1 {{allowed 64-bit integer cases: 5, 10}}
anatofuz
parents:
diff changeset
181 %0 = "test.i64_enum_attr"() {attr = 7: i64} : () -> i32
anatofuz
parents:
diff changeset
182 return
anatofuz
parents:
diff changeset
183 }
anatofuz
parents:
diff changeset
184
anatofuz
parents:
diff changeset
185 // -----
anatofuz
parents:
diff changeset
186
anatofuz
parents:
diff changeset
187 func @disallowed_case7_fail() {
anatofuz
parents:
diff changeset
188 // expected-error @+1 {{allowed 64-bit integer cases: 5, 10}}
anatofuz
parents:
diff changeset
189 %0 = "test.i64_enum_attr"() {attr = 5: i32} : () -> i32
anatofuz
parents:
diff changeset
190 return
anatofuz
parents:
diff changeset
191 }
anatofuz
parents:
diff changeset
192
anatofuz
parents:
diff changeset
193 // -----
anatofuz
parents:
diff changeset
194
anatofuz
parents:
diff changeset
195 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
196 // Test FloatElementsAttr
anatofuz
parents:
diff changeset
197 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
198
anatofuz
parents:
diff changeset
199 func @correct_type_pass() {
anatofuz
parents:
diff changeset
200 "test.float_elements_attr"() {
anatofuz
parents:
diff changeset
201 // CHECK: scalar_f32_attr = dense<5.000000e+00> : tensor<2xf32>
anatofuz
parents:
diff changeset
202 // CHECK: tensor_f64_attr = dense<6.000000e+00> : tensor<4x8xf64>
anatofuz
parents:
diff changeset
203 scalar_f32_attr = dense<5.0> : tensor<2xf32>,
anatofuz
parents:
diff changeset
204 tensor_f64_attr = dense<6.0> : tensor<4x8xf64>
anatofuz
parents:
diff changeset
205 } : () -> ()
anatofuz
parents:
diff changeset
206 return
anatofuz
parents:
diff changeset
207 }
anatofuz
parents:
diff changeset
208
anatofuz
parents:
diff changeset
209 // -----
anatofuz
parents:
diff changeset
210
anatofuz
parents:
diff changeset
211 func @wrong_element_type_pass() {
anatofuz
parents:
diff changeset
212 // expected-error @+1 {{failed to satisfy constraint: 32-bit float elements attribute of shape [2]}}
anatofuz
parents:
diff changeset
213 "test.float_elements_attr"() {
anatofuz
parents:
diff changeset
214 scalar_f32_attr = dense<5.0> : tensor<2xf64>,
anatofuz
parents:
diff changeset
215 tensor_f64_attr = dense<6.0> : tensor<4x8xf64>
anatofuz
parents:
diff changeset
216 } : () -> ()
anatofuz
parents:
diff changeset
217 return
anatofuz
parents:
diff changeset
218 }
anatofuz
parents:
diff changeset
219
anatofuz
parents:
diff changeset
220 // -----
anatofuz
parents:
diff changeset
221
anatofuz
parents:
diff changeset
222 func @correct_type_pass() {
anatofuz
parents:
diff changeset
223 // expected-error @+1 {{failed to satisfy constraint: 64-bit float elements attribute of shape [4, 8]}}
anatofuz
parents:
diff changeset
224 "test.float_elements_attr"() {
anatofuz
parents:
diff changeset
225 scalar_f32_attr = dense<5.0> : tensor<2xf32>,
anatofuz
parents:
diff changeset
226 tensor_f64_attr = dense<6.0> : tensor<4xf64>
anatofuz
parents:
diff changeset
227 } : () -> ()
anatofuz
parents:
diff changeset
228 return
anatofuz
parents:
diff changeset
229 }
anatofuz
parents:
diff changeset
230
anatofuz
parents:
diff changeset
231 // -----
anatofuz
parents:
diff changeset
232
anatofuz
parents:
diff changeset
233 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
234 // Test SymbolRefAttr
anatofuz
parents:
diff changeset
235 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
236
anatofuz
parents:
diff changeset
237 func @fn() { return }
anatofuz
parents:
diff changeset
238
anatofuz
parents:
diff changeset
239 // CHECK: test.symbol_ref_attr
anatofuz
parents:
diff changeset
240 "test.symbol_ref_attr"() {symbol = @fn} : () -> ()
anatofuz
parents:
diff changeset
241
anatofuz
parents:
diff changeset
242 // -----
anatofuz
parents:
diff changeset
243
anatofuz
parents:
diff changeset
244 // expected-error @+1 {{referencing to a 'FuncOp' symbol}}
anatofuz
parents:
diff changeset
245 "test.symbol_ref_attr"() {symbol = @foo} : () -> ()
anatofuz
parents:
diff changeset
246
anatofuz
parents:
diff changeset
247 // -----
anatofuz
parents:
diff changeset
248
anatofuz
parents:
diff changeset
249 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
250 // Test IntElementsAttr
anatofuz
parents:
diff changeset
251 //===----------------------------------------------------------------------===//
anatofuz
parents:
diff changeset
252
anatofuz
parents:
diff changeset
253 func @correct_type_pass() {
anatofuz
parents:
diff changeset
254 "test.int_elements_attr"() {
anatofuz
parents:
diff changeset
255 // CHECK: matrix_i64_attr = dense<6> : tensor<4x8xi64>
anatofuz
parents:
diff changeset
256 // CHECK: vector_i32_attr = dense<5> : tensor<2xi32>
anatofuz
parents:
diff changeset
257 matrix_i64_attr = dense<6> : tensor<4x8xi64>,
anatofuz
parents:
diff changeset
258 vector_i32_attr = dense<5> : tensor<2xi32>
anatofuz
parents:
diff changeset
259 } : () -> ()
anatofuz
parents:
diff changeset
260 return
anatofuz
parents:
diff changeset
261 }
anatofuz
parents:
diff changeset
262
anatofuz
parents:
diff changeset
263 // -----
anatofuz
parents:
diff changeset
264
anatofuz
parents:
diff changeset
265 func @wrong_element_type_fail() {
anatofuz
parents:
diff changeset
266 // expected-error @+1 {{failed to satisfy constraint: 32-bit int elements attribute of shape [2]}}
anatofuz
parents:
diff changeset
267 "test.int_elements_attr"() {
anatofuz
parents:
diff changeset
268 matrix_i64_attr = dense<6> : tensor<4x8xi64>,
anatofuz
parents:
diff changeset
269 vector_i32_attr = dense<5> : tensor<2xi64>
anatofuz
parents:
diff changeset
270 } : () -> ()
anatofuz
parents:
diff changeset
271 return
anatofuz
parents:
diff changeset
272 }
anatofuz
parents:
diff changeset
273
anatofuz
parents:
diff changeset
274 // -----
anatofuz
parents:
diff changeset
275
anatofuz
parents:
diff changeset
276 func @wrong_shape_fail() {
anatofuz
parents:
diff changeset
277 // expected-error @+1 {{failed to satisfy constraint: 64-bit int elements attribute of shape [4, 8]}}
anatofuz
parents:
diff changeset
278 "test.int_elements_attr"() {
anatofuz
parents:
diff changeset
279 matrix_i64_attr = dense<6> : tensor<4xi64>,
anatofuz
parents:
diff changeset
280 vector_i32_attr = dense<5> : tensor<2xi32>
anatofuz
parents:
diff changeset
281 } : () -> ()
anatofuz
parents:
diff changeset
282 return
anatofuz
parents:
diff changeset
283 }
anatofuz
parents:
diff changeset
284
anatofuz
parents:
diff changeset
285 // -----
anatofuz
parents:
diff changeset
286
anatofuz
parents:
diff changeset
287 func @wrong_shape_fail() {
anatofuz
parents:
diff changeset
288 // expected-error @+1 {{failed to satisfy constraint: 32-bit int elements attribute of shape [2]}}
anatofuz
parents:
diff changeset
289 "test.int_elements_attr"() {
anatofuz
parents:
diff changeset
290 matrix_i64_attr = dense<6> : tensor<4x8xi64>,
anatofuz
parents:
diff changeset
291 vector_i32_attr = dense<5> : tensor<i32>
anatofuz
parents:
diff changeset
292 } : () -> ()
anatofuz
parents:
diff changeset
293 return
anatofuz
parents:
diff changeset
294 }
anatofuz
parents:
diff changeset
295