low.invoke
← low dialect
Source-typed call edge to an explicitly selected target-Low function. Source-to-Low lowering maps the source operands and results to the helper register signature, proves the helper argument predicates, and normalizes the edge to low.func.call. Each source value maps to one register-typed value. Views require storage and layout information beyond that carrier and are not accepted as operands or results; use a source helper taking views or pass buffers and offsets explicitly. Authored inline policy has the same meaning as on low.func.call; targets without a Low call ABI may require the normalized edge to inline before emission.
Operation contract
| Property |
Value |
| Semantic phase |
executable |
| Traits |
UnknownEffects, NoAncestor(low.func.def), NoAncestor(low.kernel.def) |
| Interfaces |
CallLike |
Signature
| Kind |
Name |
Type |
Cardinality |
Description |
| Operand |
operands |
any |
variadic |
— |
| Result |
results |
any |
variadic |
— |
| Attribute |
callee |
symbol (callable) |
required |
— |
| Attribute |
effect_contract |
enum EffectContract |
optional |
— |
| Attribute |
inline_policy |
enum InlinePolicy |
optional |
— |
Examples
%result = low.invoke @extern_add(%lhs, %rhs) : (i32, i32) -> (i32)
%result = low.invoke pure @extern_add(%lhs, %rhs) : (i32, i32) -> (i32)