Class StmtExprVisitor#

Inheritance Relationships#

Base Type#

Class Documentation#

class StmtExprVisitor : public tvm::ExprVisitor#

Native visitor for TIRx statements and their expression operands.

Inherits core expression dispatch and preserves TIRx traversal order and tensor definition/use boundaries. Allocate visitors with ffi::make_object; hooks return the first interrupt or throw on failure. To preserve thrown ffi::Error subclasses, keep child traversal native: Visit(array) crosses structural callbacks that may erase the C++ subtype.

Native hooks match exact types. Unregistered OpaqueExprObj subclasses use structural traversal; leaf types register non-descending structural hooks.

Public Functions

inline StmtExprVisitor()#
virtual ffi::Optional<VisitInterrupt> Visit_(const BindObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const RegionStmtObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const IfObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const ForObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const WhileObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const ReturnObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const BreakObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const ContinueObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const TensorStoreObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const AssertStmtObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const SeqStmtObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const EvaluateObj *op)#
virtual ffi::Optional<VisitInterrupt> Visit_(const VarObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const TensorLoadObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const OpaqueExprObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const TupleObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const TupleGetItemObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const CallObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::LetObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::RampObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::BroadcastObj *op) override#
virtual ffi::Optional<VisitInterrupt> Visit_(const prim::ShuffleObj *op) override#
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.

virtual ffi::Optional<VisitInterrupt> Visit_(const TensorRegionObj *node)#
virtual ffi::Optional<VisitInterrupt> Visit_(const GlobalVarObj *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)#

Protected Functions

inline explicit StmtExprVisitor(const VTable *vtable)#

Protected Static Functions

static void InitVTable(VTable *vtable)#