23 #ifndef TVM_RUNTIME_VM_EXECUTABLE_H_
24 #define TVM_RUNTIME_VM_EXECUTABLE_H_
26 #include <tvm/ffi/extra/module.h>
27 #include <tvm/ffi/function.h>
32 #include <unordered_map>
41 #define VM_VERSION "0.14"
133 static ffi::Module LoadFromBytes(const ffi::Bytes& bytes);
139 void WriteToFile(const ffi::String& file_name, const ffi::String& format) const final;
141 ffi::Module VMLoadExecutable() const;
143 bool HasFunction(const ffi::String& name) const;
149 static ffi::Module LoadFromFile(const ffi::String& file_name);
154 std::unordered_map<std::
string,
Index> func_map;
156 std::vector<ffi::Any> constants;
158 std::unordered_map<
Index, std::
string> memory_scopes;
167 const char*
kind() const final;
173 ffi::Optional<ffi::
Function> GetFunction(const ffi::String& name) override;
180 void SaveGlobalSection(support::Stream* strm) const;
185 void SaveMemoryScopeSection(support::Stream* strm) const;
190 void SaveConstantSection(support::Stream* strm) const;
195 void SaveCodeSection(support::Stream* strm) const;
200 void SavePackedFuncNames(support::Stream* strm) const;
205 void LoadGlobalSection(support::Stream* strm);
210 void LoadMemoryScopeSection(support::Stream* strm);
215 void LoadConstantSection(support::Stream* strm);
220 void LoadCodeSection(support::Stream* strm);
225 void LoadPackedFuncNames(support::Stream* strm);
236 static constexpr
bool enabled =
true;
237 static void Write(
Stream* strm, const ::tvm::runtime::vm::VMFuncInfo& data) { data.Save(strm); }
The bytecode for the virtual machine.
The virtual machine executable emitted by the VM compiler.
Definition: executable.h:89
Instruction GetInstruction(Index i) const
Get the i-th instruction from the executable.
const char * kind() const final
Module type key.
void SetInstructionData(Index i, Index j, ExecWord val)
Set j-th byte data of i-th instruction to val.
ffi::String AsText() const
Print the instructions as text format.
ffi::Bytes SaveToBytes() const final
Write the VMExecutable to the binary stream in serialized form.
ffi::String AsPython() const
Print the instructions as python program.
int GetPropertyMask() const final
Get the property of the runtime module .
Definition: executable.h:92
std::string Stats() const
Print the detailed statistics of the given code, i.e. number of globals and constants,...
Abstract binary stream for serialization.
Definition: io.h:57
Binary stream I/O interface.
ExecWord Index
An alias for the integer type used ubiquitously in the VM.
Definition: bytecode.h:48
int64_t ExecWord
The storage type for the bytecode in the VM.
Definition: bytecode.h:40
An object that builds and maintains block scope and StmtSref mapping for Dependence analysis.
Definition: analyzer.h:37
#define TVM_RUNTIME_DLL
Definition: base.h:88
Serializer<T> specializations for tvm::support::Stream.
A single virtual machine instruction.
Definition: bytecode.h:72
Information entry in executable function table.
Definition: executable.h:53
Index register_file_size
The register file size of the function.
Definition: executable.h:74
Index num_args
The number of arguments of the function.
Definition: executable.h:72
FuncKind kind
The kind of function.
Definition: executable.h:64
std::vector< std::string > param_names
The function parameter names.
Definition: executable.h:76
Index start_instr
The start instruction index of the function.
Definition: executable.h:68
FuncKind
kind of the function.
Definition: executable.h:55
@ kVMTIRFunc
VMTIR function.
@ kPackedFunc
system level packed function
std::string name
The function's name, global symbol.
Definition: executable.h:66
bool Load(support::Stream *reader)
void Save(support::Stream *writer) const
Index end_instr
The end instruction index of the function.
Definition: executable.h:70
static void Write(Stream *strm, const ::tvm::runtime::vm::VMFuncInfo &data)
Definition: executable.h:237
static bool Read(Stream *strm, ::tvm::runtime::vm::VMFuncInfo *data)
Definition: executable.h:238
Primary Serializer template. Specialize for each serializable type.
Definition: io.h:42