xref: /llvm-project/mlir/test/Conversion/FuncToEmitC/func-to-emitc.mlir (revision 68a3908148c6b6424b1ad4d0ed19d56435252832)
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