[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