[Mlir-commits] [mlir] d1e6923 - [mlir][emitc] Clean up EmitC tests (#152327)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Aug 11 02:54:36 PDT 2025
Author: Andrey Timonin
Date: 2025-08-11T11:54:33+02:00
New Revision: d1e692311036d680628e0f0271589e675e042f1e
URL: https://github.com/llvm/llvm-project/commit/d1e692311036d680628e0f0271589e675e042f1e
DIFF: https://github.com/llvm/llvm-project/commit/d1e692311036d680628e0f0271589e675e042f1e.diff
LOG: [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`.
Added:
mlir/test/Dialect/EmitC/form-expressions.mlir
mlir/test/Dialect/EmitC/wrap-func-in-class.mlir
mlir/test/Target/Cpp/class.mlir
Modified:
mlir/test/Dialect/EmitC/attrs.mlir
mlir/test/Dialect/EmitC/ops.mlir
mlir/test/Dialect/EmitC/types.mlir
Removed:
mlir/test/Dialect/EmitC/transforms.mlir
mlir/test/Dialect/EmitC/wrap_emitc_func_in_class.mlir
mlir/test/Dialect/EmitC/wrap_emitc_func_in_class_noAttr.mlir
mlir/test/mlir-translate/emitc_classops.mlir
################################################################################
diff --git a/mlir/test/Dialect/EmitC/attrs.mlir b/mlir/test/Dialect/EmitC/attrs.mlir
index 11251b88ff0c9..5a219c462678e 100644
--- a/mlir/test/Dialect/EmitC/attrs.mlir
+++ b/mlir/test/Dialect/EmitC/attrs.mlir
@@ -1,6 +1,6 @@
-// RUN: mlir-opt -verify-diagnostics %s | FileCheck %s
+// RUN: mlir-opt %s | FileCheck %s
// check parser
-// RUN: mlir-opt -verify-diagnostics %s | mlir-opt -verify-diagnostics | FileCheck %s
+// RUN: mlir-opt %s | mlir-opt | FileCheck %s
// CHECK-LABEL: func @opaque_attrs() {
func.func @opaque_attrs() {
diff --git a/mlir/test/Dialect/EmitC/transforms.mlir b/mlir/test/Dialect/EmitC/form-expressions.mlir
similarity index 98%
rename from mlir/test/Dialect/EmitC/transforms.mlir
rename to mlir/test/Dialect/EmitC/form-expressions.mlir
index a38f396dad953..1ac053bf1215f 100644
--- a/mlir/test/Dialect/EmitC/transforms.mlir
+++ b/mlir/test/Dialect/EmitC/form-expressions.mlir
@@ -1,4 +1,4 @@
-// RUN: mlir-opt %s --form-expressions --verify-diagnostics --split-input-file | FileCheck %s
+// RUN: mlir-opt %s -form-expressions | FileCheck %s
// CHECK-LABEL: func.func @single_expression(
// 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
return %c : i1
}
-
// CHECK-LABEL: func.func @expression_with_address_taken(
// CHECK-SAME: %[[VAL_0:.*]]: i32, %[[VAL_1:.*]]: i32, %[[VAL_2:.*]]: !emitc.ptr<i32>) -> i1 {
// 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 {
return %a : i1
}
-
// CHECK-LABEL: func.func @single_result_requirement
-// CHECK-NOT: emitc.expression
+// CHECK-NOT: emitc.expression
func.func @single_result_requirement() -> (i32, i32) {
%0:2 = emitc.call_opaque "foo" () : () -> (i32, i32)
@@ -152,7 +150,6 @@ func.func @single_result_requirement() -> (i32, i32) {
// CHECK: return %[[VAL_9]] : i1
// CHECK: }
-
func.func @expression_with_load(%arg0: i32, %arg1: !emitc.ptr<i32>) -> i1 {
%c0 = "emitc.constant"() {value = 0 : i64} : () -> i64
%0 = "emitc.variable"() <{value = #emitc.opaque<"42">}> : () -> !emitc.lvalue<i32>
diff --git a/mlir/test/Dialect/EmitC/ops.mlir b/mlir/test/Dialect/EmitC/ops.mlir
index ad40313f95df9..acee0a8d53fe4 100644
--- a/mlir/test/Dialect/EmitC/ops.mlir
+++ b/mlir/test/Dialect/EmitC/ops.mlir
@@ -310,3 +310,15 @@ func.func @switch() {
return
}
+
+emitc.class final @finalClass {
+ emitc.field @fieldName0 : !emitc.array<1xf32>
+ emitc.field @fieldName1 : !emitc.array<1xf32>
+ emitc.func @execute() {
+ %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
+ %1 = get_field @fieldName0 : !emitc.array<1xf32>
+ %2 = get_field @fieldName1 : !emitc.array<1xf32>
+ %3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+ return
+ }
+}
diff --git a/mlir/test/Dialect/EmitC/types.mlir b/mlir/test/Dialect/EmitC/types.mlir
index d4dd94457f39b..ce1e03a83e5d1 100644
--- a/mlir/test/Dialect/EmitC/types.mlir
+++ b/mlir/test/Dialect/EmitC/types.mlir
@@ -1,6 +1,6 @@
-// RUN: mlir-opt -verify-diagnostics -allow-unregistered-dialect %s | FileCheck %s
-// check parser
-// RUN: mlir-opt -verify-diagnostics -allow-unregistered-dialect %s | mlir-opt -verify-diagnostics --allow-unregistered-dialect | FileCheck %s
+// RUN: mlir-opt %s -allow-unregistered-dialect | FileCheck %s
+// Check parser
+// RUN: mlir-opt %s -allow-unregistered-dialect | mlir-opt -allow-unregistered-dialect | FileCheck %s
// CHECK-LABEL: func @array_types(
func.func @array_types(
diff --git a/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir b/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir
new file mode 100644
index 0000000000000..809febd0267b1
--- /dev/null
+++ b/mlir/test/Dialect/EmitC/wrap-func-in-class.mlir
@@ -0,0 +1,57 @@
+// RUN: mlir-opt %s -wrap-emitc-func-in-class -split-input-file | FileCheck %s
+
+emitc.func @foo(%arg0 : !emitc.array<1xf32>) {
+ emitc.call_opaque "bar" (%arg0) : (!emitc.array<1xf32>) -> ()
+ emitc.return
+}
+
+// CHECK: module {
+// CHECK: emitc.class @fooClass {
+// CHECK: emitc.field @fieldName0 : !emitc.array<1xf32>
+// CHECK: emitc.func @execute() {
+// CHECK: %0 = get_field @fieldName0 : !emitc.array<1xf32>
+// CHECK: call_opaque "bar"(%0) : (!emitc.array<1xf32>) -> ()
+// CHECK: return
+// CHECK: }
+// CHECK: }
+// CHECK: }
+
+// -----
+
+module attributes { } {
+ emitc.func @model(%arg0: !emitc.array<1xf32> {emitc.name_hint = "another_feature"},
+ %arg1: !emitc.array<1xf32> {emitc.name_hint = "some_feature"},
+ %arg2: !emitc.array<1xf32> {emitc.name_hint = "output_0"}) attributes { } {
+ %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
+ %1 = subscript %arg1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+ %2 = load %1 : <f32>
+ %3 = subscript %arg0[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+ %4 = load %3 : <f32>
+ %5 = add %2, %4 : (f32, f32) -> f32
+ %6 = subscript %arg2[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+ assign %5 : f32 to %6 : <f32>
+ return
+ }
+}
+
+// CHECK: module {
+// CHECK: emitc.class @modelClass {
+// CHECK: emitc.field @fieldName0 : !emitc.array<1xf32> {emitc.name_hint = "another_feature"}
+// CHECK: emitc.field @fieldName1 : !emitc.array<1xf32> {emitc.name_hint = "some_feature"}
+// CHECK: emitc.field @fieldName2 : !emitc.array<1xf32> {emitc.name_hint = "output_0"}
+// CHECK: emitc.func @execute() {
+// CHECK: get_field @fieldName0 : !emitc.array<1xf32>
+// CHECK: get_field @fieldName1 : !emitc.array<1xf32>
+// CHECK: get_field @fieldName2 : !emitc.array<1xf32>
+// CHECK: "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
+// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+// CHECK: load {{.*}} : <f32>
+// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+// CHECK: load {{.*}} : <f32>
+// CHECK: add {{.*}}, {{.*}} : (f32, f32) -> f32
+// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+// CHECK: assign {{.*}} : f32 to {{.*}} : <f32>
+// CHECK: return
+// CHECK: }
+// CHECK: }
+// CHECK: }
diff --git a/mlir/test/Dialect/EmitC/wrap_emitc_func_in_class.mlir b/mlir/test/Dialect/EmitC/wrap_emitc_func_in_class.mlir
deleted file mode 100644
index 029fa78a3f528..0000000000000
--- a/mlir/test/Dialect/EmitC/wrap_emitc_func_in_class.mlir
+++ /dev/null
@@ -1,40 +0,0 @@
-// RUN: mlir-opt --wrap-emitc-func-in-class %s | FileCheck %s
-
-module attributes { } {
- emitc.func @model(%arg0: !emitc.array<1xf32> {emitc.name_hint = "another_feature"},
- %arg1: !emitc.array<1xf32> {emitc.name_hint = "some_feature"},
- %arg2: !emitc.array<1xf32> {emitc.name_hint = "output_0"}) attributes { } {
- %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
- %1 = subscript %arg1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
- %2 = load %1 : <f32>
- %3 = subscript %arg0[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
- %4 = load %3 : <f32>
- %5 = add %2, %4 : (f32, f32) -> f32
- %6 = subscript %arg2[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
- assign %5 : f32 to %6 : <f32>
- return
- }
-}
-
-
-// CHECK: module {
-// CHECK-NEXT: emitc.class @modelClass {
-// CHECK-NEXT: emitc.field @fieldName0 : !emitc.array<1xf32> {emitc.name_hint = "another_feature"}
-// CHECK-NEXT: emitc.field @fieldName1 : !emitc.array<1xf32> {emitc.name_hint = "some_feature"}
-// CHECK-NEXT: emitc.field @fieldName2 : !emitc.array<1xf32> {emitc.name_hint = "output_0"}
-// CHECK-NEXT: emitc.func @execute() {
-// CHECK-NEXT: get_field @fieldName0 : !emitc.array<1xf32>
-// CHECK-NEXT: get_field @fieldName1 : !emitc.array<1xf32>
-// CHECK-NEXT: get_field @fieldName2 : !emitc.array<1xf32>
-// CHECK-NEXT: "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
-// CHECK-NEXT: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
-// CHECK-NEXT: load {{.*}} : <f32>
-// CHECK-NEXT: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
-// CHECK-NEXT: load {{.*}} : <f32>
-// CHECK-NEXT: add {{.*}}, {{.*}} : (f32, f32) -> f32
-// CHECK-NEXT: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
-// CHECK-NEXT: assign {{.*}} : f32 to {{.*}} : <f32>
-// CHECK-NEXT: return
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
diff --git a/mlir/test/Dialect/EmitC/wrap_emitc_func_in_class_noAttr.mlir b/mlir/test/Dialect/EmitC/wrap_emitc_func_in_class_noAttr.mlir
deleted file mode 100644
index 92ed20c4b14e3..0000000000000
--- a/mlir/test/Dialect/EmitC/wrap_emitc_func_in_class_noAttr.mlir
+++ /dev/null
@@ -1,17 +0,0 @@
-// RUN: mlir-opt --wrap-emitc-func-in-class %s | FileCheck %s
-
-emitc.func @foo(%arg0 : !emitc.array<1xf32>) {
- emitc.call_opaque "bar" (%arg0) : (!emitc.array<1xf32>) -> ()
- emitc.return
-}
-
-// CHECK: module {
-// CHECK-NEXT: emitc.class @fooClass {
-// CHECK-NEXT: emitc.field @fieldName0 : !emitc.array<1xf32>
-// CHECK-NEXT: emitc.func @execute() {
-// CHECK-NEXT: %0 = get_field @fieldName0 : !emitc.array<1xf32>
-// CHECK-NEXT: call_opaque "bar"(%0) : (!emitc.array<1xf32>) -> ()
-// CHECK-NEXT: return
-// CHECK-NEXT: }
-// CHECK-NEXT: }
-// CHECK-NEXT: }
diff --git a/mlir/test/Target/Cpp/class.mlir b/mlir/test/Target/Cpp/class.mlir
new file mode 100644
index 0000000000000..32c6699f3f666
--- /dev/null
+++ b/mlir/test/Target/Cpp/class.mlir
@@ -0,0 +1,78 @@
+// RUN: mlir-translate -mlir-to-cpp %s | FileCheck %s
+
+emitc.class @modelClass {
+ emitc.field @fieldName0 : !emitc.array<1xf32>
+ emitc.field @fieldName1 : !emitc.array<1xf32>
+ emitc.func @execute() {
+ %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
+ %1 = get_field @fieldName0 : !emitc.array<1xf32>
+ %2 = get_field @fieldName1 : !emitc.array<1xf32>
+ %3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+ return
+ }
+}
+
+// CHECK-LABEL: class modelClass {
+// CHECK-NEXT: public:
+// CHECK-NEXT: float fieldName0[1];
+// CHECK-NEXT: float fieldName1[1];
+// CHECK-NEXT: void execute() {
+// CHECK-NEXT: size_t v1 = 0;
+// CHECK-NEXT: return;
+// CHECK-NEXT: }
+// CHECK-NEXT: };
+
+emitc.class final @finalClass {
+ emitc.field @fieldName0 : !emitc.array<1xf32>
+ emitc.field @fieldName1 : !emitc.array<1xf32>
+ emitc.func @execute() {
+ %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
+ %1 = get_field @fieldName0 : !emitc.array<1xf32>
+ %2 = get_field @fieldName1 : !emitc.array<1xf32>
+ %3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+ return
+ }
+}
+
+// CHECK-LABEL: class finalClass final {
+// CHECK-NEXT: public:
+// CHECK-NEXT: float fieldName0[1];
+// CHECK-NEXT: float fieldName1[1];
+// CHECK-NEXT: void execute() {
+// CHECK-NEXT: size_t v1 = 0;
+// CHECK-NEXT: return;
+// CHECK-NEXT: }
+// CHECK-NEXT: };
+
+emitc.class @mainClass {
+ emitc.field @fieldName0 : !emitc.array<2xf32> = dense<0.0> {attrs = {emitc.name_hint = "another_feature"}}
+ emitc.func @get_fieldName0() {
+ %0 = emitc.get_field @fieldName0 : !emitc.array<2xf32>
+ return
+ }
+}
+
+// CHECK-LABEL: class mainClass {
+// CHECK-NEXT: public:
+// CHECK-NEXT: float fieldName0[2] = {0.0e+00f, 0.0e+00f};
+// CHECK-NEXT: void get_fieldName0() {
+// CHECK-NEXT: return;
+// CHECK-NEXT: }
+// CHECK-NEXT: };
+
+emitc.class @reflectionClass {
+ emitc.field @reflectionMap : !emitc.opaque<"const std::map<std::string, std::string>"> = #emitc.opaque<"{ { \22another_feature\22, \22fieldName0\22 } }">
+ emitc.func @get_reflectionMap() {
+ %0 = emitc.get_field @reflectionMap : !emitc.opaque<"const std::map<std::string, std::string>">
+ return
+ }
+}
+
+// CHECK-LABEL: class reflectionClass {
+// CHECK-NEXT: public:
+// CHECK-NEXT: const std::map<std::string, std::string> reflectionMap = { { "another_feature", "fieldName0" } };
+// CHECK-NEXT: void get_reflectionMap() {
+// CHECK-NEXT: return;
+// CHECK-NEXT: }
+// CHECK-NEXT: };
+
diff --git a/mlir/test/mlir-translate/emitc_classops.mlir b/mlir/test/mlir-translate/emitc_classops.mlir
deleted file mode 100644
index d880f9b16dfc6..0000000000000
--- a/mlir/test/mlir-translate/emitc_classops.mlir
+++ /dev/null
@@ -1,78 +0,0 @@
-// RUN: mlir-translate --mlir-to-cpp %s | FileCheck %s
-
-emitc.class @modelClass {
- emitc.field @fieldName0 : !emitc.array<1xf32>
- emitc.field @fieldName1 : !emitc.array<1xf32>
- emitc.func @execute() {
- %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
- %1 = get_field @fieldName0 : !emitc.array<1xf32>
- %2 = get_field @fieldName1 : !emitc.array<1xf32>
- %3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
- return
- }
-}
-
-// CHECK-LABEL: class modelClass {
-// CHECK-NEXT: public:
-// CHECK-NEXT: float fieldName0[1];
-// CHECK-NEXT: float fieldName1[1];
-// CHECK-NEXT: void execute() {
-// CHECK-NEXT: size_t v1 = 0;
-// CHECK-NEXT: return;
-// CHECK-NEXT: }
-// CHECK-NEXT: };
-
-emitc.class final @finalClass {
- emitc.field @fieldName0 : !emitc.array<1xf32>
- emitc.field @fieldName1 : !emitc.array<1xf32>
- emitc.func @execute() {
- %0 = "emitc.constant"() <{value = 0 : index}> : () -> !emitc.size_t
- %1 = get_field @fieldName0 : !emitc.array<1xf32>
- %2 = get_field @fieldName1 : !emitc.array<1xf32>
- %3 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
- return
- }
-}
-
-// CHECK-LABEL: class finalClass final {
-// CHECK-NEXT: public:
-// CHECK-NEXT: float fieldName0[1];
-// CHECK-NEXT: float fieldName1[1];
-// CHECK-NEXT: void execute() {
-// CHECK-NEXT: size_t v1 = 0;
-// CHECK-NEXT: return;
-// CHECK-NEXT: }
-// CHECK-NEXT: };
-
-emitc.class @mainClass {
- emitc.field @fieldName0 : !emitc.array<2xf32> = dense<0.0> {attrs = {emitc.name_hint = "another_feature"}}
- emitc.func @get_fieldName0() {
- %0 = emitc.get_field @fieldName0 : !emitc.array<2xf32>
- return
- }
-}
-
-// CHECK-LABEL: class mainClass {
-// CHECK-NEXT: public:
-// CHECK-NEXT: float fieldName0[2] = {0.0e+00f, 0.0e+00f};
-// CHECK-NEXT: void get_fieldName0() {
-// CHECK-NEXT: return;
-// CHECK-NEXT: }
-// CHECK-NEXT: };
-
-emitc.class @reflectionClass {
- emitc.field @reflectionMap : !emitc.opaque<"const std::map<std::string, std::string>"> = #emitc.opaque<"{ { \22another_feature\22, \22fieldName0\22 } }">
- emitc.func @get_reflectionMap() {
- %0 = emitc.get_field @reflectionMap : !emitc.opaque<"const std::map<std::string, std::string>">
- return
- }
-}
-
-// CHECK-LABEL: class reflectionClass {
-// CHECK-NEXT: public:
-// CHECK-NEXT: const std::map<std::string, std::string> reflectionMap = { { "another_feature", "fieldName0" } };
-// CHECK-NEXT: void get_reflectionMap() {
-// CHECK-NEXT: return;
-// CHECK-NEXT: }
-// CHECK-NEXT: };
-
More information about the Mlir-commits
mailing list