@@ -138,7 +138,9 @@ func.func @vectorize_nd_tensor_extract_transfer_read_basic(
138
138
// CHECK: %[[READ:.*]] = vector.transfer_read %[[ARG0]][%[[IDX1]], %[[IDX2]], %[[IDX3]]], %[[CST]] {in_bounds = [true, true, true]} : tensor<3x3x3xf32>, vector<1x1x3xf32>
139
139
// CHECK: vector.transfer_write %[[READ]], %[[ARG1]][%[[C0]], %[[C0]], %[[C0]]] {in_bounds = [true, true, true]} : vector<1x1x3xf32>, tensor<1x1x3xf32>
140
140
141
- // Same as example above, but reading into a column tensor.
141
+ // Same as example above, but reading into a column tensor. Note that after the
142
+ // vectorizatoin, the `TransferOpReduceRank` will replace
143
+ // `vector.transfer_read` with `tensor.extract -> scalar`.
142
144
143
145
// TODO: Currently this fails to vectorise when the indices are non-constant.
144
146
@@ -162,10 +164,9 @@ func.func @vectorize_nd_tensor_extract_transfer_read_basic_column(
162
164
// CHECK-LABEL: func.func @vectorize_nd_tensor_extract_transfer_read_basic_column(
163
165
// CHECK-SAME: %[[INPUT:.*]]: tensor<3x3x3xf32>,
164
166
// CHECK-SAME: %[[OUTPUT:.*]]: tensor<3x1x1xf32>)
165
- // CHECK-DAG: %[[C0:.*]] = arith.constant 0 : index
166
- // CHECK-DAG: %[[CST_0:.*]] = arith.constant 0.000000e+00 : f32
167
- // CHECK: %[[READ:.*]] = vector.transfer_read %[[INPUT]]{{\[}}%[[C0]], %[[C0]], %[[C0]]], %[[CST_0]] : tensor<3x3x3xf32>, vector<f32>
168
- // CHECK: %[[BCAST:.*]] = vector.broadcast %[[READ]] : vector<f32> to vector<3x1x1xf32>
167
+ // CHECK: %[[C0:.*]] = arith.constant 0 : index
168
+ // CHECK: %[[EXTRACT:.*]] = tensor.extract %[[INPUT]]{{\[}}%[[C0]], %[[C0]], %[[C0]]] : tensor<3x3x3xf32>
169
+ // CHECK: %[[BCAST:.*]] = vector.broadcast %[[EXTRACT]] : f32 to vector<3x1x1xf32>
169
170
// CHECK: %[[RES:.*]] = vector.transfer_write %[[BCAST]], %[[OUTPUT]]{{\[}}%[[C0]], %[[C0]], %[[C0]]] {in_bounds = [true, true, true]} : vector<3x1x1xf32>, tensor<3x1x1xf32>
170
171
// CHECK: return %[[RES]] : tensor<3x1x1xf32>
171
172
@@ -747,8 +748,8 @@ func.func @vectorize_0d_tensor_extract(%arg0: tensor<f32>, %arg2: tensor<1x1x3xf
747
748
748
749
// CHECK-LABEL: func.func @vectorize_0d_tensor_extract(
749
750
// CHECK-SAME: %[[ARG_0:.*]]: tensor<f32>
750
- // CHECK: %[[EXTRACT:.*]] = vector.transfer_read %[[ARG_0]][], %{{.+}} : tensor<f32>
751
- // CHECK: vector.broadcast %[[EXTRACT]] : vector< f32> to vector<1x1x3xf32>
751
+ // CHECK: %[[EXTRACT:.*]] = tensor.extract %[[ARG_0]][] : tensor<f32>
752
+ // CHECK: vector.broadcast %[[EXTRACT]] : f32 to vector<1x1x3xf32>
752
753
753
754
module attributes {transform.with_named_sequence } {
754
755
transform.named_sequence @__transform_main (%arg1: !transform.any_op {transform.readonly }) {
0 commit comments