tvm
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
tvm::script::printer::IRDocsifierNode Class Reference

IRDocsifier is the top-level interface in the IR->Doc process. More...

#include <ir_docsifier.h>

Inheritance diagram for tvm::script::printer::IRDocsifierNode:
Collaboration diagram for tvm::script::printer::IRDocsifierNode:

Classes

struct  VariableInfo
 Information about a variable, including its optional name and its doc creator. More...
 

Public Types

using DocCreator = std::function< ExprDoc()>
 A function that creates the doc for a variable. More...
 
- Public Types inherited from tvm::runtime::Object
typedef void(* FDeleter) (Object *self)
 Object deleter. More...
 
using RefCounterType = std::atomic< int32_t >
 

Public Member Functions

void VisitAttrs (tvm::AttrVisitor *v)
 
 TVM_DECLARE_FINAL_OBJECT_INFO (IRDocsifierNode, Object)
 
IdDoc Define (const ObjectRef &obj, const Frame &frame, const String &name_hint)
 Define variable by name. More...
 
void Define (const ObjectRef &obj, const Frame &frame, DocCreator doc_factory)
 Define variable by doc factory. More...
 
Optional< ExprDocGetVarDoc (const ObjectRef &obj) const
 Get the doc for variable. More...
 
ExprDoc AddMetadata (const ObjectRef &obj)
 Add a TVM object to the metadata section. More...
 
void AddGlobalInfo (const String &name, const GlobalInfo &ginfo)
 Add a GlobalInfo to the global_infos map. More...
 
bool IsVarDefined (const ObjectRef &obj) const
 Check if a variable exists in the table. More...
 
void RemoveVar (const ObjectRef &obj)
 Remove the variable defined. More...
 
void SetCommonPrefix (const ObjectRef &root, runtime::TypedPackedFunc< bool(ObjectRef)> is_var)
 Set the common prefix information of variable usage. More...
 
template<class TDoc = Doc>
TDoc AsDoc (const ObjectRef &obj, const ObjectPath &path) const
 Transform the input object into TDoc. More...
 
- 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)
 
Objectoperator= (const Object &other)
 
Objectoperator= (Object &&other)
 

Public Attributes

PrinterConfig cfg {nullptr}
 The configuration of the printer. More...
 
Array< Frameframes
 The stack of frames. More...
 
Array< Stringdispatch_tokens
 The stack of dispatch tokens. More...
 
std::unordered_map< ObjectRef, VariableInfo, ObjectPtrHash, ObjectPtrEqualobj2info
 Mapping from a var to its info. More...
 
std::unordered_map< String, Array< ObjectRef > > metadata
 Metadata printing. More...
 
std::unordered_map< String, Array< GlobalInfo > > global_infos
 GlobalInfo printing. More...
 
std::unordered_set< Stringdefined_names
 The variable names used already. More...
 
std::unordered_map< const Object *, std::vector< const Object * > > common_prefix
 Common prefixes of variable usages. More...
 
std::unordered_set< std::string > ir_usage
 The IR usages for headers printing. More...
 

Static Public Attributes

static constexpr const char * _type_key = "script.printer.IRDocsifier"
 
- 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

- 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 ()
 
- 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...
 

Detailed Description

IRDocsifier is the top-level interface in the IR->Doc process.

It provides methods to convert IR node object to Doc, operate on Frame objects and change dispatch tokens.

Member Typedef Documentation

◆ DocCreator

A function that creates the doc for a variable.

Member Function Documentation

◆ AddGlobalInfo()

void tvm::script::printer::IRDocsifierNode::AddGlobalInfo ( const String name,
const GlobalInfo ginfo 
)

Add a GlobalInfo to the global_infos map.

Parameters
nameThe name of key of global_infos.
ginfoThe GlobalInfo to be added.

◆ AddMetadata()

ExprDoc tvm::script::printer::IRDocsifierNode::AddMetadata ( const ObjectRef obj)

Add a TVM object to the metadata section.

◆ AsDoc()

template<class TDoc >
TDoc tvm::script::printer::IRDocsifierNode::AsDoc ( const ObjectRef obj,
const ObjectPath path 
) const
inline

Transform the input object into TDoc.

Parameters
objThe object to be transformed.
pathThe path to this object.
Returns
The Doc object.

◆ Define() [1/2]

