@@ -416,18 +416,20 @@ lowering under the `-test-vector-to-vector-lowering` flag:
416416
417417``` mlir
418418// CHECK-LABEL: func @maskedload_regression_1(
419- // CHECK-SAME: %[[A0:.*]]: memref<?xf32 >,
419+ // CHECK-SAME: %[[A0:.*]]: memref<16xf32 >,
420420// CHECK-SAME: %[[A1:.*]]: vector<16xf32>) -> vector<16xf32> {
421421// CHECK: %[[C0:.*]] = arith.constant 0 : index
422422// CHECK: %[[LOAD:.*]] = vector.load %[[A0]][%[[C]]]
423- // CHECK-SAME: : memref<?xf32 >, vector<16xf32>
423+ // CHECK-SAME: : memref<16xf32 >, vector<16xf32>
424424// CHECK: return %[[LOAD]] : vector<16xf32>
425- func.func @maskedload_regression_1(%arg0: memref<?xf32>, %arg1: vector<16xf32>) -> vector<16xf32> {
425+ func.func @maskedload_regression_1(
426+ %arg0: memref<16xf32>,
427+ %arg1: vector<16xf32>) -> vector<16xf32> {
426428 %c0 = arith.constant 0 : index
427429
428430 %vec_i1 = vector.constant_mask [16] : vector<16xi1>
429431 %ld = vector.maskedload %arg0[%c0], %vec_i1, %arg1
430- : memref<?xf32 >, vector<16xi1>, vector<16xf32> into vector<16xf32>
432+ : memref<16xf32 >, vector<16xi1>, vector<16xf32> into vector<16xf32>
431433
432434 return %ld : vector<16xf32>
433435}
@@ -439,7 +441,9 @@ func.func @maskedload_regression_1(%arg0: memref<?xf32>, %arg1: vector<16xf32>)
439441// CHECK: %[[LOAD:.*]] = vector.load %[[A0]][%[[C]]]
440442// CHECK-SAME: : memref<16xi8>, vector<16xi8>
441443// CHECK: return %[[LOAD]] : vector<16xi8>
442- func.func @maskedload_regression_2(%arg0: memref<16xi8>, %arg1: vector<16xi8>) -> vector<16xi8> {
444+ func.func @maskedload_regression_2(
445+ %arg0: memref<16xi8>,
446+ %arg1: vector<16xi8>) -> vector<16xi8> {
443447 %c0 = arith.constant 0 : index
444448
445449 %vec_i1 = vector.constant_mask [16] : vector<16xi1>
@@ -453,7 +457,9 @@ func.func @maskedload_regression_2(%arg0: memref<16xi8>, %arg1: vector<16xi8>) -
453457// CHECK-SAME: %[[A0:.*]]: memref<16xf32>,
454458// CHECK-SAME: %[[A1:.*]]: vector<16xf32>) -> vector<16xf32> {
455459// CHECK: return %[[A1]] : vector<16xf32>
456- func.func @maskedload_regression_3(%arg0: memref<16xf32>, %arg1: vector<16xf32>) -> vector<16xf32> {
460+ func.func @maskedload_regression_3(
461+ %arg0: memref<16xf32>,
462+ %arg1: vector<16xf32>) -> vector<16xf32> {
457463 %c0 = arith.constant 0 : index
458464
459465 %vec_i1 = vector.constant_mask [0] : vector<16xi1>
@@ -478,10 +484,12 @@ in this case, you can use `%base`, `%mask` and `%pass_thru`.
478484
479485``` mlir
480486// CHECK-LABEL: func @maskedload_regression_1(
481- // CHECK-SAME: %[[BASE:.*]]: memref<?xf32 >,
487+ // CHECK-SAME: %[[BASE:.*]]: memref<16xf32 >,
482488// CHECK-SAME: %[[PASS_THRU:.*]]: vector<16xf32>) -> vector<16xf32> {
483489// (...)
484- func.func @maskedload_regression_1(%base: memref<?xf32>, %pass_thru: vector<16xf32>) -> vector<16xf32> {
490+ func.func @maskedload_regression_1(
491+ %base: memref<16xf32>,
492+ %pass_thru: vector<16xf32>) -> vector<16xf32> {
485493 // (...)
486494 %mask = vector.constant_mask [16] : vector<16xi1>
487495 %ld = vector.maskedload %base[%c0], %mask, %pass_thru (...)
@@ -492,7 +500,9 @@ func.func @maskedload_regression_1(%base: memref<?xf32>, %pass_thru: vector<16xf
492500// CHECK-SAME: %[[BASE:.*]]: memref<16xi8>,
493501// CHECK-SAME: %[[PASS_THRU:.*]]: vector<16xi8>) -> vector<16xi8> {
494502// (...)
495- func.func @maskedload_regression_2(%base: memref<16xi8>, %pass_thru: vector<16xi8>) -> vector<16xi8> {
503+ func.func @maskedload_regression_2(
504+ %base: memref<16xi8>,
505+ %pass_thru: vector<16xi8>) -> vector<16xi8> {
496506 // (...)
497507 %mask = vector.constant_mask [16] : vector<16xi1>
498508 %ld = vector.maskedload %base[%c0], %mask, %pass_thru (...)
@@ -503,7 +513,9 @@ func.func @maskedload_regression_2(%base: memref<16xi8>, %pass_thru: vector<16xi
503513// CHECK-SAME: %[[BASE:.*]]: memref<16xf32>,
504514// CHECK-SAME: %[[PASS_THRU:.*]]: vector<16xf32>) -> vector<16xf32> {
505515// (...)
506- func.func @maskedload_regression_3(%base: memref<16xf32>, %pass_thru: vector<16xf32>) -> vector<16xf32> {
516+ func.func @maskedload_regression_3(
517+ %base: memref<16xf32>,
518+ %pass_thru: vector<16xf32>) -> vector<16xf32> {
507519 // (...)
508520 %mask = vector.constant_mask [0] : vector<16xi1>
509521 %ld = vector.maskedload %base[%c0], %mask, %base (...)
@@ -528,22 +540,24 @@ tests based on key attributes:
528540This suggests the following naming scheme:
529541* ` @maskedload_to_load_{static|dynamic}_{i32|i8}_{all_true|all_false} ` .
530542
543+ Below are the updated names:
544+
531545``` mlir
532546// CHECK-LABEL: func @maskedload_to_load_dynamic_i32_all_true(
533547// (...)
534- func.func @maskedload_to_load_dynamic_i32_all_true(%base: memref<?xf32>, %pass_thru: vector<16xf32> ) -> vector<16xf32> {
548+ func.func @maskedload_to_load_dynamic_i32_all_true(... ) -> vector<16xf32> {
535549 // (...)
536550}
537551
538552// CHECK-LABEL: func @maskedload_to_load_static_i8_all_true(
539553// (...)
540- func.func @maskedload_to_load_static_i8_all_true(%base: memref<16xi8>, %pass_thru: vector<16xi8> ) -> vector<16xi8> {
554+ func.func @maskedload_to_load_static_i8_all_true(... ) -> vector<16xi8> {
541555 // (...)
542556}
543557
544558// CHECK-LABEL: func @maskedload_to_load_static_i32_all_false(
545559// (...)
546- func.func @maskedload_to_load_static_i32_all_false(%base: memref<16xf32>, %pass_thru: vector<16xf32> ) -> vector<16xf32> {
560+ func.func @maskedload_to_load_static_i32_all_false(... ) -> vector<16xf32> {
547561 // (...)
548562}
549563```
@@ -562,7 +576,9 @@ Unlike the existing cases, this mask must be preserved. In this scenario,
562576// CHECK-SAME: %[[BASE:.*]]: memref<16xf32>,
563577// CHECK-SAME: %[[PASS_THRU:.*]]: vector<16xf32>) -> vector<16xf32> {
564578// CHECK: vector.maskedload
565- func.func @negative_maskedload_to_load_static_i32_mixed(%base: memref<16xf32>, %pass_thru: vector<16xf32>) -> vector<16xf32> {
579+ func.func @negative_maskedload_to_load_static_i32_mixed(
580+ %base: memref<16xf32>,
581+ %pass_thru: vector<16xf32>) -> vector<16xf32> {
566582 %c0 = arith.constant 0 : index
567583 %mask = vector.constant_mask [4] : vector<16xi1>
568584
@@ -746,7 +762,10 @@ used to document high-level steps (original FileCheck "check" lines have been
746762trimmed for brevity):
747763
748764``` mlir
749- func.func @conv1d_nwc_4x2x8_memref(%input: memref<4x6x3xf32>, %filter: memref<1x3x8xf32>, %output: memref<4x2x8xf32>) {
765+ func.func @conv1d_nwc_4x2x8_memref(
766+ %input: memref<4x6x3xf32>,
767+ %filter: memref<1x3x8xf32>,
768+ %output: memref<4x2x8xf32>) {
750769 linalg.conv_1d_nwc_wcf
751770 {dilations = dense<1> : tensor<1xi64>, strides = dense<3> : tensor<1xi64>}
752771 ins(%input, %filter : memref<4x6x3xf32>, memref<1x3x8xf32>)
@@ -755,17 +774,19 @@ func.func @conv1d_nwc_4x2x8_memref(%input: memref<4x6x3xf32>, %filter: memref<1x
755774}
756775
757776// CHECK: func @conv1d_nwc_4x2x8_memref
758- // CHECK-SAME: (%[[INPUT:.+]]: memref<4x6x3xf32>, %[[FILTER:.+]]: memref<1x3x8xf32>, %[[OUTPUT:.+]]: memref<4x2x8xf32>)
777+ // CHECK-SAME: %[[INPUT:.+]]: memref<4x6x3xf32>
778+ // CHECK-SAME: %[[FILTER:.+]]: memref<1x3x8xf32>,
779+ // CHECK-SAME: %[[OUTPUT:.+]]: memref<4x2x8xf32>
759780
760781/// Read the whole data in one shot.
761- // CHECK-DAG: %[[V_INPUT_R:.+]] = vector.transfer_read %[[INPUT]][%[[C0]], %[[C0]], %[[C0]]], %[[F0]]
762- // CHECK-DAG: %[[V_FILTER_R:.+]] = vector.transfer_read %[[FILTER]][%[[C0]], %[[C0]], %[[C0]]], %[[F0]]
763- // CHECK-DAG: %[[V_OUTPUT_R:.+]] = vector.transfer_read %[[OUTPUT]][%[[C0]], %[[C0]], %[[C0]]], %[[F0]]
782+ // CHECK-DAG: %[[V_INPUT_R:.+]] = vector.transfer_read %[[INPUT]]
783+ // CHECK-DAG: %[[V_FILTER_R:.+]] = vector.transfer_read %[[FILTER]]
784+ // CHECK-DAG: %[[V_OUTPUT_R:.+]] = vector.transfer_read %[[OUTPUT]]
764785
765786// CHECK: %[[V_INPUT_0:.+]] = vector.extract_strided_slice %[[V_INPUT_R]]
766787// CHECK: %[[V_INPUT_1:.+]] = vector.extract_strided_slice %[[V_INPUT_R]]
767788
768- // CHECK: %[[V_FILTER:.+]] = vector.extract %[[V_FILTER_R]][0] : vector<3x8xf32> from vector<1x3x8xf32>
789+ // CHECK: %[[V_FILTER:.+]] = vector.extract %[[V_FILTER_R]][0]
769790
770791// CHECK: %[[V_OUTPUT_0:.+]] = vector.extract_strided_slice %[[V_OUTPUT_R]]
771792// CHECK: %[[V_OUTPUT_1:.+]] = vector.extract_strided_slice %[[V_OUTPUT_R]]
@@ -779,12 +800,14 @@ func.func @conv1d_nwc_4x2x8_memref(%input: memref<4x6x3xf32>, %filter: memref<1x
779800// CHECK-SAME: %[[V_INPUT_1]], %[[V_FILTER]], %[[V_OUTPUT_1]]
780801
781802/// w == 0, kw == 0
782- // CHECK: %[[RES_0:.+]] = vector.insert_strided_slice %[[CONTRACT_0]], %[[V_OUTPUT_R]]
803+ // CHECK: %[[RES_0:.+]] = vector.insert_strided_slice
804+ // CHECK-SAME: %[[CONTRACT_0]], %[[V_OUTPUT_R]]
783805/// w == 1, kw == 0
784- // CHECK: %[[RES_1:.+]] = vector.insert_strided_slice %[[CONTRACT_1]], %[[RES_0]]
806+ // CHECK: %[[RES_1:.+]] = vector.insert_strided_slice
807+ // CHECK-SAME: %[[CONTRACT_1]], %[[RES_0]]
785808
786809/// Write the result back in one shot.
787- // CHECK: vector.transfer_write %[[RES_1]], %[[OUTPUT]][%[[C0]], %[[C0]], %[[C0]]]
810+ // CHECK: vector.transfer_write %[[RES_1]], %[[OUTPUT]]
788811```
789812
790813Though the comments document _ what_ is happening (e.g., "Write the result back
0 commit comments