CIRCT  19.0.0git
Public Member Functions | List of all members
circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs > Class Template Reference

FIRRTLVisitor allows you to visit all of the expr/stmt/decls with one class declaration. More...

#include <FIRRTLVisitors.h>

Inheritance diagram for circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >:
Inheritance graph
[legend]
Collaboration diagram for circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >:
Collaboration graph
[legend]

Public Member Functions

ResultType dispatchVisitor (Operation *op, ExtraArgs... args)
 This is the main entrypoint for the FIRRTLVisitor. More...
 
ResultType visitIntrinsicOp (GenericIntrinsicOp *op, ExtraArgs... args)
 Special handling for generic intrinsic op which aren't quite expressions nor statements in the usual FIRRTL sense. More...
 
ResultType visitInvalidExpr (Operation *op, ExtraArgs... args)
 
ResultType visitInvalidStmt (Operation *op, ExtraArgs... args)
 
ResultType visitInvalidDecl (Operation *op, ExtraArgs... args)
 
ResultType visitUnhandledExpr (Operation *op, ExtraArgs... args)
 
ResultType visitUnhandledStmt (Operation *op, ExtraArgs... args)
 
ResultType visitUnhandledDecl (Operation *op, ExtraArgs... args)
 
ResultType visitInvalidOp (Operation *op, ExtraArgs... args)
 visitInvalidOp is an override point for non-FIRRTL dialect operations. More...
 
ResultType visitUnhandledOp (Operation *op, ExtraArgs... args)
 visitUnhandledOp is an override point for FIRRTL dialect ops that the concrete visitor didn't bother to implement. More...
 
- Public Member Functions inherited from circt::firrtl::ExprVisitor< ConcreteType, void, ExtraArgs... >
void dispatchExprVisitor (Operation *op, ExtraArgs... args)
 
void visitInvalidExpr (Operation *op, ExtraArgs... args)
 This callback is invoked on any non-expression operations. More...
 
void visitUnhandledExpr (Operation *op, ExtraArgs... args)
 This callback is invoked on any expression operations that are not handled by the concrete visitor. More...
 
void visitUnaryExpr (Operation *op, ExtraArgs... args)
 This fallback is invoked on any unary expr that isn't explicitly handled. More...
 