IdDoc tvm::script::printer::IRDocsifierNode::Define ( const ObjectRef obj,
const Frame frame,
const String name_hint 
)

Define variable by name.

Parameters
objThe variable object.
frameThe frame that this variable is defined in.
name_hintThe hint for variable name.
Returns
The id doc for this variable.

This function will rename the variable to avoid name conflict with other variables in the table.

◆ Define() [2/2]

void tvm::script::printer::IRDocsifierNode::Define ( const ObjectRef obj,
const Frame frame,
DocCreator  doc_factory 
)

Define variable by doc factory.

Parameters
objThe variable object.
frameThe frame that this variable is defined in.
doc_factoryThe function to return an ExprDoc object for this variable.

This function is a special form of Define. Variable is mapped to ExprDoc rather than IdDoc. It's useful when a variable is implicitly defined without a name, like the buf->data in TIR, which should be mapped to AttrDoc(IdDoc("<buffer_name>"), "data").

This function takes a DocFactory instead of Doc. It's because GetVarDoc needs to return a new Doc object every time it's called, as the returned doc will have different source_path. Currently there isn't a good way to deep copy a TVMObject so VarTable needs to call a factory function to get a freshly-constructed Doc object every time GetVarDoc is called.

◆ GetVarDoc()

Optional<ExprDoc> tvm::script::printer::IRDocsifierNode::GetVarDoc ( const ObjectRef obj) const

Get the doc for variable.

Parameters
objThe variable object.
Returns
The doc for variable, if it exists in the table. Otherwise it returns NullOpt.

◆ IsVarDefined()

bool tvm::script::printer::IRDocsifierNode::IsVarDefined ( const ObjectRef obj) const

Check if a variable exists in the table.

Parameters
objThe variable object.
Returns
a boolean for whether variable exists.

◆ RemoveVar()

void tvm::script::printer::IRDocsifierNode::RemoveVar ( const ObjectRef obj)

Remove the variable defined.

◆ SetCommonPrefix()

void tvm::script::printer::IRDocsifierNode::SetCommonPrefix ( const ObjectRef root,
runtime::TypedPackedFunc< bool(ObjectRef)>  is_var 
)

Set the common prefix information of variable usage.

Parameters
rootThe root of the AST.
is_varA function that returns true if the given object is considered a variable.

◆ TVM_DECLARE_FINAL_OBJECT_INFO()

tvm::script::printer::IRDocsifierNode::TVM_DECLARE_FINAL_OBJECT_INFO ( IRDocsifierNode  ,
Object   
)

◆ VisitAttrs()

void tvm::script::printer::IRDocsifierNode::VisitAttrs ( tvm::AttrVisitor v)
inline

Member Data Documentation

◆ _type_key

constexpr const char* tvm::script::printer::IRDocsifierNode::_type_key = "script.printer.IRDocsifier"
staticconstexpr

◆ cfg

PrinterConfig tvm::script::printer::IRDocsifierNode::cfg {nullptr}

The configuration of the printer.

◆ common_prefix

std::unordered_map<const Object*, std::vector<const Object*> > tvm::script::printer::IRDocsifierNode::common_prefix

Common prefixes of variable usages.

◆ defined_names

std::unordered_set<String> tvm::script::printer::IRDocsifierNode::defined_names

The variable names used already.

◆ dispatch_tokens

Array<String> tvm::script::printer::IRDocsifierNode::dispatch_tokens

The stack of dispatch tokens.

The dispatch token on the top decides which dispatch function to use when converting IR node object to Doc.

◆ frames

Array<Frame> tvm::script::printer::IRDocsifierNode::frames

The stack of frames.

See also
FrameNode

◆ global_infos

std::unordered_map<String, Array<GlobalInfo> > tvm::script::printer::IRDocsifierNode::global_infos

GlobalInfo printing.

◆ ir_usage

std::unordered_set<std::string> tvm::script::printer::IRDocsifierNode::ir_usage

The IR usages for headers printing.

◆ metadata

std::unordered_map<String, Array<ObjectRef> > tvm::script::printer::IRDocsifierNode::metadata

Metadata printing.

◆ obj2info

std::unordered_map<ObjectRef, VariableInfo, ObjectPtrHash, ObjectPtrEqual> tvm::script::printer::IRDocsifierNode::obj2info

Mapping from a var to its info.


The documentation for this class was generated from the following file: