func.template
← func dialect
Constraint-matched visible implementation of an abstract op.
Operation contract
| Property |
Value |
| Semantic phase |
— |
| 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 |
implements |
string |
required |
— |
| 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 |
requires |
parameterized_array |
optional |
Typed proof requirements over the application-site target facts. Requirements filter provider eligibility and never add facts. |
| Attribute |
priority |
i64 |
optional |
— |
| Attribute |
retain |
enum Retain |
optional |
— |
| Region |
body |
region |
required |
Template body. (terminator func.return.) |
Examples
func.template<tile.contract> device @vnni_q8(%w: tensor<[%M]xi8>, %x: tensor<[%K]xf32>) -> (tensor<[%M]xf32>) where [mul(%M, 16)] {
func.return %x : tensor<[%K]xf32>
}
func.template<tile.contract> requires [#target.subgroup.size<64>] priority(20) @subgroup64_q8(%a: tile<4xf32>) -> (tile<4xf32>) {
func.return %a : tile<4xf32>
}
func.template<tile.contract> target(@gfx11_generic) @gfx11_q8(%a: tile<4xf32>) -> (tile<4xf32>) {
func.return %a : tile<4xf32>
}
func.template<tile.contract> priority(10) @high_priority(%a: tile<4xf32>) -> (tile<4xf32>) {
func.return %a : tile<4xf32>
}