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]]