[FIRRTL] Reuse XMRRefOps in LowerXMR #8066
Merged
+59
−9
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Change the
LowerXMRpass to reuse previously createdXMRRefOps within a module. This is done for later, easier processing of these operations inLowerToHW. While these operations could be made to be CSE'd (by giving them thePuretrait), it is advantageous to instead not create duplicate operations as this avoids needing to run schedule a mostly useless CSE.This is primarily done to allow for Verilator-compatible lowering of
force_initialandrelease_initialinLowerToHWwhere it would be useful to know when a force and release are referring to the same reference. (Yes, full alias analysis is necessary to do this correctly and relying on the CSE ofLowerXMRis going to be buggy.)