58 lines · plain
1// RUN: mlir-opt %s -wrap-emitc-func-in-class -split-input-file | FileCheck %s2 3emitc.func @foo(%arg0 : !emitc.array<1xf32>) {4 emitc.call_opaque "bar" (%arg0) : (!emitc.array<1xf32>) -> ()5 emitc.return6}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: return15// CHECK: }16// CHECK: }17// CHECK: }18 19// -----20 21module 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_t26 %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) -> f3231 %6 = subscript %arg2[%0] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>32 assign %5 : f32 to %6 : <f32>33 return34 }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_t47// 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) -> f3252// CHECK: subscript {{.*}}[{{.*}}] : (!emitc.array<1xf32>, !emitc.size_t) -> !emitc.lvalue<f32>53// CHECK: assign {{.*}} : f32 to {{.*}} : <f32>54// CHECK: return55// CHECK: }56// CHECK: }57// CHECK: }58