Skip to content

Commit 36885c8

Browse files
authored
Improve formatting in the Testing Gude (#237)
* Break long lines (otherwise these are wrapped in the browser) * Make sure we use `memref<16xi8>` (as opposed to `memref<?xi8>` and `memref<16xi8>`) as the source memref for examples with `vector.maskedload`. * Replace function arguments with `...` (in cases where the arguments are not relevant) Note, this PR does not change _what_ the guidelines recommend, it merely tweaks the formatting.
1 parent 4c6eb00 commit 36885c8

File tree

1 file changed

+46
-23
lines changed

1 file changed

+46
-23
lines changed

website/content/getting_started/TestingGuide.md

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -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:
528540
This 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
746762
trimmed 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

790813
Though the comments document _what_ is happening (e.g., "Write the result back

0 commit comments

Comments
 (0)