[Mlir-commits] [mlir] [mlir][emitc] Add a `declare_func` operation (PR #80297)
Marius Brehler
llvmlistbot at llvm.org
Fri Feb 2 02:58:03 PST 2024
================
@@ -460,6 +460,48 @@ def EmitC_CallOp : EmitC_Op<"call",
}];
}
+def EmitC_DeclareFuncOp : EmitC_Op<"declare_func", [
+ DeclareOpInterfaceMethods<SymbolUserOpInterface>
+]> {
+ let summary = "An operation to declare a function";
+ let description = [{
+ The `declare_func` operation allows to insert a function declaration for an
+ `emitc.func` at a specific position. The operation only requires the `callee`
+ of the `emitc.func` to be specified as an attribute.
+
+ Example:
+
+ ```mlir
+ emitc.declare_func @bar
+ emitc.func @foo(%arg0: i32) -> i32 {
+ %0 = emitc.call @bar(%arg0) : (i32) -> (i32)
+ emitc.return %0 : i32
+ }
+
+ emitc.func @bar(%arg0: i32) -> i32 {
+ emitc.return %arg0 : i32
+ }
+ ```
+
+ ```c++
+ // Code emitted for the operations above.
+ int32_t bar(int32_t v1);
+ int32_t foo(int32_t v1) {
+ int32_t v2 = bar(v1);
+ return v2;
+ }
+
+ int32_t bar(int32_t v1) {
+ return v1;
+ }
+ ```
+ }];
+ let arguments = (ins FlatSymbolRefAttr:$callee);
----------------
marbre wrote:
Yeah, I need to correct my previous statement as i was wrong and the corresponding attribute is named `sym_name` in `emitc.func`. I will adopt this for the `FlatSymbolRefAttr`of the `emitc.declare_func`op.
https://github.com/llvm/llvm-project/pull/80297
More information about the Mlir-commits
mailing list