tvm
Public Member Functions | Static Public Member Functions | List of all members
tvm::tir::StmtSRef Class Reference

Managed reference to StmtSRefNode. More...

#include <block_scope.h>

Inheritance diagram for tvm::tir::StmtSRef:
Collaboration diagram for tvm::tir::StmtSRef:

Public Member Functions

 StmtSRef (const StmtNode *stmt, StmtSRefNode *parent, int64_t seq_index)
 The constructor. More...
 
StmtSRefNodeget () const
 
 TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS (StmtSRef, ObjectRef, StmtSRefNode)
 
- Public Member Functions inherited from tvm::runtime::ObjectRef
 ObjectRef ()=default
 default constructor More...
 
 ObjectRef (ObjectPtr< Object > data)
 Constructor from existing object ptr. More...
 
bool same_as (const ObjectRef &other) const
 Comparator. More...
 
bool operator== (const ObjectRef &other) const
 Comparator. More...
 
bool operator!= (const ObjectRef &other) const
 Comparator. More...
 
bool operator< (const ObjectRef &other) const
 Comparator. More...
 
bool defined () const
 
const Objectget () const
 
const Objectoperator-> () const
 
bool unique () const
 
int use_count () const
 
template<typename ObjectType , typename = std::enable_if_t<std::is_base_of_v<Object, ObjectType>>>
const ObjectType * as () const
 Try to downcast the internal Object to a raw pointer of a corresponding type. More...
 
template<typename ObjectRefType , typename = std::enable_if_t<std::is_base_of_v<ObjectRef, ObjectRefType>>>
Optional< ObjectRefType > as () const
 Try to downcast the ObjectRef to a Optional<T> of the requested type. More...
 

Static Public Member Functions

static StmtSRef InlineMark ()
 
static StmtSRef RootMark ()
 

Additional Inherited Members

- Public Types inherited from tvm::runtime::ObjectRef
using ContainerType = Object
 type indicate the container type. More...
 
- Static Public Attributes inherited from tvm::runtime::ObjectRef
static constexpr bool _type_is_nullable = true
 
- Protected Member Functions inherited from tvm::runtime::ObjectRef
Objectget_mutable () const
 
- Static Protected Member Functions inherited from tvm::runtime::ObjectRef
template<typename T >
static T DowncastNoCheck (ObjectRef ref)
 Internal helper function downcast a ref without check. More...
 
static void FFIClearAfterMove (ObjectRef *ref)
 Clear the object ref data field without DecRef after we successfully moved the field. More...
 
template<typename ObjectType >
static ObjectPtr< ObjectType > GetDataPtr (const ObjectRef &ref)
 Internal helper function get data_ as ObjectPtr of ObjectType. More...
 
- Protected Attributes inherited from tvm::runtime::ObjectRef
ObjectPtr< Objectdata_
 Internal pointer that backs the reference. More...
 

Detailed Description

Managed reference to StmtSRefNode.

See also
StmtSRefNode

Constructor & Destructor Documentation

◆ StmtSRef()

tvm::tir::StmtSRef::StmtSRef ( const StmtNode stmt,
StmtSRefNode parent,
int64_t  seq_index 
)
explicit

The constructor.

Parameters
stmtThe corresponding stmt node, can be either block or for loop.
parentThe parent sref.
seq_indexThe location in an array if the parent of the stmt contains multiple children. -1 if the parent does not contain multiple children.

Member Function Documentation

◆ get()

StmtSRefNode* tvm::tir::StmtSRef::get ( ) const
inline
Returns
The mutable pointer to the StmtSRefNode

◆ InlineMark()

static StmtSRef tvm::tir::StmtSRef::InlineMark ( )
static
Returns
A special StmtSRef, which doesn't point to any stmt in the AST, only serving as a "mark" to hint compute-at to do the work of compute-inline
Note
This is only as a faked loop sref for compute-at and reverse-compute-at, i.e.

compute-at(block, loop_sref): compute-inline(block) if loop_sref.same_as(InlineMark()) no-op if loop_sref.same_as(RootMark()) compute-at-impl(block, loop_sref) otherwise

◆ RootMark()

static StmtSRef tvm::tir::StmtSRef::RootMark ( )
static
Returns
A special StmtSRef, which doesn't point to any stmt in the AST, only serving as a "mark" to hint compute-at to do nothing
Note
This is only as a faked loop sref for compute-at and reverse-compute-at, i.e.

compute-at(block, loop_sref): compute-inline(block) if loop_sref.same_as(InlineMark()) no-op if loop_sref.same_as(RootMark()) compute-at-impl(block, loop_sref) otherwise

◆ TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS()

tvm::tir::StmtSRef::TVM_DEFINE_MUTABLE_OBJECT_REF_METHODS ( StmtSRef  ,
ObjectRef  ,
StmtSRefNode   
)

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