Class ExprVisitor#
Defined in File expr_functor.h
Inheritance Relationships#
Base Type#
public tvm::ObjectVisitor(Class ObjectVisitor)
Derived Type#
public tvm::tirx::StmtExprVisitor(Class StmtExprVisitor)
Class Documentation#
-
class ExprVisitor : public tvm::ObjectVisitor#
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 MyExprObj derived from ExprObj, initialize an inherited table and register the new virtual hook:
Use tvm::ExprVisitor explicitly when dialect visitors are also in scope.class MyExprVisitor : public ExprVisitor { public: TVM_DEFINE_OBJECT_FUNCTOR_DEFAULT_CONSTRUCTOR(MyExprVisitor, ExprVisitor) using ExprVisitor::Visit_; virtual ffi::Optional<VisitInterrupt> Visit_(const MyExprObj* node); protected: static void InitVTable(VTable* vtable) { ExprVisitor::InitVTable(vtable); SetDispatch<MyExprVisitor, MyExprObj>(vtable); } };
Subclassed by tvm::tirx::StmtExprVisitor
Public Functions
-
inline ExprVisitor()#
Construct a visitor with the core expression hooks.
-
virtual ffi::Optional<VisitInterrupt> Visit_(const OpaqueExprObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const TupleObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const TupleGetItemObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const TensorLoadObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const TensorRegionObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const VarObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const GlobalVarObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const CallObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const GenericConstObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const DataTypeImmObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const IntImmObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const FloatImmObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const OpObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const StringImmObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::CastObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::AddObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::LShiftObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::RShiftObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::BitwiseAndObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::BitwiseOrObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::BitwiseXorObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::BitwiseNotObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::SubObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::MulObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::DivObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::ModObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::FloorDivObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::FloorModObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::MinObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::MaxObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::EQObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::NEObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::LTObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::LEObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::GTObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::GEObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::AndObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::OrObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::NotObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::SelectObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::LetObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::RampObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::BroadcastObj *node)#
-
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::ShuffleObj *node)#
-
inline virtual ffi::Optional<VisitInterrupt> Visit(ffi::AnyView value)#
Visit a borrowed object or inline value, throwing on failure.
Note
A qualified Parent::Visit bypasses this entry override only; recursive child visits still use virtual dispatch.
- Parameters:
value – The borrowed value to visit.
- Returns:
None on completion or an owning interrupt that halts traversal.
Protected Functions
-
inline explicit ExprVisitor(const VTable *vtable)#
Construct a visitor with an extended native dispatch table.
- Parameters:
vtable – The finalized table, which must outlive this visitor.
Protected Static Functions
-
static void InitVTable(VTable *vtable)#
Register core expression hooks in a fresh mutable table.
- Parameters:
vtable – The table to initialize before adding derived registrations.
-
inline ExprVisitor()#