177 lines · plain
1// RUN: mlir-opt -allow-unregistered-dialect %s -split-input-file -verify-diagnostics2 3func.func @illegaltype(i) // expected-error {{expected non-function type}}4 5// -----6 7func.func @illegaltype() {8 %0 = arith.constant dense<0> : <vector 4 x f32> : vector<4 x f32> // expected-error {{expected non-function type}}9}10 11// -----12 13func.func @nestedtensor(tensor<tensor<i8>>) -> () // expected-error {{invalid tensor element type}}14 15// -----16 17// expected-error@+1 {{invalid dimension}}18#large_dim = tensor<9223372036854775808xf32>19 20// -----21 22func.func @illegalmemrefelementtype(memref<?xtensor<i8>>) -> () // expected-error {{invalid memref element type}}23 24// -----25 26func.func @illegalunrankedmemrefelementtype(memref<*xtensor<i8>>) -> () // expected-error {{invalid memref element type}}27 28// -----29// Test no map in memref type.30func.func @memrefs(memref<2x4xi8, >) // expected-error {{expected list element}}31 32// -----33// Test non-existent map in memref type.34func.func @memrefs(memref<2x4xi8, #map7>) // expected-error {{undefined symbol alias id 'map7'}}35 36// -----37// Test unsupported memory space.38func.func @memrefs(memref<2x4xi8, i8>) // expected-error {{unsupported memory space Attribute}}39 40// -----41// Test non-existent map in map composition of memref type.42#map0 = affine_map<(d0, d1) -> (d0, d1)>43 44func.func @memrefs(memref<2x4xi8, #map0, #map8>) // expected-error {{undefined symbol alias id 'map8'}}45 46// -----47// Test multiple memory space error.48#map0 = affine_map<(d0, d1) -> (d0, d1)>49func.func @memrefs(memref<2x4xi8, #map0, 1, 2>) // expected-error {{multiple memory spaces specified in memref type}}50 51// -----52// Test affine map after memory space.53#map0 = affine_map<(d0, d1) -> (d0, d1)>54#map1 = affine_map<(d0, d1) -> (d0, d1)>55 56func.func @memrefs(memref<2x4xi8, #map0, 1, #map1>) // expected-error {{expected memory space to be last in memref type}}57 58// -----59// Test dimension mismatch between memref and layout map.60// The error must be emitted even for the trivial identity layout maps that are61// dropped in type creation.62#map0 = affine_map<(d0, d1) -> (d0, d1)>63func.func @memrefs(memref<42xi8, #map0>) // expected-error {{memref layout mismatch between rank and affine map: 1 != 2}}64 65// -----66 67// expected-error @below {{expected '<' after 'strided'}}68func.func private @memref_unfinished_strided() -> memref<?x?xf32, strided>69 70// -----71 72// expected-error @below {{expected '['}}73func.func private @memref_unfinished_strided() -> memref<?x?xf32, strided<>>74 75// -----76 77// expected-error @below {{expected a 64-bit signed integer or '?'}}78func.func private @memref_unfinished_stride_list() -> memref<?x?xf32, strided<[>>79 80// -----81 82// expected-error @below {{expected 'offset' after comma}}83func.func private @memref_missing_offset() -> memref<?x?xf32, strided<[], >>84 85// -----86 87// expected-error @below {{expected ':' after 'offset'}}88func.func private @memref_missing_offset_colon() -> memref<?x?xf32, strided<[], offset>>89 90// -----91 92// expected-error @below {{expected a 64-bit signed integer or '?'}}93func.func private @memref_missing_offset_value() -> memref<?x?xf32, strided<[], offset: >>94 95// -----96 97// expected-error @below {{expected '>'}}98func.func private @memref_incorrect_strided_ending() -> memref<?x?xf32, strided<[], offset: 32)>99 100// -----101 102// expected-error @below {{expected the number of strides to match the rank}}103func.func private @memref_strided_rank_mismatch() -> memref<?x?xf32, strided<[1]>>104 105// -----106 107func.func @tensor_encoding_mismatch(%arg0: tensor<8xi32, "enc">) -> (tensor<8xi32>) { // expected-note {{prior use here}}108 return %arg0: tensor<8xi32> // expected-error {{use of value '%arg0' expects different type than prior uses: 'tensor<8xi32>' vs 'tensor<8xi32, "enc">'}}109}110 111// -----112 113func.func @illegaltype(i21312312323120) // expected-error {{invalid integer width}}114 115// -----116 117// Test no nested vector.118// expected-error@+1 {{failed to verify 'elementType': VectorElementTypeInterface instance}}119func.func @vectors(vector<1 x vector<1xi32>>, vector<2x4xf32>)120 121// -----122 123// expected-error @+1 {{vector types must have positive constant sizes but got 0}}124func.func @zero_vector_type() -> vector<0xi32>125 126// -----127 128// expected-error @+1 {{vector types must have positive constant sizes but got 1, 0}}129func.func @zero_in_vector_type() -> vector<1x0xi32>130 131// -----132 133// expected-error @+1 {{expected non-function type}}134func.func @negative_vector_size() -> vector<-1xi32>135 136// -----137 138// expected-error @+1 {{expected non-function type}}139func.func @negative_in_vector_size() -> vector<1x-1xi32>140 141// -----142 143// expected-error @+1 {{expected non-function type}}144func.func @negative_memref_size() -> memref<-1xi32>145 146// -----147 148// expected-error @+1 {{expected non-function type}}149func.func @negative_in_memref_size() -> memref<1x-1xi32>150 151// -----152 153// expected-error @+1 {{expected non-function type}}154func.func @negative_tensor_size() -> tensor<-1xi32>155 156// -----157 158// expected-error @+1 {{expected non-function type}}159func.func @negative_in_tensor_size() -> tensor<1x-1xi32>160 161// -----162 163// expected-error @+1 {{invalid element type for complex}}164func.func @bad_complex(complex<memref<2x4xi8>>)165 166// -----167 168// expected-error @+1 {{expected '<' in complex type}}169func.func @bad_complex(complex memref<2x4xi8>>)170 171// -----172 173// expected-error @+1 {{expected '>' in complex type}}174func.func @bad_complex(complex<i32)175 176// -----177