@@ -50,7 +50,7 @@ func.func @arm_sme_get_tile__bad_shape(%tile_id : i8) -> vector<[4]x[16]xi8> {
5050
5151// -----
5252
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 > {
5454 %c0 = arith.constant 0 : index
5555 // expected-error@+1 {{op failed to verify that type of 'vector' matches type of 'tile' slice}}
5656 %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
5959
6060// -----
6161
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 > {
6363 %c0 = arith.constant 0 : index
6464 // expected-error@+1 {{op failed to verify that type of 'vector' matches type of 'tile' slice}}
6565 %0 = arm_sme.insert_tile_slice %vector , %tile [%tile_slice_index ] : vector <[8 ]xf32 > into vector <[4 ]x[4 ]xf32 >
6666 return %0 : vector <[4 ]x[4 ]xf32 >
6767}
6868
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+
6978//===----------------------------------------------------------------------===//
7079// arm_sme.extract_tile_slice
7180//===----------------------------------------------------------------------===//
7281
7382// -----
7483
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 > {
7693 // 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 >
7996}
8097
8198//===----------------------------------------------------------------------===//
@@ -111,6 +128,24 @@ func.func @arm_sme_tile_load__pad_but_no_mask(%src : memref<?x?xf64>, %pad : f64
111128 return
112129}
113130
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+
114149//===----------------------------------------------------------------------===//
115150// arm_sme.load_tile_slice
116151//===----------------------------------------------------------------------===//
@@ -124,6 +159,15 @@ func.func @arm_sme_load_tile_slice__bad_mask_type(%src : memref<?x?xi8>, %mask :
124159 return
125160}
126161
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+
127171//===----------------------------------------------------------------------===//
128172// arm_sme.tile_store
129173//===----------------------------------------------------------------------===//
@@ -138,6 +182,24 @@ func.func @arm_sme_tile_store__bad_mask_type(%tile : vector<[16]x[16]xi8>, %mask
138182 return
139183}
140184
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+
141203//===----------------------------------------------------------------------===//
142204// arm_sme.store_tile_slice
143205//===----------------------------------------------------------------------===//
@@ -152,6 +214,15 @@ func.func @arm_sme_store_tile_slice__bad_mask_type(%tile : vector<[16]x[16]xi8>,
152214 return
153215}
154216
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+
155226//===----------------------------------------------------------------------===//
156227// arm_sme.outerproduct
157228//===----------------------------------------------------------------------===//
0 commit comments