func.def
← func dialect
Function definition. Callable by name via func.call.
Operation contract
| Property |
Value |
| Semantic phase |
executable |
| Traits |
SymbolDefine, IsolatedFromAbove |
| Interfaces |
FuncLike |
Symbol contract
| Property |
Value |
| Kind |
function |
| Defining field |
callee |
| Interfaces |
func_like, callable |
| Flags |
— |
Signature
| Kind |
Name |
Type |
Cardinality |
Description |
| Result |
results |
any |
variadic |
— |
| Attribute |
callee |
symbol |
required |
— |
| Attribute |
visibility |
enum Visibility |
optional |
— |
| Attribute |
cc |
enum CallingConv |
optional |
— |
| Attribute |
purity |
enum Purity |
optional |
— |
| Attribute |
temperature |
enum Temperature |
optional |
— |
| Attribute |
inline_policy |
enum InlinePolicy |
optional |
— |
| Attribute |
predicates |
predicate_list |
optional |
— |
| Attribute |
target |
symbol (target) |
optional |
— |
| Attribute |
abi |
enum ExportAbiKind |
optional |
— |
| Attribute |
abi_attrs |
dict |
optional |
— |
| Attribute |
export_symbol |
string |
optional |
— |
| Attribute |
export_attrs |
dict |
optional |
— |
| Attribute |
retain |
enum Retain |
optional |
— |
| Region |
body |
region |
required |
Function body. (terminator func.return.) |
Examples
func.def @negate(%input: f32) -> (f32) {
func.return %input : f32
}
func.def public device @entry(%a: f32) -> (f32) {
func.return %a : f32
}
func.def public pure @add(%a: f32, %b: f32) -> (f32) {
func.return %a : f32
}
func.def cold noinline @serializer(%a: f32) -> (f32) {
func.return %a : f32
}