1// RUN: mlir-opt -split-input-file -convert-func-to-emitc %s | FileCheck %s 2 3// CHECK-LABEL: emitc.func @foo() 4// CHECK-NEXT: return 5func.func @foo() { 6 return 7} 8 9// ----- 10 11// CHECK-LABEL: emitc.func private @foo() attributes {specifiers = ["static"]} 12// CHECK-NEXT: return 13func.func private @foo() { 14 return 15} 16 17// ----- 18 19// CHECK-LABEL: emitc.func @foo(%arg0: i32) 20func.func @foo(%arg0: i32) { 21 emitc.call_opaque "bar"(%arg0) : (i32) -> () 22 return 23} 24 25// ----- 26 27// CHECK-LABEL: emitc.func @foo(%arg0: i32) -> i32 28// CHECK-NEXT: return %arg0 : i32 29func.func @foo(%arg0: i32) -> i32 { 30 return %arg0 : i32 31} 32 33// ----- 34 35// CHECK-LABEL: emitc.func @foo(%arg0: i32, %arg1: i32) -> i32 36func.func @foo(%arg0: i32, %arg1: i32) -> i32 { 37 %0 = "emitc.add" (%arg0, %arg1) : (i32, i32) -> i32 38 return %0 : i32 39} 40 41// ----- 42 43// CHECK-LABEL: emitc.func private @return_i32(%arg0: i32) -> i32 attributes {specifiers = ["static"]} 44// CHECK-NEXT: return %arg0 : i32 45func.func private @return_i32(%arg0: i32) -> i32 { 46 return %arg0 : i32 47} 48 49// CHECK-LABEL: emitc.func @call(%arg0: i32) -> i32 50// CHECK-NEXT: %0 = call @return_i32(%arg0) : (i32) -> i32 51// CHECK-NEXT: return %0 : i32 52func.func @call(%arg0: i32) -> i32 { 53 %0 = call @return_i32(%arg0) : (i32) -> (i32) 54 return %0 : i32 55} 56 57// ----- 58 59// CHECK-LABEL: emitc.func private @return_i32(i32) -> i32 attributes {specifiers = ["extern"]} 60func.func private @return_i32(%arg0: i32) -> i32 61 62// ----- 63 64// CHECK-LABEL: emitc.func private @return_void() attributes {specifiers = ["static"]} 65// CHECK-NEXT: return 66func.func private @return_void() { 67 return 68} 69 70// CHECK-LABEL: emitc.func @call() 71// CHECK-NEXT: call @return_void() : () -> () 72// CHECK-NEXT: return 73func.func @call() { 74 call @return_void() : () -> () 75 return 76} 77