A builder provides api to build VM executable with instructions.
More...
#include <exec_builder.h>
|
void | DeclareFunction (const std::string &func, vm::VMFuncInfo::FuncKind kind) |
| Declare a function, it is OK to have multiple declarations. More...
|
|
void | EmitFunction (const std::string &func, int64_t num_inputs, Optional< Array< String >> param_names, vm::VMFuncInfo::FuncKind kind=vm::VMFuncInfo::FuncKind::kVMFunc, int64_t init_register_size=0) |
| To annotate the start of a vm function. More...
|
|
void | EndFunction (const std::string &func) |
| Annotate the end of a vm function. More...
|
|
void | EmitCall (const std::string &func, std::vector< vm::Instruction::Arg > args, vm::RegName ret) |
| Emit a call instruction for a packed function. More...
|
|
void | EmitCall (vm::Instruction::Arg func, std::vector< vm::Instruction::Arg > args, vm::RegName ret) |
| Emit a call instruction with func as argument. More...
|
|
void | EmitRet (vm::Instruction::Arg result) |
| Emit a ret instruction. More...
|
|
void | EmitGoto (vm::Index pc_offset) |
| Emit a goto instruction. More...
|
|
void | EmitIf (vm::Instruction::Arg cond, vm::Index false_offset) |
| Emit an If instruction. More...
|
|
vm::Instruction::Arg | GetFunction (const std::string &name) |
| Get function index by its name. More...
|
|
template<typename T > |
vm::Instruction::Arg | ConvertConstant (T value) |
| Convert a constant value something that exec builder can understand. More...
|
|
vm::VMExecutable * | exec () const |
| Raw access to underlying executable build in progress. More...
|
|
ObjectPtr< vm::VMExecutable > | Get () |
| Finalize the build, run formalize and get the final result. More...
|
|
| TVM_DECLARE_FINAL_OBJECT_INFO (ExecBuilderNode, Object) |
|
|
static constexpr const char * | _type_key = "relax.ExecBuilder" |
|
A builder provides api to build VM executable with instructions.
◆ ConvertConstant()
template<typename T >
vm::Instruction::Arg tvm::relax::ExecBuilderNode::ConvertConstant |
( |
T |
value | ) |
|
|
inline |
Convert a constant value something that exec builder can understand.
This function may update the constant pool to include the obj value.
- Parameters
-
value | The input constant value |
- Returns
- An Arg that represents the result of constant argument.
◆ Create()
static ExecBuilder tvm::relax::ExecBuilderNode::Create |
( |
| ) |
|
|
static |
◆ DeclareFunction()
Declare a function, it is OK to have multiple declarations.
- Parameters
-
func | The function name. |
kind | The kind of the function. |
◆ EmitCall() [1/2]
void tvm::relax::ExecBuilderNode::EmitCall |
( |
const std::string & |
func, |
|
|
std::vector< vm::Instruction::Arg > |
args, |
|
|
vm::RegName |
ret |
|
) |
| |
Emit a call instruction for a packed function.
- Parameters
-
func | The packed function name. |
args | The arguments of the function. |
ret | The return register. |
◆ EmitCall() [2/2]
void tvm::relax::ExecBuilderNode::EmitCall |
( |
vm::Instruction::Arg |
func, |
|
|
std::vector< vm::Instruction::Arg > |
args, |
|
|
vm::RegName |
ret |
|
) |
| |
Emit a call instruction with func as argument.
- Parameters
-
func | The packed function index. |
args | The arguments of the function. |
ret | The return register. |
◆ EmitFunction()
void tvm::relax::ExecBuilderNode::EmitFunction |
( |
const std::string & |
func, |
|
|
int64_t |
num_inputs, |
|
|
Optional< Array< String >> |
param_names, |
|
|
vm::VMFuncInfo::FuncKind |
kind = vm::VMFuncInfo::FuncKind::kVMFunc , |
|
|
int64_t |
init_register_size = 0 |
|
) |
| |
To annotate the start of a vm function.
- Parameters
-
func | The function name. |
num_inputs | The number of inputs. |
param_names | The function parameter names. |
kind | The kind of the function. |
init_register_size | Initial setting of register file size. |
◆ EmitGoto()
void tvm::relax::ExecBuilderNode::EmitGoto |
( |
vm::Index |
pc_offset | ) |
|
Emit a goto instruction.
- Parameters
-
pc_offset | The program counter offset as the jump offset. |
◆ EmitIf()
void tvm::relax::ExecBuilderNode::EmitIf |
( |
vm::Instruction::Arg |
cond, |
|
|
vm::Index |
false_offset |
|
) |
| |
Emit an If instruction.
- Parameters
-
cond | The register containing the cond value. |
false_offset | The program counter offset for the false branch. |
- Note
- result must be a register.
◆ EmitRet()
void tvm::relax::ExecBuilderNode::EmitRet |
( |
vm::Instruction::Arg |
result | ) |
|
Emit a ret instruction.
- Parameters
-
- Note
- result must be a register.
◆ EndFunction()
void tvm::relax::ExecBuilderNode::EndFunction |
( |
const std::string & |
func | ) |
|
Annotate the end of a vm function.
- Parameters
-
◆ exec()
Raw access to underlying executable build in progress.
◆ Get()
Finalize the build, run formalize and get the final result.
- Note
- This function should not be called during construction.
◆ GetFunction()
vm::Instruction::Arg tvm::relax::ExecBuilderNode::GetFunction |
( |
const std::string & |
name | ) |
|
Get function index by its name.
- Parameters
-
name | The name of the function. |
- Returns
- The argument corresponding to the function index.
◆ RegisterReflection()
static void tvm::relax::ExecBuilderNode::RegisterReflection |
( |
| ) |
|
|
inlinestatic |
◆ TVM_DECLARE_FINAL_OBJECT_INFO()
tvm::relax::ExecBuilderNode::TVM_DECLARE_FINAL_OBJECT_INFO |
( |
ExecBuilderNode |
, |
|
|
Object |
|
|
) |
| |
◆ _type_key
constexpr const char* tvm::relax::ExecBuilderNode::_type_key = "relax.ExecBuilder" |
|
staticconstexpr |
The documentation for this class was generated from the following file: