1// RUN: mlir-opt %s -test-vector-transfer-drop-unit-dims-patterns -split-input-file | FileCheck %s
2
3func.func @transfer_read_rank_reducing(
4      %arg : memref<1x1x3x2xi8, offset:?, strides:[6, 6, 2, 1]>) -> vector<3x2xi8> {
5    %c0 = arith.constant 0 : index
6    %cst = arith.constant 0 : i8
7    %v = vector.transfer_read %arg[%c0, %c0, %c0, %c0], %cst :
8      memref<1x1x3x2xi8, offset:?, strides:[6, 6, 2, 1]>, vector<3x2xi8>
9    return %v : vector<3x2xi8>
10}
11
12// CHECK-LABEL: func @transfer_read_rank_reducing
13//  CHECK-SAME:     %[[ARG:.+]]: memref<1x1x3x2xi8
14//       CHECK:   %[[SUBVIEW:.+]] = memref.subview %[[ARG]][0, 0, 0, 0] [1, 1, 3, 2] [1, 1, 1, 1]
15//  CHECK-SAME:     memref<1x1x3x2xi8, {{.*}}> to memref<3x2xi8, {{.*}}>
16//       CHECK:   vector.transfer_read %[[SUBVIEW]]
17
18// -----
19
20func.func @transfer_write_rank_reducing(%arg : memref<1x1x3x2xi8, offset:?, strides:[6, 6, 2, 1]>, %vec : vector<3x2xi8>) {
21    %c0 = arith.constant 0 : index
22    vector.transfer_write %vec, %arg [%c0, %c0, %c0, %c0] :
23      vector<3x2xi8>, memref<1x1x3x2xi8, offset:?, strides:[6, 6, 2, 1]>
24    return
25}
26
27// CHECK-LABEL: func @transfer_write_rank_reducing
28//  CHECK-SAME:     %[[ARG:.+]]: memref<1x1x3x2xi8
29//       CHECK:   %[[SUBVIEW:.+]] = memref.subview %[[ARG]][0, 0, 0, 0] [1, 1, 3, 2] [1, 1, 1, 1]
30//  CHECK-SAME:     memref<1x1x3x2xi8, {{.*}}> to memref<3x2xi8, {{.*}}>
31//       CHECK:   vector.transfer_write %{{.*}}, %[[SUBVIEW]]