1
- // RUN: onnx-mlir-opt -O3 --shape-inference --convert-onnx-to-krnl --buffer-deallocation-pipeline %s -split-input-file | FileCheck %s
1
+ // RUN: onnx-mlir-opt -O3 --shape-inference --convert-onnx-to-krnl --buffer-deallocation %s -split-input-file | FileCheck %s
2
2
3
3
// -----
4
4
@@ -12,54 +12,68 @@ func.func @test_sequence_erase(%arg0: !onnx.Seq<tensor<?x4x5xf32>>) -> tensor<3x
12
12
13
13
// mlir2FileCheck.py
14
14
// CHECK-DAG: [[MAP_0_:#.+]] = affine_map<()[s0] -> (s0 - 1)>
15
- // CHECK-DAG: [[MAP_1_:#.+]] = affine_map<()[s0, s1] -> (s0 + s1 )>
15
+ // CHECK-DAG: [[MAP_1_:#.+]] = affine_map<()[s0, s1] -> (s1 + s0 )>
16
16
// CHECK-DAG: [[MAP_2_:#.+]] = affine_map<()[s0, s1] -> (s0)>
17
+ // CHECK-DAG: [[MAP_3_:#.+]] = affine_map<()[s0, s1] -> (s0 + s1)>
17
18
// CHECK-LABEL: func.func @test_sequence_erase
18
19
// CHECK-SAME: ([[PARAM_0_:%.+]]: memref<?xmemref<?x4x5xf32>>) -> memref<3xi64> {
19
- // CHECK-DAG: [[CST_5_:%.+]] = arith.constant 5 : i64
20
- // CHECK-DAG: [[CST_4_:%.+]] = arith.constant 4 : i64
21
- // CHECK-DAG: [[CST_2_:%.+]] = arith.constant 2 : index
22
- // CHECK-DAG: [[CST_1_:%.+]] = arith.constant 1 : index
23
- // CHECK-DAG: [[CST_0_:%.+]] = arith.constant 0 : index
24
20
// CHECK-DAG: [[VAR_0_:%.+]] = "krnl.global"() {name = "constant_{{[0-9]+}}", shape = [], value = dense<0> : tensor<i64>} : () -> memref<i64>
25
- // CHECK: [[VAR_dim_:%.+]] = memref.dim [[PARAM_0_]], [[CST_0_]] : memref<?xmemref<?x4x5xf32>>
21
+ // CHECK-DAG: [[CST_0_:%.+]] = arith.constant 0 : index
22
+ // CHECK-NOT: separator of consecutive DAGs
23
+ // CHECK-DAG: [[VAR_dim_:%.+]] = memref.dim [[PARAM_0_]], [[CST_0_]] : memref<?xmemref<?x4x5xf32>>
24
+ // CHECK-DAG: [[CST_1_:%.+]] = arith.constant 1 : index
26
25
// CHECK: [[VAR_1_:%.+]] = affine.apply [[MAP_0_]](){{.}}[[VAR_dim_]]{{.}}
27
26
// CHECK-DAG: [[VAR_2_:%.+]] = "krnl.seqalloc"([[VAR_1_]]) : (index) -> memref<?xmemref<?x4x5xf32>>
28
27
// CHECK-DAG: [[LOAD_VAR_0_MEM_:%.+]] = krnl.load [[VAR_0_]][] : memref<i64>
29
28
// CHECK: [[VAR_4_:%.+]] = arith.index_cast [[LOAD_VAR_0_MEM_]] : i64 to index
30
29
// CHECK-DAG: [[VAR_5_:%.+]] = affine.apply [[MAP_1_]](){{.}}[[VAR_dim_]], [[VAR_4_]]{{.}}
31
- // CHECK-DAG: [[VAR_6_ :%.+]] = arith.cmpi slt, [[VAR_4_]], [[CST_0_]] : index
32
- // CHECK-NOT: separator of consecutive DAGs
30
+ // CHECK-DAG: [[CST_0_1_ :%.+]] = arith.constant 0 : index
31
+ // CHECK: [[VAR_6_:%.+]] = arith.cmpi slt, [[VAR_4_]], [[CST_0_1_]] : index
33
32
// CHECK-DAG: [[VAR_7_:%.+]] = arith.select [[VAR_6_]], [[VAR_5_]], [[VAR_4_]] : index
33
+ // CHECK-DAG: [[CST_0_2_:%.+]] = arith.constant 0 : index
34
34
// CHECK-DAG: [[LOOP_0_:%.+]] = krnl.define_loops 1
35
35
// CHECK: krnl.iterate([[LOOP_0_]]) with ([[LOOP_0_]] -> [[I_0_:%.+]] = 0 to [[VAR_7_]]){
36
- // CHECK: [[VAR_18_ :%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
37
- // CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_18_ ]]{{.}} : memref<?xmemref<?x4x5xf32>>
36
+ // CHECK: [[VAR_20_ :%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
37
+ // CHECK: [[LOAD_PARAM_0_MEM_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_20_ ]]{{.}} : memref<?xmemref<?x4x5xf32>>
38
38
// CHECK: "krnl.seqstore"([[LOAD_PARAM_0_MEM_]], [[VAR_2_]], [[VAR_7_]]) : (memref<?x4x5xf32>, memref<?xmemref<?x4x5xf32>>, index) -> ()
39
39
// CHECK: }
40
- // CHECK-DAG: [[VAR_9_:%.+]] = arith.addi [[VAR_7_]], [[CST_1_]] : index
41
- // CHECK: krnl.iterate([[LOOP_0_]]) with ([[LOOP_0_]] -> [[I_1_:%.+]] = [[VAR_9_]] to [[MAP_2_]](){{.}}[[VAR_dim_]], [[VAR_4_]]{{.}}){
42
- // CHECK: [[VAR_18_1_:%.+]] = krnl.get_induction_var_value([[LOOP_0_]]) : (!krnl.loop) -> index
43
- // CHECK-DAG: [[LOAD_PARAM_0_MEM_1_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_18_1_]]{{.}} : memref<?xmemref<?x4x5xf32>>
44
- // CHECK-DAG: [[VAR_20_:%.+]] = arith.subi [[VAR_18_1_]], [[CST_1_]] : index
45
- // CHECK: "krnl.seqstore"([[LOAD_PARAM_0_MEM_1_]], [[VAR_2_]], [[VAR_20_]]) : (memref<?x4x5xf32>, memref<?xmemref<?x4x5xf32>>, index) -> ()
40
+ // CHECK: [[CST_1_1_:%.+]] = arith.constant 1 : index
41
+ // CHECK-DAG: [[VAR_9_:%.+]] = arith.addi [[VAR_7_]], [[CST_1_1_]] : index
42
+ // CHECK-DAG: [[LOOP_1_:%.+]] = krnl.define_loops 1
43
+ // CHECK: krnl.iterate([[LOOP_1_]]) with ([[LOOP_1_]] -> [[I_1_:%.+]] = [[VAR_9_]] to [[MAP_2_]](){{.}}[[VAR_dim_]], [[VAR_4_]]{{.}}){
44
+ // CHECK: [[VAR_20_1_:%.+]] = krnl.get_induction_var_value([[LOOP_1_]]) : (!krnl.loop) -> index
45
+ // CHECK-DAG: [[LOAD_PARAM_0_MEM_1_:%.+]] = krnl.load [[PARAM_0_]]{{.}}[[VAR_20_1_]]{{.}} : memref<?xmemref<?x4x5xf32>>
46
+ // CHECK-DAG: [[CST_1_2_:%.+]] = arith.constant 1 : index
47
+ // CHECK: [[VAR_22_:%.+]] = arith.subi [[VAR_20_1_]], [[CST_1_2_]] : index
48
+ // CHECK: "krnl.seqstore"([[LOAD_PARAM_0_MEM_1_]], [[VAR_2_]], [[VAR_2_]]2) : (memref<?x4x5xf32>, memref<?xmemref<?x4x5xf32>>, index) -> ()
46
49
// CHECK: }
47
- // CHECK-DAG: [[VAR_dim_0_:%.+]] = memref.dim [[VAR_2_]], [[CST_0_]] : memref<?xmemref<?x4x5xf32>>
50
+ // CHECK: [[CST_0_3_:%.+]] = arith.constant 0 : index
51
+ // CHECK-DAG: [[VAR_dim_4_:%.+]] = memref.dim [[VAR_2_]], [[CST_0_3_]] : memref<?xmemref<?x4x5xf32>>
48
52
// CHECK-DAG: [[LOAD_VAR_0_MEM_1_:%.+]] = krnl.load [[VAR_0_]][] : memref<i64>
49
- // CHECK: [[VAR_12_:%.+]] = arith.index_cast [[LOAD_VAR_0_MEM_1_]] : i64 to index
50
- // CHECK-DAG: [[VAR_13_:%.+]] = arith.cmpi slt, [[VAR_12_]], [[CST_0_]] : index
51
- // CHECK-DAG: [[VAR_14_:%.+]] = affine.apply [[MAP_1_]](){{.}}{{%.*}}, {{%.*}}{{.}}
53
+ // CHECK-NOT: separator of consecutive DAGs
54
+ // CHECK-DAG: [[VAR_12_:%.+]] = arith.index_cast [[LOAD_VAR_0_MEM_1_]] : i64 to index
55
+ // CHECK-DAG: [[CST_0_4_:%.+]] = arith.constant 0 : index
56
+ // CHECK-NOT: separator of consecutive DAGs
57
+ // CHECK-DAG: [[VAR_13_:%.+]] = arith.cmpi slt, [[VAR_12_]], [[CST_0_4_]] : index
58
+ // CHECK-DAG: [[VAR_14_:%.+]] = affine.apply [[MAP_3_]](){{.}}[[VAR_12_]], [[VAR_dim_4_]]{{.}}
52
59
// CHECK: [[VAR_15_:%.+]] = arith.select [[VAR_13_]], [[VAR_14_]], [[VAR_12_]] : index
53
60
// CHECK-DAG: [[VAR_16_:%.+]] = "krnl.seqextract"([[VAR_2_]], [[VAR_15_]]) {copy = 1 : ui1} : (memref<?xmemref<?x4x5xf32>>, index) -> memref<?x4x5xf32>
61
+ // CHECK-DAG: [[CST_3_:%.+]] = arith.constant 3 : index
54
62
// CHECK-DAG: [[RES_:%.+]] = memref.alloc() {{.*}}: memref<3xi64>
55
- // CHECK: [[VAR_dim_1_:%.+]] = memref.dim [[VAR_16_]], [[CST_0_]] : memref<?x4x5xf32>
56
- // CHECK: [[VAR_17_:%.+]] = arith.index_cast [[VAR_dim_1_]] : index to i64
57
- // CHECK: krnl.store [[VAR_17_]], [[RES_]]{{.}}[[CST_0_]]{{.}} : memref<3xi64>
58
- // CHECK: krnl.store [[CST_4_]], [[RES_]]{{.}}[[CST_1_]]{{.}} : memref<3xi64>
59
- // CHECK: krnl.store [[CST_5_]], [[RES_]]{{.}}[[CST_2_]]{{.}} : memref<3xi64>
60
- // CHECK: memref.dealloc [[VAR_2_]] : memref<?xmemref<?x4x5xf32>>
63
+ // CHECK-DAG: [[CST_0_5_:%.+]] = arith.constant 0 : index
64
+ // CHECK: [[VAR_dim_7_:%.+]] = memref.dim [[VAR_16_]], [[CST_0_5_]] : memref<?x4x5xf32>
61
65
// CHECK: memref.dealloc [[VAR_16_]] : memref<?x4x5xf32>
66
+ // CHECK-DAG: [[CST_4_:%.+]] = arith.constant 4 : index
67
+ // CHECK-DAG: [[CST_5_:%.+]] = arith.constant 5 : index
68
+ // CHECK-DAG: [[VAR_17_:%.+]] = arith.index_cast [[VAR_dim_7_]] : index to i64
69
+ // CHECK-DAG: [[CST_0_6_:%.+]] = arith.constant 0 : index
70
+ // CHECK: krnl.store [[VAR_17_]], [[RES_]]{{.}}[[CST_0_6_]]{{.}} : memref<3xi64>
71
+ // CHECK-DAG: [[VAR_18_:%.+]] = arith.index_cast [[CST_4_]] : index to i64
72
+ // CHECK-DAG: [[CST_1_3_:%.+]] = arith.constant 1 : index
73
+ // CHECK: krnl.store [[VAR_18_]], [[RES_]]{{.}}[[CST_1_3_]]{{.}} : memref<3xi64>
74
+ // CHECK-DAG: [[VAR_19_:%.+]] = arith.index_cast [[CST_5_]] : index to i64
75
+ // CHECK-DAG: [[CST_2_:%.+]] = arith.constant 2 : index
76
+ // CHECK: krnl.store [[VAR_19_]], [[RES_]]{{.}}[[CST_2_]]{{.}} : memref<3xi64>
62
77
// CHECK: return [[RES_]] : memref<3xi64>
63
78
// CHECK: }
64
79
}
65
-
0 commit comments