void visitBinaryExpr (Operation *op, ExtraArgs... args)
 This fallback is invoked on any binary expr that isn't explicitly handled. More...
 
 HANDLE (ConstantOp, Unhandled)
 
 HANDLE (SpecialConstantOp, Unhandled)
 
 HANDLE (AggregateConstantOp, Unhandled)
 
 HANDLE (BundleCreateOp, Unhandled)
 
 HANDLE (VectorCreateOp, Unhandled)
 
 HANDLE (FEnumCreateOp, Unhandled)
 
 HANDLE (SubfieldOp, Unhandled)
 
 HANDLE (SubindexOp, Unhandled)
 
 HANDLE (SubaccessOp, Unhandled)
 
 HANDLE (IsTagOp, Unhandled)
 
 HANDLE (SubtagOp, Unhandled)
 
 HANDLE (TagExtractOp, Unhandled)
 
 HANDLE (MultibitMuxOp, Unhandled)
 
 HANDLE (OpenSubfieldOp, Unhandled)
 
 HANDLE (OpenSubindexOp, Unhandled)
 
 HANDLE (ObjectSubfieldOp, Unhandled)
 
 HANDLE (AddPrimOp, Binary)
 
 HANDLE (SubPrimOp, Binary)
 
 HANDLE (MulPrimOp, Binary)
 
 HANDLE (DivPrimOp, Binary)
 
 HANDLE (RemPrimOp, Binary)
 
 HANDLE (AndPrimOp, Binary)
 
 HANDLE (OrPrimOp, Binary)
 
 HANDLE (XorPrimOp, Binary)
 
 HANDLE (LEQPrimOp, Binary)
 
 HANDLE (LTPrimOp, Binary)
 
 HANDLE (GEQPrimOp, Binary)
 
 HANDLE (GTPrimOp, Binary)
 
 HANDLE (EQPrimOp, Binary)
 
 HANDLE (NEQPrimOp, Binary)
 
 HANDLE (CatPrimOp, Binary)
 
 HANDLE (DShlPrimOp, Binary)
 
 HANDLE (DShlwPrimOp, Binary)
 
 HANDLE (DShrPrimOp, Binary)
 
 HANDLE (AsSIntPrimOp, Unary)
 
 HANDLE (AsUIntPrimOp, Unary)
 
 HANDLE (AsAsyncResetPrimOp, Unary)
 
 HANDLE (AsClockPrimOp, Unary)
 
 HANDLE (CvtPrimOp, Unary)
 
 HANDLE (NegPrimOp, Unary)
 
 HANDLE (NotPrimOp, Unary)
 
 HANDLE (AndRPrimOp, Unary)
 
 HANDLE (OrRPrimOp, Unary)
 
 HANDLE (XorRPrimOp, Unary)
 
 HANDLE (ElementwiseOrPrimOp, Unhandled)
 
 HANDLE (ElementwiseAndPrimOp, Unhandled)
 
 HANDLE (ElementwiseXorPrimOp, Unhandled)
 
 HANDLE (IsXIntrinsicOp, Unhandled)
 
 HANDLE (PlusArgsValueIntrinsicOp, Unhandled)
 
 HANDLE (PlusArgsTestIntrinsicOp, Unhandled)
 
 HANDLE (SizeOfIntrinsicOp, Unhandled)
 
 HANDLE (ClockGateIntrinsicOp, Unhandled)
 
 HANDLE (ClockInverterIntrinsicOp, Unhandled)
 
 HANDLE (ClockDividerIntrinsicOp, Unhandled)
 
 HANDLE (LTLAndIntrinsicOp, Unhandled)
 
 HANDLE (LTLOrIntrinsicOp, Unhandled)
 
 HANDLE (LTLDelayIntrinsicOp, Unhandled)
 
 HANDLE (LTLConcatIntrinsicOp, Unhandled)
 
 HANDLE (LTLNotIntrinsicOp, Unhandled)
 
 HANDLE (LTLImplicationIntrinsicOp, Unhandled)
 
 HANDLE (LTLEventuallyIntrinsicOp, Unhandled)
 
 HANDLE (LTLClockIntrinsicOp, Unhandled)
 
 HANDLE (LTLDisableIntrinsicOp, Unhandled)
 
 HANDLE (Mux4CellIntrinsicOp, Unhandled)
 
 HANDLE (Mux2CellIntrinsicOp, Unhandled)
 
 HANDLE (HasBeenResetIntrinsicOp, Unhandled)
 
 HANDLE (BitsPrimOp, Unhandled)
 
 HANDLE (HeadPrimOp, Unhandled)
 
 HANDLE (InvalidValueOp, Unhandled)
 
 HANDLE (MuxPrimOp, Unhandled)
 
 HANDLE (PadPrimOp, Unhandled)
 
 HANDLE (ShlPrimOp, Unhandled)
 
 HANDLE (ShrPrimOp, Unhandled)
 
 HANDLE (TailPrimOp, Unhandled)
 
 HANDLE (VerbatimExprOp, Unhandled)
 
 HANDLE (RefSendOp, Unhandled)
 
 HANDLE (RefResolveOp, Unhandled)
 
 HANDLE (RefSubOp, Unhandled)
 
 HANDLE (RWProbeOp, Unhandled)
 
 HANDLE (XMRRefOp, Unhandled)
 
 HANDLE (XMRDerefOp, Unhandled)
 
 HANDLE (HWStructCastOp, Unhandled)
 
 HANDLE (UninferredResetCastOp, Unhandled)
 
 HANDLE (ConstCastOp, Unhandled)
 
 HANDLE (BitCastOp, Unhandled)
 
 HANDLE (RefCastOp, Unhandled)
 
 HANDLE (StringConstantOp, Unhandled)
 
 HANDLE (FIntegerConstantOp, Unhandled)
 
 HANDLE (BoolConstantOp, Unhandled)
 
 HANDLE (DoubleConstantOp, Unhandled)
 
 HANDLE (ListCreateOp, Unhandled)
 
 HANDLE (PathOp, Unhandled)
 
 HANDLE (UnresolvedPathOp, Unhandled)
 
- Public Member Functions inherited from circt::firrtl::StmtVisitor< ConcreteType, void, ExtraArgs... >
void dispatchStmtVisitor (Operation *op, ExtraArgs... args)
 
void visitInvalidStmt (Operation *op, ExtraArgs... args)
 This callback is invoked on any non-Stmt operations. More...
 
