func.def
← func dialect
Function definition. Callable by name via func.call. Function arguments retain their initial values throughout the body, including in dependent result types and predicates. The entry block has no internal predecessors; CFG loops carry changing values on separate header blocks.
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
}