@@ -392,7 +392,7 @@ func.func @transfer_2D_masked(%mem : memref<?x?xf32>, %mask : vector<2x4xi1>) ->
392
392
return %res : vector <2 x4 xf32 >
393
393
}
394
394
395
- // transfer_read/write are lowered to vector.load/store
395
+ // Masked transfer_read/write inside are NOT lowered to vector.load/store
396
396
// CHECK-LABEL: func @masked_transfer_to_load(
397
397
// CHECK-SAME: %[[MEM:.*]]: memref<8x8xf32>,
398
398
// CHECK-SAME: %[[IDX:.*]]: index,
@@ -410,23 +410,6 @@ func.func @masked_transfer_to_load(%mem : memref<8x8xf32>, %i : index, %mask : v
410
410
return %mem : memref <8 x8 xf32 >
411
411
}
412
412
413
- // n-D results are also supported.
414
- // CHECK-LABEL: func @masked_transfer_2D(
415
- // CHECK-SAME: %[[MEM:.*]]: memref<8x8xf32>,
416
- // CHECK-SAME: %[[IDX:.*]]: index,
417
- // CHECK-SAME: %[[MASK:.*]]: vector<2x4xi1>) -> memref<8x8xf32>
418
- // CHECK-NOT: vector.load
419
- // CHECK-NOT: vector.store
420
- // CHECK: %[[READ:.*]] = vector.mask %[[MASK]] { vector.transfer_read %[[MEM]][%[[IDX]], %[[IDX]]]{{.*}} : memref<8x8xf32>, vector<2x4xf32> } : vector<2x4xi1> -> vector<2x4xf32>
421
- // CHECK: vector.mask %[[MASK]] { vector.transfer_write %[[READ]], %[[MEM]][%[[IDX]], %[[IDX]]]{{.*}}: vector<2x4xf32>, memref<8x8xf32> } : vector<2x4xi1>
422
-
423
- func.func @masked_transfer_2D (%mem : memref <8 x8 xf32 >, %i : index , %mask : vector <2 x4 xi1 >) -> memref <8 x8 xf32 > {
424
- %cf0 = arith.constant 0.0 : f32
425
- %read = vector.mask %mask { vector.transfer_read %mem[%i , %i ], %cf0 {in_bounds = [true , true ]} : memref <8 x8 xf32 >, vector <2 x4 xf32 > } : vector <2 x4 xi1 > -> vector <2 x4 xf32 >
426
- vector.mask %mask {vector.transfer_write %read , %mem[%i , %i ] {in_bounds = [true , true ]} : vector <2 x4 xf32 >, memref <8 x8 xf32 > } : vector <2 x4 xi1 >
427
- return %mem : memref <8 x8 xf32 >
428
- }
429
-
430
413
module attributes {transform.with_named_sequence } {
431
414
transform.named_sequence @__transform_main (%root : !transform.any_op {transform.readonly }) {
432
415
%func_op = transform.structured.match ops {[" func.func" ]} in %root : (!transform.any_op ) -> !transform.op <" func.func" >
0 commit comments