tvm
|
A builder provides api to build VM executable with instructions. More...
#include <exec_builder.h>
Public Member Functions | |
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::Executable * | exec () const |
Raw access to underlying executable build in progress. More... | |
ObjectPtr< vm::Executable > | Get () |
Finalize the build, run formalize and get the final result. More... | |
void | VisitAttrs (AttrVisitor *v) |
TVM_DECLARE_FINAL_OBJECT_INFO (ExecBuilderNode, Object) | |
Public Member Functions inherited from tvm::runtime::Object | |
uint32_t | type_index () const |
std::string | GetTypeKey () const |
size_t | GetTypeKeyHash () const |
template<typename TargetType > | |
bool | IsInstance () const |
bool | unique () const |
Object () | |
Object (const Object &other) | |
Object (Object &&other) | |
Object & | operator= (const Object &other) |
Object & | operator= (Object &&other) |
Static Public Member Functions | |
static ExecBuilder | Create () |
Create an ExecBuilder. More... | |
Static Public Member Functions inherited from tvm::runtime::Object | |
static std::string | TypeIndex2Key (uint32_t tindex) |
Get the type key of the corresponding index from runtime. More... | |
static size_t | TypeIndex2KeyHash (uint32_t tindex) |
Get the type key hash of the corresponding index from runtime. More... | |
static uint32_t | TypeKey2Index (const std::string &key) |
Get the type index of the corresponding key from runtime. More... | |
static uint32_t | _GetOrAllocRuntimeTypeIndex () |
static uint32_t | RuntimeTypeIndex () |
Static Public Attributes | |
static constexpr const uint32_t | _type_index = TypeIndex::kDynamic |
static constexpr const char * | _type_key = "relax.ExecBuilder" |
Static Public Attributes inherited from tvm::runtime::Object | |
static constexpr const char * | _type_key = "runtime.Object" |
static constexpr bool | _type_final = false |
static constexpr uint32_t | _type_child_slots = 0 |
static constexpr bool | _type_child_slots_can_overflow = true |
static constexpr bool | _type_has_method_visit_attrs = true |
static constexpr bool | _type_has_method_sequal_reduce = false |
static constexpr bool | _type_has_method_shash_reduce = false |
static constexpr uint32_t | _type_index = TypeIndex::kDynamic |
Additional Inherited Members | |
Public Types inherited from tvm::runtime::Object | |
typedef void(* | FDeleter) (Object *self) |
Object deleter. More... | |
using | RefCounterType = std::atomic< int32_t > |
Protected Member Functions inherited from tvm::runtime::Object | |
void | IncRef () |
developer function, increases reference counter. More... | |
void | DecRef () |
developer function, decrease reference counter. More... | |
Static Protected Member Functions inherited from tvm::runtime::Object | |
static uint32_t | GetOrAllocRuntimeTypeIndex (const std::string &key, uint32_t static_tindex, uint32_t parent_tindex, uint32_t type_child_slots, bool type_child_slots_can_overflow) |
Get the type index using type key. More... | |
Protected Attributes inherited from tvm::runtime::Object | |
uint32_t | type_index_ {0} |
Type index(tag) that indicates the type of the object. More... | |
RefCounterType | ref_counter_ {0} |
The internal reference counter. More... | |
FDeleter | deleter_ = nullptr |
deleter of this object to enable customized allocation. If the deleter is nullptr, no deletion will be performed. The creator of the object must always set the deleter field properly. More... | |
A builder provides api to build VM executable with instructions.
|
inline |
Convert a constant value something that exec builder can understand.
This function may update the constant pool to include the obj value.
value | The input constant value |
|
static |
Create an ExecBuilder.
void tvm::relax::ExecBuilderNode::DeclareFunction | ( | const std::string & | func, |
vm::VMFuncInfo::FuncKind | kind | ||
) |
Declare a function, it is OK to have multiple declarations.
func | The function name. |
kind | The kind of the function. |
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.
func | The packed function name. |
args | The arguments of the function. |
ret | The return register. |
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.
func | The packed function index. |
args | The arguments of the function. |
ret | The return register. |
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.
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. |
void tvm::relax::ExecBuilderNode::EmitGoto | ( | vm::Index | pc_offset | ) |
Emit a goto instruction.
pc_offset | The program counter offset as the jump offset. |
void tvm::relax::ExecBuilderNode::EmitIf | ( | vm::Instruction::Arg | cond, |
vm::Index | false_offset | ||
) |
Emit an If instruction.
cond | The register containing the cond value. |
false_offset | The program counter offset for the false branch. |
void tvm::relax::ExecBuilderNode::EmitRet | ( | vm::Instruction::Arg | result | ) |
Emit a ret instruction.
result | The return result. |
void tvm::relax::ExecBuilderNode::EndFunction | ( | const std::string & | func | ) |
Annotate the end of a vm function.
func | The function name. |
vm::Executable* tvm::relax::ExecBuilderNode::exec | ( | ) | const |
Raw access to underlying executable build in progress.
ObjectPtr<vm::Executable> tvm::relax::ExecBuilderNode::Get | ( | ) |
Finalize the build, run formalize and get the final result.
vm::Instruction::Arg tvm::relax::ExecBuilderNode::GetFunction | ( | const std::string & | name | ) |
Get function index by its name.
name | The name of the function. |
tvm::relax::ExecBuilderNode::TVM_DECLARE_FINAL_OBJECT_INFO | ( | ExecBuilderNode | , |
Object | |||
) |
|
inline |
|
staticconstexpr |
|
staticconstexpr |