tvm
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Static Protected Member Functions | List of all members
tvm::ExprVisitor Class Reference

Structural Expr visitor with native overrides for core expressions. More...

#include <expr_functor.h>

Inheritance diagram for tvm::ExprVisitor:
Collaboration diagram for tvm::ExprVisitor:

Public Member Functions

virtual ffi::Optional< VisitInterrupt > Visit_ (const OpaqueExprNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const TupleNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const TupleGetItemNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const TensorLoadNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const TensorRegionNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const VarNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const GlobalVarNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const CallNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const GenericConstNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const DataTypeImmNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const IntImmNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const FloatImmNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const OpNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const StringImmNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::CastNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::AddNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::LShiftNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::RShiftNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::BitwiseAndNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::BitwiseOrNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::BitwiseXorNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::BitwiseNotNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::SubNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::MulNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::DivNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::ModNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::FloorDivNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::FloorModNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::MinNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::MaxNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::EQNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::NENode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::LTNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::LENode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::GTNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::GENode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::AndNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::OrNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::NotNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::SelectNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::LetNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::RampNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::BroadcastNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit_ (const prim::ShuffleNode *node)
 
virtual ffi::Optional< VisitInterrupt > Visit (ffi::AnyView value)
 Construct a visitor with the core expression hooks.
 
- Public Member Functions inherited from tvm::ObjectVisitor
 ObjectVisitor ()
 Construct a visitor using structural fallback for every value.
 
 ObjectVisitor (const ObjectVisitor &other)=delete
 
ObjectVisitor & operator= (const ObjectVisitor &other)=delete
 
Expected< ffi::Optional< VisitInterrupt > > VisitExpected (ffi::AnyView value) noexcept
 Adapt the virtual throwing entrypoint to the structural ABI.
 

Protected Member Functions

 ExprVisitor (const VTable *vtable)
 Construct a visitor with an extended native dispatch table.
 
- Protected Member Functions inherited from tvm::ObjectVisitor
 ObjectVisitor (const VTable *vtable)
 Construct a visitor with a finalized native dispatch table.
 

Static Protected Member Functions

static void InitVTable (VTable *vtable)
 Register core expression hooks in a fresh mutable table.
 
- Static Protected Member Functions inherited from tvm::ObjectVisitor
static void InitVTable (VTable *vtable)
 Initialize the base registrations in a fresh mutable table.
 
template<typename Self , typename Node >
static void SetDispatch (VTable *vtable)
 Register an exact node type in a fresh table initialized by its parent. Derived node types require separate registrations.
 

Additional Inherited Members

- Protected Types inherited from tvm::ObjectVisitor
using VTable = ObjectFunctor< ffi::Optional< VisitInterrupt >(const ffi::Object *, ObjectVisitor *)>
 Exact native dispatch table with owning interrupt results.
 

Detailed Description

Structural Expr visitor with native overrides for core expressions.

Prefer StructuralVisit or StructuralWalk for common cases; use ExprVisitor for extensive per-kind customization or optimization. Default hooks follow the registered structural child order and skip primitive metadata. Native hooks match exact node types; derived node types use structural fallback unless separately registered in a fresh inherited table with SetDispatch. Existing hooks only require overriding. For an extra MyExprNode derived from ExprNode, initialize an inherited table and register the new virtual hook:

class MyExprVisitor : public ExprVisitor {
public:
using ExprVisitor::Visit_;
virtual ffi::Optional<VisitInterrupt> Visit_(const MyExprNode* node);
protected:
static void InitVTable(VTable* vtable) {
ExprVisitor::InitVTable(vtable);
SetDispatch<MyExprVisitor, MyExprNode>(vtable);
}
};
Structural Expr visitor with native overrides for core expressions.
Definition expr_functor.h:336
A dynamically dispatched functor on the type of the first argument.
Definition object_functor.h:85
#define TVM_DEFINE_OBJECT_FUNCTOR_DEFAULT_CONSTRUCTOR(Class, Parent)
Define a default constructor backed by one initialized native dispatch table.
Definition object_functor.h:529

Use tvm::ExprVisitor explicitly when dialect visitors are also in scope.

Constructor & Destructor Documentation

◆ ExprVisitor()

tvm::ExprVisitor::ExprVisitor ( const VTable *  vtable)
inlineexplicitprotected

Construct a visitor with an extended native dispatch table.

Parameters
vtableThe finalized table, which must outlive this visitor.

Member Function Documentation

◆ InitVTable()

static void tvm::ExprVisitor::InitVTable ( VTable *  vtable)
staticprotected

Register core expression hooks in a fresh mutable table.

Parameters
vtableThe table to initialize before adding derived registrations.

◆ Visit()

virtual ffi::Optional< VisitInterrupt > tvm::ObjectVisitor::Visit ( ffi::AnyView  value)
inlinevirtual

Construct a visitor with the core expression hooks.

Reimplemented from tvm::ObjectVisitor.

Reimplemented in tvm::tirx::SRefTreeCreator.

◆ Visit_() [1/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const CallNode *  node)
virtual

◆ Visit_() [2/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const DataTypeImmNode *  node)
virtual

◆ Visit_() [3/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const FloatImmNode *  node)
virtual

◆ Visit_() [4/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const GenericConstNode *  node)
virtual

◆ Visit_() [5/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const GlobalVarNode *  node)
virtual

◆ Visit_() [6/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const IntImmNode *  node)
virtual

◆ Visit_() [7/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const OpaqueExprNode *  node)
virtual

◆ Visit_() [8/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const OpNode *  node)
virtual

◆ Visit_() [9/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::AddNode *  node)
virtual

◆ Visit_() [10/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::AndNode *  node)
virtual

◆ Visit_() [11/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::BitwiseAndNode *  node)
virtual

◆ Visit_() [12/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::BitwiseNotNode *  node)
virtual

◆ Visit_() [13/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::BitwiseOrNode *  node)
virtual

◆ Visit_() [14/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::BitwiseXorNode *  node)
virtual

◆ Visit_() [15/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::BroadcastNode *  node)
virtual

◆ Visit_() [16/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::CastNode *  node)
virtual

◆ Visit_() [17/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::DivNode *  node)
virtual

◆ Visit_() [18/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::EQNode *  node)
virtual

◆ Visit_() [19/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::FloorDivNode *  node)
virtual

◆ Visit_() [20/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::FloorModNode *  node)
virtual

◆ Visit_() [21/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::GENode *  node)
virtual

◆ Visit_() [22/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::GTNode *  node)
virtual

◆ Visit_() [23/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::LENode *  node)
virtual

◆ Visit_() [24/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::LetNode *  node)
virtual

◆ Visit_() [25/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::LShiftNode *  node)
virtual

◆ Visit_() [26/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::LTNode *  node)
virtual

◆ Visit_() [27/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::MaxNode *  node)
virtual

◆ Visit_() [28/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::MinNode *  node)
virtual

◆ Visit_() [29/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::ModNode *  node)
virtual

◆ Visit_() [30/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::MulNode *  node)
virtual

◆ Visit_() [31/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::NENode *  node)
virtual

◆ Visit_() [32/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::NotNode *  node)
virtual

◆ Visit_() [33/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::OrNode *  node)
virtual

◆ Visit_() [34/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::RampNode *  node)
virtual

◆ Visit_() [35/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::RShiftNode *  node)
virtual

◆ Visit_() [36/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::SelectNode *  node)
virtual

◆ Visit_() [37/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::ShuffleNode *  node)
virtual

◆ Visit_() [38/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const prim::SubNode *  node)
virtual

◆ Visit_() [39/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const StringImmNode *  node)
virtual

◆ Visit_() [40/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const TensorLoadNode *  node)
virtual

◆ Visit_() [41/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const TensorRegionNode *  node)
virtual

◆ Visit_() [42/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const TupleGetItemNode *  node)
virtual

◆ Visit_() [43/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const TupleNode *  node)
virtual

◆ Visit_() [44/44]

virtual ffi::Optional< VisitInterrupt > tvm::ExprVisitor::Visit_ ( const VarNode *  node)
virtual

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