Skip to content

Commit d1e6923

Browse files
authored
[mlir][emitc] Clean up EmitC tests (#152327)
Changes: - Unnecessary `-verify-diagnostics` flags were removed from tests. - `mlir/test/mlir-translate/emitc_classops.mlir` was moved to `mlir/test/Target/Cpp/class.mlir`. - The `transfrom.mlir` test was renamed to `form-expressions.mlir` for clarity. - Test for `emitc.class`, `emitc.field` and `emitc.get_field` was added to `mlir/test/Dialect/EmitC/ops.mlir`. - `wrap_emitc_func_in_class.mlir` and `wrap_emitc_func_in_class_noAttr.mlir` were combined into `wrap-func-in-class.mlir`.
1 parent 95c525b commit d1e6923

File tree

9 files changed

+154
-145
lines changed

9 files changed

+154
-145
lines changed

mlir/test/Dialect/EmitC/attrs.mlir

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// RUN: mlir-opt -verify-diagnostics %s | FileCheck %s
1+
// RUN: mlir-opt %s | FileCheck %s
22
// check parser
3-
// RUN: mlir-opt -verify-diagnostics %s | mlir-opt -verify-diagnostics | FileCheck %s
3+
// RUN: mlir-opt %s | mlir-opt | FileCheck %s
44

55
// CHECK-LABEL: func @opaque_attrs() {
66
func.func @opaque_attrs() {

mlir/test/Dialect/EmitC/transforms.mlir renamed to mlir/test/Dialect/EmitC/form-expressions.mlir

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: mlir-opt %s --form-expressions --verify-diagnostics --split-input-file | FileCheck %s
1+
// RUN: mlir-opt %s -form-expressions | FileCheck %s
22

33
// CHECK-LABEL: func.func @single_expression(
44
// CHECK-SAME: %[[VAL_0:.*]]: i32, %[[VAL_1:.*]]: i32, %[[VAL_2:.*]]: i32, %[[VAL_3:.*]]: i32) -> i1 {
@@ -83,7 +83,6 @@ func.func @expression_with_dereference(%arg0: i32, %arg1: i32, %arg2: !emitc.ptr
8383
return %c : i1
8484
}
8585

86-
8786
// CHECK-LABEL: func.func @expression_with_address_taken(
8887
// CHECK-SAME: %[[VAL_0:.*]]: i32, %[[VAL_1:.*]]: i32, %[[VAL_2:.*]]: !emitc.ptr<i32>) -> i1 {
8988
// CHECK: %[[VAL_3:.*]] = "emitc.variable"() <{value = #emitc.opaque<"">}> : () -> !emitc.lvalue<i32>
@@ -121,9 +120,8 @@ func.func @no_nested_expression(%arg0: i32, %arg1: i32) -> i1 {
121120
return %a : i1
122121
}
123122

124-
125123
// CHECK-LABEL: func.func @single_result_requirement
126-
// CHECK-NOT: emitc.expression
124+
// CHECK-NOT: emitc.expression
127125

128126
func.func @single_result_requirement() -> (i32, i32) {
129127
%0:2 = emitc.call_opaque "foo" () : () -> (i32, i32)
@@ -152,7 +150,6 @@ func.func @single_result_requirement() -> (i32, i32) {
152150
// CHECK: return %[[VAL_9]] : i1
153151
// CHECK: }
154152

155-
156153
func.func @expression_with_load(%arg0: i32, %arg1: !emitc.ptr<i32>) -> i1 {
157154
%c0 = "emitc.constant"() {value = 0 : i64} : () -> i64
158155
%0 = "emitc.variable"() <{value = #emitc.opaque<"42">}> : () -> !emitc.lvalue<i32>

mlir/test/Dialect/EmitC/ops.mlir

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -310,3 +310,15 @@ func.func @switch() {
310310

311311
return
312312
}
313+
314+
emitc.class final @finalClass {
315+
emitc.field @fieldName0 : !emitc.array<1xf32>
316+
emitc.field @fieldName1 : !emitc.array<1xf32>
317+
emitc.func @execute() {
318+
%0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
319+
%1 = get_field @fieldName0 : !emitc.array<1xf32>
320+
%2 = get_field @fieldName1 : !emitc.array<1xf32>
321+
%3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
322+
return
323+
}
324+
}

mlir/test/Dialect/EmitC/types.mlir

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
// RUN: mlir-opt -verify-diagnostics -allow-unregistered-dialect %s | FileCheck %s
2-
// check parser
3-
// RUN: mlir-opt -verify-diagnostics -allow-unregistered-dialect %s | mlir-opt -verify-diagnostics --allow-unregistered-dialect | FileCheck %s
1+
// RUN: mlir-opt %s -allow-unregistered-dialect | FileCheck %s
2+
// Check parser
3+
// RUN: mlir-opt %s -allow-unregistered-dialect | mlir-opt -allow-unregistered-dialect | FileCheck %s
44

55
// CHECK-LABEL: func @array_types(
66
func.func @array_types(
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
// RUN: mlir-opt %s -wrap-emitc-func-in-class -split-input-file | FileCheck %s
2+
3+
emitc.func @foo(%arg0 : !emitc.array<1xf32>) {
4+
emitc.call_opaque "bar" (%arg0) : (!emitc.array<1xf32>) -> ()
5+
emitc.return
6+
}
7+
8+
// CHECK: module {
9+
// CHECK: emitc.class @fooClass {
10+
// CHECK: emitc.field @fieldName0 : !emitc.array<1xf32>
11+
// CHECK: emitc.func @execute() {
12+
// CHECK: %0 = get_field @fieldName0 : !emitc.array<1xf32>
13+
// CHECK: call_opaque "bar"(%0) : (!emitc.array<1xf32>) -> ()
14+
// CHECK: return
15+
// CHECK: }
16+
// CHECK: }
17+
// CHECK: }
18+
19+
// -----
20+
21+
module attributes { } {
22+
emitc.func @model(%arg0: !emitc.array<1xf32> {emitc.name_hint = "another_feature"},
23+
%arg1: !emitc.array<1xf32> {emitc.name_hint = "some_feature"},
24+
%arg2: !emitc.array<1xf32> {emitc.name_hint = "output_0"}) attributes { } {
25+
%0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
26+
%1 = subscript %arg1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
27+
%2 = load %1 : <f32>
28+
%3 = subscript %arg0[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
29+
%4 = load %3 : <f32>
30+
%5 = add %2, %4 : (f32, f32) -> f32
31+
%6 = subscript %arg2[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
32+
assign %5 : f32 to %6 : <f32>
33+
return
34+
}
35+
}
36+
37+
// CHECK: module {
38+
// CHECK: emitc.class @modelClass {
39+
// CHECK: emitc.field @fieldName0 : !emitc.array<1xf32> {emitc.name_hint = "another_feature"}
40+
// CHECK: emitc.field @fieldName1 : !emitc.array<1xf32> {emitc.name_hint = "some_feature"}
41+
// CHECK: emitc.field @fieldName2 : !emitc.array<1xf32> {emitc.name_hint = "output_0"}
42+
// CHECK: emitc.func @execute() {
43+
// CHECK: get_field @fieldName0 : !emitc.array<1xf32>
44+
// CHECK: get_field @fieldName1 : !emitc.array<1xf32>
45+
// CHECK: get_field @fieldName2 : !emitc.array<1xf32>
46+
// CHECK: "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
47+
// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
48+
// CHECK: load {{.*}} : <f32>
49+
// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
50+
// CHECK: load {{.*}} : <f32>
51+
// CHECK: add {{.*}}, {{.*}} : (f32, f32) -> f32
52+
// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
53+
// CHECK: assign {{.*}} : f32 to {{.*}} : <f32>
54+
// CHECK: return
55+
// CHECK: }
56+
// CHECK: }
57+
// CHECK: }

mlir/test/Dialect/EmitC/wrap_emitc_func_in_class.mlir

Lines changed: 0 additions & 40 deletions
This file was deleted.

mlir/test/Dialect/EmitC/wrap_emitc_func_in_class_noAttr.mlir

Lines changed: 0 additions & 17 deletions
This file was deleted.

mlir/test/Target/Cpp/class.mlir

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// RUN: mlir-translate -mlir-to-cpp %s | FileCheck %s
2+
3+
emitc.class @modelClass {
4+
emitc.field @fieldName0 : !emitc.array<1xf32>
5+
emitc.field @fieldName1 : !emitc.array<1xf32>
6+
emitc.func @execute() {
7+
%0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
8+
%1 = get_field @fieldName0 : !emitc.array<1xf32>
9+
%2 = get_field @fieldName1 : !emitc.array<1xf32>
10+
%3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
11+
return
12+
}
13+
}
14+
15+
// CHECK-LABEL: class modelClass {
16+
// CHECK-NEXT: public:
17+
// CHECK-NEXT: float fieldName0[1];
18+
// CHECK-NEXT: float fieldName1[1];
19+
// CHECK-NEXT: void execute() {
20+
// CHECK-NEXT: size_t v1 = 0;
21+
// CHECK-NEXT: return;
22+
// CHECK-NEXT: }
23+
// CHECK-NEXT: };
24+
25+
emitc.class final @finalClass {
26+
emitc.field @fieldName0 : !emitc.array<1xf32>
27+
emitc.field @fieldName1 : !emitc.array<1xf32>
28+
emitc.func @execute() {
29+
%0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
30+
%1 = get_field @fieldName0 : !emitc.array<1xf32>
31+
%2 = get_field @fieldName1 : !emitc.array<1xf32>
32+
%3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
33+
return
34+
}
35+
}
36+
37+
// CHECK-LABEL: class finalClass final {
38+
// CHECK-NEXT: public:
39+
// CHECK-NEXT: float fieldName0[1];
40+
// CHECK-NEXT: float fieldName1[1];
41+
// CHECK-NEXT: void execute() {
42+
// CHECK-NEXT: size_t v1 = 0;
43+
// CHECK-NEXT: return;
44+
// CHECK-NEXT: }
45+
// CHECK-NEXT: };
46+
47+
emitc.class @mainClass {
48+
emitc.field @fieldName0 : !emitc.array<2xf32> = dense<0.0> {attrs = {emitc.name_hint = "another_feature"}}
49+
emitc.func @get_fieldName0() {
50+
%0 = emitc.get_field @fieldName0 : !emitc.array<2xf32>
51+
return
52+
}
53+
}
54+
55+
// CHECK-LABEL: class mainClass {
56+
// CHECK-NEXT: public:
57+
// CHECK-NEXT: float fieldName0[2] = {0.0e+00f, 0.0e+00f};
58+
// CHECK-NEXT: void get_fieldName0() {
59+
// CHECK-NEXT: return;
60+
// CHECK-NEXT: }
61+
// CHECK-NEXT: };
62+
63+
emitc.class @reflectionClass {
64+
emitc.field @reflectionMap : !emitc.opaque<"const std::map<std::string, std::string>"> = #emitc.opaque<"{ { \22another_feature\22, \22fieldName0\22 } }">
65+
emitc.func @get_reflectionMap() {
66+
%0 = emitc.get_field @reflectionMap : !emitc.opaque<"const std::map<std::string, std::string>">
67+
return
68+
}
69+
}
70+
71+
// CHECK-LABEL: class reflectionClass {
72+
// CHECK-NEXT: public:
73+
// CHECK-NEXT: const std::map<std::string, std::string> reflectionMap = { { "another_feature", "fieldName0" } };
74+
// CHECK-NEXT: void get_reflectionMap() {
75+
// CHECK-NEXT: return;
76+
// CHECK-NEXT: }
77+
// CHECK-NEXT: };
78+

mlir/test/mlir-translate/emitc_classops.mlir

Lines changed: 0 additions & 78 deletions
This file was deleted.

0 commit comments

Comments
 (0)