circt
circt copied to clipboard
[FIRRTL][RefType] Lower RefType in LowerTypes
This PR lowers the RefType of aggregate values, to the RefType of the individual elements.
A new RefSubOp is added to handle the lowering and access individual elements of the RefType.
A ref.send and ref.resolve of aggregate type is lowered to the ref.send/ref.resolve of the individual aggregate elements.
The RefSubOp is in general used temporarily in LowerTypes and then replaced by the corresponding definitions.
Only a debug port from a MemOp can introduce RefSendOp in the IR. Because the debug port output from the MemOp will not be lowered, but all its users will be lowered.