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 |
linkage |
enum Linkage |
optional |
— |
| Attribute |
cc |
enum CallingConv |
optional |
— |
| Attribute |
effect_contract |
enum EffectContract |
optional |
— |
| Attribute |
temperature |
enum Temperature |
optional |
— |
| Attribute |
inline_policy |
enum InlinePolicy |
optional |
— |
| Attribute |
predicates |
predicate_list |
optional |
— |
| Attribute |
source_signature |
parameterized |
optional |
Source-language boundary contract retained independently of the selected output ABI. |
| 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
}