@@ -50,7 +50,7 @@ func.func @arm_sme_get_tile__bad_shape(%tile_id : i8) -> vector<[4]x[16]xi8> {
50
50
51
51
// -----
52
52
53
- func.func @arm_sme_insert_tile_slice_i8__bad_vector_type (%vector : vector <[8 ]xi8 >, %tile : vector <[16 ]x[16 ]xi8 >, %tile_slice_index : index ) -> vector <[16 ]x[16 ]xi8 > {
53
+ func.func @arm_sme_insert_tile_slice_i8__bad_vector_length (%vector : vector <[8 ]xi8 >, %tile : vector <[16 ]x[16 ]xi8 >, %tile_slice_index : index ) -> vector <[16 ]x[16 ]xi8 > {
54
54
%c0 = arith.constant 0 : index
55
55
// expected-error@+1 {{op failed to verify that type of 'vector' matches type of 'tile' slice}}
56
56
%0 = arm_sme.insert_tile_slice %vector , %tile [%tile_slice_index ] : vector <[8 ]xi8 > into vector <[16 ]x[16 ]xi8 >
@@ -59,23 +59,40 @@ func.func @arm_sme_insert_tile_slice_i8__bad_vector_type(%vector : vector<[8]xi8
59
59
60
60
// -----
61
61
62
- func.func @arm_sme_insert_tile_slice_f32__bad_vector_type (%vector : vector <[8 ]xf32 >, %tile : vector <[4 ]x[4 ]xf32 >, %tile_slice_index : index ) -> vector <[4 ]x[4 ]xf32 > {
62
+ func.func @arm_sme_insert_tile_slice_f32__bad_vector_length (%vector : vector <[8 ]xf32 >, %tile : vector <[4 ]x[4 ]xf32 >, %tile_slice_index : index ) -> vector <[4 ]x[4 ]xf32 > {
63
63
%c0 = arith.constant 0 : index
64
64
// expected-error@+1 {{op failed to verify that type of 'vector' matches type of 'tile' slice}}
65
65
%0 = arm_sme.insert_tile_slice %vector , %tile [%tile_slice_index ] : vector <[8 ]xf32 > into vector <[4 ]x[4 ]xf32 >
66
66
return %0 : vector <[4 ]x[4 ]xf32 >
67
67
}
68
68
69
+ // -----
70
+
71
+ func.func @arm_sme_insert_tile_slice__bad_element_type (%vector : vector <[4 ]xf64 >, %tile : vector <[4 ]x[4 ]xf32 >, %tile_slice_index : index ) -> vector <[4 ]x[4 ]xf32 > {
72
+ %c0 = arith.constant 0 : index
73
+ // expected-error@+1 {{op failed to verify that type of 'vector' matches type of 'tile' slice}}
74
+ %0 = arm_sme.insert_tile_slice %vector , %tile [%tile_slice_index ] : vector <[4 ]xf64 > into vector <[4 ]x[4 ]xf32 >
75
+ return %0 : vector <[4 ]x[4 ]xf32 >
76
+ }
77
+
69
78
//===----------------------------------------------------------------------===//
70
79
// arm_sme.extract_tile_slice
71
80
//===----------------------------------------------------------------------===//
72
81
73
82
// -----
74
83
75
- func.func @arm_sme_extract_tile_slice__bad_result_type (%tile : vector <[4 ]x[4 ]xf32 >, %tile_slice_index : index ) -> vector <[2 ]xf64 > {
84
+ func.func @arm_sme_extract_tile_slice__bad_result_length (%tile : vector <[4 ]x[4 ]xf32 >, %tile_slice_index : index ) -> vector <[2 ]xf32 > {
85
+ // expected-error@+1 {{op failed to verify that type of 'result' matches type of 'tile' slice}}
86
+ %0 = arm_sme.extract_tile_slice %tile [%tile_slice_index ] : vector <[2 ]xf32 > from vector <[4 ]x[4 ]xf32 >
87
+ return %0 : vector <[2 ]xf32 >
88
+ }
89
+
90
+ // -----
91
+
92
+ func.func @arm_sme_extract_tile_slice__bad_result_element_type (%tile : vector <[4 ]x[4 ]xf32 >, %tile_slice_index : index ) -> vector <[4 ]xf64 > {
76
93
// expected-error@+1 {{op failed to verify that type of 'result' matches type of 'tile' slice}}
77
- %0 = arm_sme.extract_tile_slice %tile [%tile_slice_index ] : vector <[2 ]xf64 > from vector <[4 ]x[4 ]xf32 >
78
- return %0 : vector <[2 ]xf64 >
94
+ %0 = arm_sme.extract_tile_slice %tile [%tile_slice_index ] : vector <[4 ]xf64 > from vector <[4 ]x[4 ]xf32 >
95
+ return %0 : vector <[4 ]xf64 >
79
96
}
80
97
81
98
//===----------------------------------------------------------------------===//
@@ -111,6 +128,24 @@ func.func @arm_sme_tile_load__pad_but_no_mask(%src : memref<?x?xf64>, %pad : f64
111
128
return
112
129
}
113
130
131
+ // -----
132
+
133
+ func.func @arm_sme_tile_load__bad_memref_rank (%src : memref <?xf64 >, %pad : f64 ) {
134
+ %c0 = arith.constant 0 : index
135
+ // expected-error@+1 {{op operand #0 must be 2D memref of any type values, but got 'memref<?xf64>'}}
136
+ %tile = arm_sme.tile_load %src [%c0 ], %pad , : memref <?xf64 >, vector <[2 ]x[2 ]xf64 >
137
+ return
138
+ }
139
+
140
+ // -----
141
+
142
+ func.func @arm_sme_tile_load__bad_element_type (%src : memref <?x?xi32 >) {
143
+ %c0 = arith.constant 0 : index
144
+ // expected-error@+1 {{failed to verify that all of {result, base} have same element type}}
145
+ %tile = arm_sme.tile_load %src [%c0 , %c0 ] : memref <?x?xi32 >, vector <[16 ]x[16 ]xi8 >
146
+ return
147
+ }
148
+
114
149
//===----------------------------------------------------------------------===//
115
150
// arm_sme.load_tile_slice
116
151
//===----------------------------------------------------------------------===//
@@ -124,6 +159,15 @@ func.func @arm_sme_load_tile_slice__bad_mask_type(%src : memref<?x?xi8>, %mask :
124
159
return
125
160
}
126
161
162
+ // -----
163
+
164
+ func.func @arm_sme_load_tile_slice__bad_element_type (%src : memref <?x?xi32 >, %mask : vector <[16 ]xi1 >, %tile : vector <[16 ]x[16 ]xi8 >, %tile_slice_index : index ) {
165
+ %c0 = arith.constant 0 : index
166
+ // expected-error@+1 {{op failed to verify that all of {tile, base} have same element type}}
167
+ %tile_update = arm_sme.load_tile_slice %src [%c0 ], %mask , %tile , %tile_slice_index : memref <?x?xi32 >, vector <[16 ]xi1 >, vector <[16 ]x[16 ]xi8 >
168
+ return
169
+ }
170
+
127
171
//===----------------------------------------------------------------------===//
128
172
// arm_sme.tile_store
129
173
//===----------------------------------------------------------------------===//
@@ -138,6 +182,24 @@ func.func @arm_sme_tile_store__bad_mask_type(%tile : vector<[16]x[16]xi8>, %mask
138
182
return
139
183
}
140
184
185
+ // -----
186
+
187
+ func.func @arm_sme_tile_store__bad_memref_rank (%tile : vector <[16 ]x[16 ]xi8 >, %dest : memref <?xi8 >) {
188
+ %c0 = arith.constant 0 : index
189
+ // expected-error@+1 {{op operand #1 must be 2D memref of any type values, but got 'memref<?xi8>'}}
190
+ arm_sme.tile_store %tile , %dest [%c0 ] : memref <?xi8 >, vector <[16 ]x[16 ]xi8 >
191
+ return
192
+ }
193
+
194
+ // -----
195
+
196
+ func.func @arm_sme_tile_store__bad_element_type (%tile : vector <[16 ]x[16 ]xi8 >, %dest : memref <?x?xi32 >) {
197
+ %c0 = arith.constant 0 : index
198
+ // expected-error@+1 {{op failed to verify that all of {valueToStore, base} have same element type}}
199
+ arm_sme.tile_store %tile , %dest [%c0 , %c0 ] : memref <?x?xi32 >, vector <[16 ]x[16 ]xi8 >
200
+ return
201
+ }
202
+
141
203
//===----------------------------------------------------------------------===//
142
204
// arm_sme.store_tile_slice
143
205
//===----------------------------------------------------------------------===//
@@ -152,6 +214,15 @@ func.func @arm_sme_store_tile_slice__bad_mask_type(%tile : vector<[16]x[16]xi8>,
152
214
return
153
215
}
154
216
217
+ // -----
218
+
219
+ func.func @arm_sme_store_tile_slice__bad_element_type (%tile : vector <[16 ]x[16 ]xi8 >, %tile_slice_index : index , %mask : vector <[16 ]xi1 >, %dest : memref <?x?xi32 >) -> () {
220
+ %c0 = arith.constant 0 : index
221
+ // expected-error@+1 {{op failed to verify that all of {tile, base} have same element type}}
222
+ arm_sme.store_tile_slice %tile , %tile_slice_index , %mask , %dest [%c0 , %c0 ] : memref <?x?xi32 >, vector <[16 ]xi1 >, vector <[16 ]x[16 ]xi8 >
223
+ return
224
+ }
225
+
155
226
//===----------------------------------------------------------------------===//
156
227
// arm_sme.outerproduct
157
228
//===----------------------------------------------------------------------===//
0 commit comments