1
1
// RUN: mlir-opt %s -convert-vector-to-arm-sme -split-input-file -allow-unregistered-dialect | FileCheck %s
2
2
3
- // =============================================================================
3
+ //===---------------------------------------------------------------------- ===//
4
4
// vector.transfer_write
5
- // =============================================================================
5
+ //===---------------------------------------------------------------------- ===//
6
6
7
7
// CHECK-LABEL: func.func @transfer_write_2d_i8(
8
8
// CHECK-SAME: %[[VECTOR:.*]]: vector<[16]x[16]xi8>,
@@ -169,9 +169,9 @@ func.func @transfer_write_2d__fixed(%vector : vector<16x16xi8>, %dest : memref<?
169
169
return
170
170
}
171
171
172
- // =============================================================================
172
+ //===---------------------------------------------------------------------- ===//
173
173
// vector.broadcast
174
- // =============================================================================
174
+ //===---------------------------------------------------------------------- ===//
175
175
176
176
// -----
177
177
@@ -220,9 +220,9 @@ func.func @broadcast_vec2d_from_vec1d(%arg0: vector<[8]xi16>) {
220
220
return
221
221
}
222
222
223
- // =============================================================================
223
+ //===---------------------------------------------------------------------- ===//
224
224
// vector.transpose
225
- // =============================================================================
225
+ //===---------------------------------------------------------------------- ===//
226
226
227
227
// -----
228
228
@@ -233,8 +233,8 @@ func.func @broadcast_vec2d_from_vec1d(%arg0: vector<[8]xi16>) {
233
233
// CHECK: %[[VSCALE:.*]] = vector.vscale
234
234
// CHECK: %[[MIN_TILE_SLICES:.*]] = arith.muli %[[VSCALE]], %[[C16]] : index
235
235
// CHECK: %[[NUM_TILE_SLICES:.*]] = memref.alloca(%[[MIN_TILE_SLICES]], %[[MIN_TILE_SLICES]]) : memref<?x?xi8>
236
- // CHECK: arm_sme.tile_store %[[TILE]], <hor>, %[[NUM_TILE_SLICES]]{{\[}}%[[C0]], %[[C0]]] : memref<?x?xi8>, vector<[16]x[16]xi8>
237
- // CHECK: arm_sme.tile_load <ver>, %[[NUM_TILE_SLICES]]{{\[}}%[[C0]], %[[C0]]] : memref<?x?xi8>, vector<[16]x[16]xi8>
236
+ // CHECK: arm_sme.tile_store %[[TILE]], %[[NUM_TILE_SLICES]]{{\[}}%[[C0]], %[[C0]]] : memref<?x?xi8>, vector<[16]x[16]xi8>
237
+ // CHECK: arm_sme.tile_load %[[NUM_TILE_SLICES]]{{\[}}%[[C0]], %[[C0]]], <vertical> : memref<?x?xi8>, vector<[16]x[16]xi8>
238
238
func.func @transpose_i8 (%arg0: vector <[16 ]x[16 ]xi8 >) {
239
239
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[16 ]x[16 ]xi8 > to vector <[16 ]x[16 ]xi8 >
240
240
" prevent.dce" (%0 ) : (vector <[16 ]x[16 ]xi8 >) -> ()
@@ -245,8 +245,8 @@ func.func @transpose_i8(%arg0: vector<[16]x[16]xi8>) {
245
245
246
246
// CHECK-LABEL: @transpose_i16
247
247
// CHECK: arith.constant 8
248
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xi16>, vector<[8]x[8]xi16>
249
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xi16>, vector<[8]x[8]xi16>
248
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xi16>, vector<[8]x[8]xi16>
249
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xi16>, vector<[8]x[8]xi16>
250
250
func.func @transpose_i16 (%arg0: vector <[8 ]x[8 ]xi16 >) {
251
251
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[8 ]x[8 ]xi16 > to vector <[8 ]x[8 ]xi16 >
252
252
" prevent.dce" (%0 ) : (vector <[8 ]x[8 ]xi16 >) -> ()
@@ -257,8 +257,8 @@ func.func @transpose_i16(%arg0: vector<[8]x[8]xi16>) {
257
257
258
258
// CHECK-LABEL: @transpose_i32
259
259
// CHECK: arith.constant 4
260
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xi32>, vector<[4]x[4]xi32>
261
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xi32>, vector<[4]x[4]xi32>
260
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xi32>, vector<[4]x[4]xi32>
261
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xi32>, vector<[4]x[4]xi32>
262
262
func.func @transpose_i32 (%arg0: vector <[4 ]x[4 ]xi32 >) {
263
263
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[4 ]x[4 ]xi32 > to vector <[4 ]x[4 ]xi32 >
264
264
" prevent.dce" (%0 ) : (vector <[4 ]x[4 ]xi32 >) -> ()
@@ -269,8 +269,8 @@ func.func @transpose_i32(%arg0: vector<[4]x[4]xi32>) {
269
269
270
270
// CHECK-LABEL: @transpose_i64
271
271
// CHECK: arith.constant 2
272
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xi64>, vector<[2]x[2]xi64>
273
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xi64>, vector<[2]x[2]xi64>
272
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xi64>, vector<[2]x[2]xi64>
273
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xi64>, vector<[2]x[2]xi64>
274
274
func.func @transpose_i64 (%arg0: vector <[2 ]x[2 ]xi64 >) {
275
275
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[2 ]x[2 ]xi64 > to vector <[2 ]x[2 ]xi64 >
276
276
" prevent.dce" (%0 ) : (vector <[2 ]x[2 ]xi64 >) -> ()
@@ -282,8 +282,8 @@ func.func @transpose_i64(%arg0: vector<[2]x[2]xi64>) {
282
282
// CHECK-LABEL: @transpose_i128
283
283
// CHECK: %[[VSCALE:.*]] = vector.vscale
284
284
// CHECK: %[[NUM_TILE_SLICES:.*]] = memref.alloca(%[[VSCALE]], %[[VSCALE]]) : memref<?x?xi128>
285
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xi128>, vector<[1]x[1]xi128>
286
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xi128>, vector<[1]x[1]xi128>
285
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xi128>, vector<[1]x[1]xi128>
286
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xi128>, vector<[1]x[1]xi128>
287
287
func.func @transpose_i128 (%arg0: vector <[1 ]x[1 ]xi128 >) {
288
288
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[1 ]x[1 ]xi128 > to vector <[1 ]x[1 ]xi128 >
289
289
" prevent.dce" (%0 ) : (vector <[1 ]x[1 ]xi128 >) -> ()
@@ -294,8 +294,8 @@ func.func @transpose_i128(%arg0: vector<[1]x[1]xi128>) {
294
294
295
295
// CHECK-LABEL: @transpose_f16
296
296
// CHECK: arith.constant 8
297
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xf16>, vector<[8]x[8]xf16>
298
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xf16>, vector<[8]x[8]xf16>
297
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xf16>, vector<[8]x[8]xf16>
298
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xf16>, vector<[8]x[8]xf16>
299
299
func.func @transpose_f16 (%arg0: vector <[8 ]x[8 ]xf16 >) {
300
300
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[8 ]x[8 ]xf16 > to vector <[8 ]x[8 ]xf16 >
301
301
" prevent.dce" (%0 ) : (vector <[8 ]x[8 ]xf16 >) -> ()
@@ -306,8 +306,8 @@ func.func @transpose_f16(%arg0: vector<[8]x[8]xf16>) {
306
306
307
307
// CHECK-LABEL: @transpose_bf16
308
308
// CHECK: arith.constant 8
309
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xbf16>, vector<[8]x[8]xbf16>
310
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xbf16>, vector<[8]x[8]xbf16>
309
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xbf16>, vector<[8]x[8]xbf16>
310
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xbf16>, vector<[8]x[8]xbf16>
311
311
func.func @transpose_bf16 (%arg0: vector <[8 ]x[8 ]xbf16 >) {
312
312
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[8 ]x[8 ]xbf16 > to vector <[8 ]x[8 ]xbf16 >
313
313
" prevent.dce" (%0 ) : (vector <[8 ]x[8 ]xbf16 >) -> ()
@@ -318,8 +318,8 @@ func.func @transpose_bf16(%arg0: vector<[8]x[8]xbf16>) {
318
318
319
319
// CHECK-LABEL: @transpose_f32
320
320
// CHECK: arith.constant 4
321
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xf32>, vector<[4]x[4]xf32>
322
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xf32>, vector<[4]x[4]xf32>
321
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xf32>, vector<[4]x[4]xf32>
322
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xf32>, vector<[4]x[4]xf32>
323
323
func.func @transpose_f32 (%arg0: vector <[4 ]x[4 ]xf32 >) {
324
324
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[4 ]x[4 ]xf32 > to vector <[4 ]x[4 ]xf32 >
325
325
" prevent.dce" (%0 ) : (vector <[4 ]x[4 ]xf32 >) -> ()
@@ -330,8 +330,8 @@ func.func @transpose_f32(%arg0: vector<[4]x[4]xf32>) {
330
330
331
331
// CHECK-LABEL: @transpose_f64
332
332
// CHECK: arith.constant 2
333
- // CHECK: arm_sme.tile_store {{.*}}, <hor>, {{.*}} : memref<?x?xf64>, vector<[2]x[2]xf64>
334
- // CHECK: arm_sme.tile_load <ver>, {{.*}} : memref<?x?xf64>, vector<[2]x[2]xf64>
333
+ // CHECK: arm_sme.tile_store {{.*}} : memref<?x?xf64>, vector<[2]x[2]xf64>
334
+ // CHECK: arm_sme.tile_load {{.*}}, <vertical> : memref<?x?xf64>, vector<[2]x[2]xf64>
335
335
func.func @transpose_f64 (%arg0: vector <[2 ]x[2 ]xf64 >) {
336
336
%0 = vector.transpose %arg0 , [1 , 0 ] : vector <[2 ]x[2 ]xf64 > to vector <[2 ]x[2 ]xf64 >
337
337
" prevent.dce" (%0 ) : (vector <[2 ]x[2 ]xf64 >) -> ()
0 commit comments