void visitUnhandledStmt (Operation *op, ExtraArgs... args)
 This callback is invoked on any Stmt operations that are not handled by the concrete visitor. More...
 
 HANDLE (AttachOp)
 
 HANDLE (ConnectOp)
 
 HANDLE (StrictConnectOp)
 
 HANDLE (RefDefineOp)
 
 HANDLE (ForceOp)
 
 HANDLE (PrintFOp)
 
 HANDLE (SkipOp)
 
 HANDLE (StopOp)
 
 HANDLE (WhenOp)
 
 HANDLE (AssertOp)
 
 HANDLE (AssumeOp)
 
 HANDLE (CoverOp)
 
 HANDLE (PropAssignOp)
 
 HANDLE (RefForceOp)
 
 HANDLE (RefForceInitialOp)
 
 HANDLE (RefReleaseOp)
 
 HANDLE (RefReleaseInitialOp)
 
 HANDLE (FPGAProbeIntrinsicOp)
 
 HANDLE (VerifAssertIntrinsicOp)
 
 HANDLE (VerifAssumeIntrinsicOp)
 
 HANDLE (VerifCoverIntrinsicOp)
 
 HANDLE (UnclockedAssumeIntrinsicOp)
 
 HANDLE (LayerBlockOp)
 
- Public Member Functions inherited from circt::firrtl::DeclVisitor< ConcreteType, void, ExtraArgs... >
void dispatchDeclVisitor (Operation *op, ExtraArgs... args)
 
void visitInvalidDecl (Operation *op, ExtraArgs... args)
 This callback is invoked on any non-Decl operations. More...
 
void visitUnhandledDecl (Operation *op, ExtraArgs... args)
 This callback is invoked on any Decl operations that are not handled by the concrete visitor. More...
 
 HANDLE (InstanceOp)
 
 HANDLE (ObjectOp)
 
 HANDLE (MemOp)
 
 HANDLE (NodeOp)
 
 HANDLE (RegOp)
 
 HANDLE (RegResetOp)
 
 HANDLE (WireOp)
 
 HANDLE (VerbatimWireOp)
 

Detailed Description

template<typename ConcreteType, typename ResultType = void, typename... ExtraArgs>
class circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >

FIRRTLVisitor allows you to visit all of the expr/stmt/decls with one class declaration.

Clients call dispatchVisitor to invoke the dispatch, and may implement visitInvalidOp() to get notified about non-FIRRTL dialect nodes and visitUnhandledOp() to get notified about FIRRTL dialect ops that are not handled specifically.

Definition at line 339 of file FIRRTLVisitors.h.

Member Function Documentation

◆ dispatchVisitor()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::dispatchVisitor ( Operation *  op,
ExtraArgs...  args 
)
inline

This is the main entrypoint for the FIRRTLVisitor.

Definition at line 345 of file FIRRTLVisitors.h.

References circt::firrtl::ExprVisitor< ConcreteType, void, ExtraArgs... >::dispatchExprVisitor().

◆ visitIntrinsicOp()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitIntrinsicOp ( GenericIntrinsicOp *  op,
ExtraArgs...  args 
)
inline

Special handling for generic intrinsic op which aren't quite expressions nor statements in the usual FIRRTL sense.

Refactor into specific visitor instead of adding more here.

Definition at line 352 of file FIRRTLVisitors.h.

References circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitUnhandledOp().

◆ visitInvalidDecl()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitInvalidDecl ( Operation *  op,
ExtraArgs...  args 
)
inline

◆ visitInvalidExpr()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitInvalidExpr ( Operation *  op,
ExtraArgs...  args 
)
inline

◆ visitInvalidOp()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitInvalidOp ( Operation *  op,
ExtraArgs...  args 
)
inline

visitInvalidOp is an override point for non-FIRRTL dialect operations.

Definition at line 379 of file FIRRTLVisitors.h.

Referenced by circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitInvalidDecl().

◆ visitInvalidStmt()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitInvalidStmt ( Operation *  op,
ExtraArgs...  args 
)
inline

◆ visitUnhandledDecl()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitUnhandledDecl ( Operation *  op,
ExtraArgs...  args 
)
inline

◆ visitUnhandledExpr()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitUnhandledExpr ( Operation *  op,
ExtraArgs...  args 
)
inline

◆ visitUnhandledOp()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitUnhandledOp ( Operation *  op,
ExtraArgs...  args 
)
inline

◆ visitUnhandledStmt()

template<typename ConcreteType , typename ResultType = void, typename... ExtraArgs>
ResultType circt::firrtl::FIRRTLVisitor< ConcreteType, ResultType, ExtraArgs >::visitUnhandledStmt ( Operation *  op,
ExtraArgs...  args 
)
inline

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