[LLHD] Hoist drives out of processes #8302
Open
+565
−16
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.
Extend the
HoistSignals
pass and hoist drives before halt and wait terminators out of the parent process. All drives that have no side-effecting operations in between them and the block's suspending terminator can be hoisted. If the same signal is driven multiple times in the same block, only the last drive is hoisted.To hoist drives, the pass collects all drives for each driven signal slot and creates new yield operands and process results to carry the drive operands out of the process. Special care is taken to not create unnecessary results for values that are uniform across all drives and available outside the processes.