[Mlir-commits] [mlir] [mlir][EmitC]Add a Reflection Map to a Class (PR #150572)

Jaden Angella llvmlistbot at llvm.org
Mon Jul 28 20:01:53 PDT 2025


================
@@ -0,0 +1,57 @@
+// RUN: mlir-opt --add-reflection-map="named-attribute=emitc.field_ref" %s | FileCheck %s
+
+emitc.class @mainClass {
+  emitc.field @fieldName0 : !emitc.array<1xf32>  {emitc.field_ref = ["another_feature"]}
+  emitc.field @fieldName1 : !emitc.array<1xf32>  {emitc.field_ref = ["some_feature"]}
+  emitc.field @fieldName2 : !emitc.array<1xf32>  {emitc.field_ref = ["output_0"]}
+  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 = get_field @fieldName2 : !emitc.array<1xf32>
+  %4 = subscript %2[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+  %5 = load %4 : <f32>
+  %6 = subscript %1[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+  %7 = load %6 : <f32>
+  %8 = add %5, %7 : (f32, f32) -> f32
+  %9 = subscript %3[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>
+  assign %8 : f32 to %9 : <f32>
+  return
+  }
+}
+
+// CHECK: module {
+// CHECK-NEXT:   emitc.include <"map">
+// CHECK-NEXT:   emitc.include <"string">
+// CHECK-NEXT:   emitc.class @mainClass {
+// CHECK-NEXT:     emitc.field @fieldName0 : !emitc.array<1xf32> {emitc.field_ref = ["another_feature"]}
+// CHECK-NEXT:     emitc.field @fieldName1 : !emitc.array<1xf32> {emitc.field_ref = ["some_feature"]}
+// CHECK-NEXT:     emitc.field @fieldName2 : !emitc.array<1xf32> {emitc.field_ref = ["output_0"]}
+// CHECK-NEXT:     emitc.func @getBufferForName(%arg0: !emitc.opaque<"std::string_view">) -> !emitc.opaque<"char"> {
+// CHECK-NEXT:       %0 = "emitc.constant"() <{value = #emitc.opaque<"{  { \22another_feature\22, reinterpret_cast<char*>(&fieldName0) },  { \22some_feature\22, reinterpret_cast<char*>(&fieldName1) },  { \22output_0\22, reinterpret_cast<char*>(&fieldName2) } }">}> : () -> !emitc.opaque<"const std::map<std::string, char*>">
----------------
Jaddyen wrote:

I think it is some weird parsing going on. 
I chose to not take it too seriously since it didn't change the output when it came to cpp. 
 

https://github.com/llvm/llvm-project/pull/150572


More information about the Mlir-commits mailing list