16 #ifndef CIRCT_DIALECT_FIRRTL_FIRRTLFIELDSOURCE_H
17 #define CIRCT_DIALECT_FIRRTL_FIRRTLFIELDSOURCE_H
37 SmallVector<int64_t, 4>
path;
53 if (!
src.getDefiningOp())
56 return isa<WireOp, InstanceOp>(
src.getDefiningOp());
76 DenseMap<Value, PathNode>
paths;
To use this class, retrieve a cached copy from the analysis manager: auto &fieldsource = getAnalysis<...
const PathNode * nodeForValue(Value v) const
void visitSubaccess(SubaccessOp sa)
void visitOpenSubfield(OpenSubfieldOp sf)
void visitOp(Operation *op)
DenseMap< Value, PathNode > paths
void visitInstChoice(InstanceChoiceOp inst)
void visitSubfield(SubfieldOp sf)
FieldSource(Operation *operation)
void visitInst(InstanceOp inst)
void visitOpenSubindex(OpenSubindexOp si)
void makeNodeForValue(Value dst, Value src, ArrayRef< int64_t > path, Flow flow)
void visitSubindex(SubindexOp si)
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
PathNode(Value src, ArrayRef< int64_t > ar, Flow flow)
bool isSrcWritable() const
Writable sources can appear as a LHS of a connect given this node's path.
SmallVector< int64_t, 4 > path
bool isRoot() const
Roots are operations which define the storage or aggregate value.
bool isSrcTransparent() const
Transparent sources reflect a value written to them in the same cycle it is written.