tvm_tirx.tirx.transform.LowerTVMBuiltin#
- tvm_tirx.tirx.transform.LowerTVMBuiltin()#
Lower runtime builtins to explicit stack storage and ABI operations.
For example, packed calls gain argument/result slots. Requires the function target attribute for target-dependent lowering.
- Returns:
fpass (tvm_tirx.ir.transform.Pass) – The result pass
Examples
import tvm_tirx as tvm from tvm_tirx.script import ir as I, tirx as T from tvm_tirx.tirx import transform as tr @I.ir_module class Before: @T.function(private=True) def main(): T.func_attr({"target": T.target("llvm")}) T.call_packed("callback", 1) @I.ir_module class Expected: @T.function(private=True) def main(): T.func_attr({"target": T.target("llvm")}) stack_ffi_any: T.let[T.Ptr(T.void)] = T.stack_alloca("tvm_ffi_any", 2) T.abi_field_set(stack_ffi_any, 0, 13, 1) T.abi_field_set(stack_ffi_any, 0, 14, 0) T.abi_field_set(stack_ffi_any, 0, 15, T.Cast("int64", 1)) T.abi_field_set(stack_ffi_any, 1, 13, 0) T.abi_field_set(stack_ffi_any, 1, 14, 0) T.abi_field_set(stack_ffi_any, 1, 15, T.int64(0)) T.call_packed_lowered("callback", stack_ffi_any, 0, 1) def run_pass(): return tr.LowerTVMBuiltin()(Before) tvm.ir.assert_structural_equal(run_pass(), Expected)