Skip to content

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
}