Fix GCC build problem with 288f05f related to SmallVector. (#116958)
[llvm-project.git] / mlir / test / IR / invalid-builtin-attributes.mlir
blob5098fe751fd01f77a3f2b971abb2c7ca85ddc068
1 // RUN: mlir-opt -allow-unregistered-dialect %s -split-input-file -verify-diagnostics
3 func.func @elementsattr_non_tensor_type() -> () {
4   "foo"(){bar = dense<[4]> : i32} : () -> () // expected-error {{elements literal must be a shaped type}}
7 // -----
9 func.func @elementsattr_non_ranked() -> () {
10   "foo"(){bar = dense<[4]> : tensor<?xi32>} : () -> () // expected-error {{elements literal type must have static shape}}
13 // -----
15 func.func @elementsattr_shape_mismatch() -> () {
16   "foo"(){bar = dense<[4]> : tensor<5xi32>} : () -> () // expected-error {{inferred shape of elements literal ([1]) does not match type ([5])}}
19 // -----
21 func.func @elementsattr_invalid() -> () {
22   "foo"(){bar = dense<[4, [5]]> : tensor<2xi32>} : () -> () // expected-error {{tensor literal is invalid; ranks are not consistent between elements}}
25 // -----
27 func.func @elementsattr_badtoken() -> () {
28   "foo"(){bar = dense<[tf_opaque]> : tensor<1xi32>} : () -> () // expected-error {{expected element literal of primitive type}}
31 // -----
33 func.func @elementsattr_floattype1() -> () {
34   // expected-error@+1 {{expected integer elements, but parsed floating-point}}
35   "foo"(){bar = dense<[4.0]> : tensor<1xi32>} : () -> ()
38 // -----
40 func.func @elementsattr_floattype1() -> () {
41   // expected-error@+1 {{expected integer elements, but parsed floating-point}}
42   "foo"(){bar = dense<4.0> : tensor<i32>} : () -> ()
45 // -----
47 func.func @elementsattr_floattype2() -> () {
48   // expected-error@below {{unexpected decimal integer literal for a floating point value}}
49   // expected-note@below {{add a trailing dot to make the literal a float}}
50   "foo"(){bar = dense<[4]> : tensor<1xf32>} : () -> ()
53 // -----
55 func.func @elementsattr_toolarge1() -> () {
56   "foo"(){bar = dense<[777]> : tensor<1xi8>} : () -> () // expected-error {{integer constant out of range}}
59 // -----
61 // expected-error@+1 {{parsed zero elements, but type ('tensor<i64>') expected at least 1}}
62 #attr = dense<> : tensor<i64>
64 // -----
66 func.func @elementsattr_toolarge2() -> () {
67   "foo"(){bar = dense<[-777]> : tensor<1xi8>} : () -> () // expected-error {{integer constant out of range}}
70 // -----
72 "foo"(){bar = dense<[()]> : tensor<complex<i64>>} : () -> () // expected-error {{expected element literal of primitive type}}
74 // -----
76 "foo"(){bar = dense<[(10)]> : tensor<complex<i64>>} : () -> () // expected-error {{expected ',' between complex elements}}
78 // -----
80 "foo"(){bar = dense<[(10,)]> : tensor<complex<i64>>} : () -> () // expected-error {{expected element literal of primitive type}}
82 // -----
84 "foo"(){bar = dense<[(10,10]> : tensor<complex<i64>>} : () -> () // expected-error {{expected ')' after complex elements}}
86 // -----
88 func.func @mi() {
89   // expected-error @+1 {{expected element literal of primitive type}}
90   "fooi64"(){bar = sparse<vector<1xi64>,[,[,1]
92 // -----
94 func.func @invalid_tensor_literal() {
95   // expected-error @+1 {{expected 1-d tensor for sparse element values}}
96   "foof16"(){bar = sparse<[[0, 0, 0]],  [[-2.0]]> : vector<1x1x1xf16>} : () -> ()
98 // -----
100 func.func @invalid_tensor_literal() {
101   // expected-error @+1 {{expected element literal of primitive type}}
102   "fooi16"(){bar = sparse<[[1, 1, 0], [0, 1, 0], [0,, [[0, 0, 0]], [-2.0]> : tensor<2x2x2xi16>} : () -> ()
104 // -----
106 func.func @invalid_tensor_literal() {
107   // expected-error @+1 {{sparse index #0 is not contained within the value shape, with index=[1, 1], and type='tensor<1x1xi16>'}}
108   "fooi16"(){bar = sparse<1, 10> : tensor<1x1xi16>} : () -> ()
110 // -----
112 func.func @hexadecimal_float_leading_minus() {
113   // expected-error @+1 {{hexadecimal float literal should not have a leading minus}}
114   "foo"() {value = -0x7fff : f16} : () -> ()
117 // -----
119 func.func @hexadecimal_float_literal_overflow() {
120   // expected-error @+1 {{hexadecimal float constant out of range for type}}
121   "foo"() {value = 0xffffffff : f16} : () -> ()
124 // -----
126 func.func @decimal_float_literal() {
127   // expected-error @+2 {{unexpected decimal integer literal for a floating point value}}
128   // expected-note @+1 {{add a trailing dot to make the literal a float}}
129   "foo"() {value = 42 : f32} : () -> ()
132 // -----
134 func.func @float_in_int_tensor() {
135   // expected-error @+1 {{expected integer elements, but parsed floating-point}}
136   "foo"() {bar = dense<[42.0, 42]> : tensor<2xi32>} : () -> ()
139 // -----
141 func.func @float_in_bool_tensor() {
142   // expected-error@below {{expected integer elements, but parsed floating-point}}
143   "foo"() {bar = dense<[true, 42.0]> : tensor<2xi1>} : () -> ()
146 // -----
148 func.func @decimal_int_in_float_tensor() {
149   // expected-error@below {{unexpected decimal integer literal for a floating point value}}
150   // expected-note@below {{add a trailing dot to make the literal a float}}
151   "foo"() {bar = dense<[42, 42.0]> : tensor<2xf32>} : () -> ()
154 // -----
156 func.func @bool_in_float_tensor() {
157   // expected-error @+1 {{expected floating point literal}}
158   "foo"() {bar = dense<[42.0, true]> : tensor<2xf32>} : () -> ()
161 // -----
163 func.func @hexadecimal_float_leading_minus_in_tensor() {
164   // expected-error @+1 {{hexadecimal float literal should not have a leading minus}}
165   "foo"() {bar = dense<-0x7FFFFFFF> : tensor<2xf32>} : () -> ()
168 // -----
170 // Check that we report an error when a value could be parsed, but does not fit
171 // into the specified type.
172 func.func @hexadecimal_float_too_wide_for_type_in_tensor() {
173   // expected-error @+1 {{hexadecimal float constant out of range for type}}
174   "foo"() {bar = dense<0x7FF0000000000000> : tensor<2xf32>} : () -> ()
177 // -----
179 // Check that we report an error when a value is too wide to be parsed.
180 func.func @hexadecimal_float_too_wide_in_tensor() {
181   // expected-error @+1 {{hexadecimal float constant out of range for type}}
182   "foo"() {bar = dense<0x7FFFFFF0000000000000> : tensor<2xf32>} : () -> ()
185 // -----
187 func.func @integer_too_wide_in_tensor() {
188   // expected-error @+1 {{integer constant out of range for type}}
189   "foo"() {bar = dense<0xFFFFFFFFFFFFFF> : tensor<2xi16>} : () -> ()
192 // -----
194 func.func @bool_literal_in_non_bool_tensor() {
195   // expected-error @+1 {{expected i1 type for 'true' or 'false' values}}
196   "foo"() {bar = dense<true> : tensor<2xi16>} : () -> ()
199 // -----
201 func.func @negative_value_in_unsigned_int_attr() {
202   // expected-error @+1 {{negative integer literal not valid for unsigned integer type}}
203   "foo"() {bar = -5 : ui32} : () -> ()
206 // -----
208 func.func @negative_value_in_unsigned_vector_attr() {
209   // expected-error @+1 {{expected unsigned integer elements, but parsed negative value}}
210   "foo"() {bar = dense<[5, -5]> : vector<2xui32>} : () -> ()
213 // -----
215 func.func @large_bound() {
216   "test.out_of_range_attribute"() {
217     // expected-error @+1 {{integer constant out of range for attribute}}
218     attr = -129 : i8
219   } : () -> ()
220   return
223 // -----
225 func.func @large_bound() {
226   "test.out_of_range_attribute"() {
227     // expected-error @+1 {{integer constant out of range for attribute}}
228     attr = 256 : i8
229   } : () -> ()
230   return
233 // -----
235 func.func @large_bound() {
236   "test.out_of_range_attribute"() {
237     // expected-error @+1 {{integer constant out of range for attribute}}
238     attr = -129 : si8
239   } : () -> ()
240   return
243 // -----
245 func.func @large_bound() {
246   "test.out_of_range_attribute"() {
247     // expected-error @+1 {{integer constant out of range for attribute}}
248     attr = 129 : si8
249   } : () -> ()
250   return
253 // -----
255 func.func @large_bound() {
256   "test.out_of_range_attribute"() {
257     // expected-error @+1 {{negative integer literal not valid for unsigned integer type}}
258     attr = -1 : ui8
259   } : () -> ()
260   return
263 // -----
265 func.func @large_bound() {
266   "test.out_of_range_attribute"() {
267     // expected-error @+1 {{integer constant out of range for attribute}}
268     attr = 256 : ui8
269   } : () -> ()
270   return
273 // -----
275 func.func @large_bound() {
276   "test.out_of_range_attribute"() {
277     // expected-error @+1 {{integer constant out of range for attribute}}
278     attr = -32769 : i16
279   } : () -> ()
280   return
283 // -----
285 func.func @large_bound() {
286   "test.out_of_range_attribute"() {
287     // expected-error @+1 {{integer constant out of range for attribute}}
288     attr = 65536 : i16
289   } : () -> ()
290   return
293 // -----
295 func.func @large_bound() {
296   "test.out_of_range_attribute"() {
297     // expected-error @+1 {{integer constant out of range for attribute}}
298     attr = -32769 : si16
299   } : () -> ()
300   return
303 // -----
305 func.func @large_bound() {
306   "test.out_of_range_attribute"() {
307     // expected-error @+1 {{integer constant out of range for attribute}}
308     attr = 32768 : si16
309   } : () -> ()
310   return
313 // -----
315 func.func @large_bound() {
316   "test.out_of_range_attribute"() {
317     // expected-error @+1 {{negative integer literal not valid for unsigned integer type}}
318     attr = -1 : ui16
319   } : () -> ()
320   return
323 // -----
325 func.func @large_bound() {
326   "test.out_of_range_attribute"() {
327     // expected-error @+1 {{integer constant out of range for attribute}}
328     attr = 65536: ui16
329   } : () -> ()
330   return
333 // -----
335 func.func @large_bound() {
336   "test.out_of_range_attribute"() {
337     // expected-error @+1 {{integer constant out of range for attribute}}
338     attr = -2147483649 : i32
339   } : () -> ()
340   return
343 // -----
345 func.func @large_bound() {
346   "test.out_of_range_attribute"() {
347     // expected-error @+1 {{integer constant out of range for attribute}}
348     attr = 4294967296 : i32
349   } : () -> ()
350   return
353 // -----
355 func.func @large_bound() {
356   "test.out_of_range_attribute"() {
357     // expected-error @+1 {{integer constant out of range for attribute}}
358     attr = -2147483649 : si32
359   } : () -> ()
360   return
363 // -----
365 func.func @large_bound() {
366   "test.out_of_range_attribute"() {
367     // expected-error @+1 {{integer constant out of range for attribute}}
368     attr = 2147483648 : si32
369   } : () -> ()
370   return
373 // -----
375 func.func @large_bound() {
376   "test.out_of_range_attribute"() {
377     // expected-error @+1 {{negative integer literal not valid for unsigned integer type}}
378     attr = -1 : ui32
379   } : () -> ()
380   return
383 // -----
385 func.func @large_bound() {
386   "test.out_of_range_attribute"() {
387     // expected-error @+1 {{integer constant out of range for attribute}}
388     attr = 4294967296 : ui32
389   } : () -> ()
390   return
393 // -----
395 func.func @large_bound() {
396   "test.out_of_range_attribute"() {
397     // expected-error @+1 {{integer constant out of range for attribute}}
398     attr = -9223372036854775809 : i64
399   } : () -> ()
400   return
403 // -----
405 func.func @large_bound() {
406   "test.out_of_range_attribute"() {
407     // expected-error @+1 {{integer constant out of range for attribute}}
408     attr = 18446744073709551616 : i64
409   } : () -> ()
410   return
413 // -----
415 func.func @large_bound() {
416   "test.out_of_range_attribute"() {
417     // expected-error @+1 {{integer constant out of range for attribute}}
418     attr = -9223372036854775809 : si64
419   } : () -> ()
420   return
423 // -----
425 func.func @large_bound() {
426   "test.out_of_range_attribute"() {
427     // expected-error @+1 {{integer constant out of range for attribute}}
428     attr = 9223372036854775808 : si64
429   } : () -> ()
430   return
433 // -----
435 func.func @large_bound() {
436   "test.out_of_range_attribute"() {
437     // expected-error @+1 {{negative integer literal not valid for unsigned integer type}}
438     attr = -1 : ui64
439   } : () -> ()
440   return
443 // -----
445 func.func @large_bound() {
446   "test.out_of_range_attribute"() {
447     // expected-error @+1 {{integer constant out of range for attribute}}
448     attr = 18446744073709551616 : ui64
449   } : () -> ()
450   return
453 // -----
455 func.func @really_large_bound() {
456   "test.out_of_range_attribute"() {
457     // expected-error @+1 {{integer constant out of range for attribute}}
458     attr = 79228162514264337593543950336 : ui96
459   } : () -> ()
460   return
463 // -----
465 func.func @really_large_bound() {
466   "test.out_of_range_attribute"() {
467     // expected-error @+1 {{integer constant out of range for attribute}}
468     attr = 79228162514264337593543950336 : i96
469   } : () -> ()
470   return
473 // -----
475 func.func @really_large_bound() {
476   "test.out_of_range_attribute"() {
477     // expected-error @+1 {{integer constant out of range for attribute}}
478     attr = 39614081257132168796771975168 : si96
479   } : () -> ()
480   return
483 // -----
485 func.func @duplicate_dictionary_attr_key() {
486   // expected-error @+1 {{duplicate key 'a' in dictionary attribute}}
487   "foo.op"() {a, a} : () -> ()
490 // -----
492 // expected-error@+1 {{expected ',' or ']'}}
493 "f"() { b = [@m:
495 // -----
497 "       // expected-error {{expected}}
500 // -----
502 // expected-error@+1 {{expected '"' in string literal}}
503 "J// -----
505 "       // expected-error {{expected}}
507 // -----
509 // expected-error@+1 {{expected '<' after 'dense_resource'}}
510 #attr = dense_resource>
512 // -----
514 // expected-error@+1 {{expected '>'}}
515 #attr = dense_resource<resource
517 // -----
519 // expected-error@+1 {{expected ':'}}
520 #attr = dense_resource<resource>
522 // -----
524 // expected-error@+1 {{`dense_resource` expected a shaped type}}
525 #attr = dense_resource<resource> : i32
527 // -----
529 // expected-error@below {{expected '<' after 'array'}}
530 #attr = array
532 // -----
534 // expected-error@below {{expected integer or float type}}
535 #attr = array<vector<i32>>
537 // -----
539 // expected-error@below {{element type bitwidth must be a multiple of 8}}
540 #attr = array<i7>
542 // -----
544 // expected-error@below {{expected ':' after dense array type}}
545 #attr = array<i8)
547 // -----
549 // expected-error@below {{expected '>' to close an array attribute}}
550 #attr = array<i8: 1)
552 // -----
554 // expected-error@below {{expected '[' after 'distinct'}}
555 #attr = distinct<
557 // -----
559 // expected-error@below {{expected distinct ID}}
560 #attr = distinct[i8
562 // -----
564 // expected-error@below {{expected an unsigned 64-bit integer}}
565 #attr = distinct[0xAAAABBBBEEEEFFFF1]
567 // -----
569 // expected-error@below {{expected ']' to close distinct ID}}
570 #attr = distinct[8)
572 // -----
574 // expected-error@below {{expected '<' after distinct ID}}
575 #attr = distinct[8](
577 // -----
579 // expected-error@below {{expected attribute}}
580 #attr = distinct[8]<attribute
582 // -----
584 // expected-error@below {{expected '>' to close distinct attribute}}
585 #attr = distinct[8]<@foo]
587 // -----
589 #attr = distinct[0]<42 : i32>
590 // expected-error@below {{referenced attribute does not match previous definition: 42 : i32}}
591 #attr1 = distinct[0]<43 : i32>
593 // -----