brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · 32c6699 Raw
79 lines · plain
1// RUN: mlir-translate -mlir-to-cpp %s | FileCheck %s2 3emitc.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_t8    %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    return12  }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 25emitc.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_t30    %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    return34  }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 47emitc.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    return52  }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 63emitc.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    return68  }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 79