CIRCT
20.0.0git
|
Holds common utilities used for scheduling when lowering to Calyx. More...
#include <CalyxLoweringUtils.h>
Public Member Functions | |
void | addBlockScheduleable (mlir::Block *block, const T &scheduleable) |
Register 'scheduleable' as being generated through lowering 'block'. More... | |
SmallVector< T > | getBlockScheduleables (mlir::Block *block) |
Returns an ordered list of schedulables which registered themselves to be a result of lowering the block in the source program. More... | |
Private Attributes | |
DenseMap< mlir::Block *, SmallVector< T > > | blockScheduleables |
BlockScheduleables is a list of scheduleables that should be sequentially executed when executing the associated basic block. More... | |
Holds common utilities used for scheduling when lowering to Calyx.
Definition at line 197 of file CalyxLoweringUtils.h.
|
inline |
Register 'scheduleable' as being generated through lowering 'block'.
TODO(mortbopet): Add a post-insertion check to ensure that the use-def ordering invariant holds for the groups. When the control schedule is generated, scheduleables within a block are emitted sequentially based on the order that this function was called during conversion.
Currently, we assume this to always be true. Walking the FuncOp IR implies sequential iteration over operations within basic blocks.
Definition at line 208 of file CalyxLoweringUtils.h.
References circt::calyx::SchedulerInterface< T >::blockScheduleables.
|
inline |
Returns an ordered list of schedulables which registered themselves to be a result of lowering the block in the source program.
The list order follows def-use chains between the scheduleables in the block.
In cases of a block resulting in purely combinational logic, no scheduleables registered themselves with the block.
Definition at line 215 of file CalyxLoweringUtils.h.
References circt::calyx::SchedulerInterface< T >::blockScheduleables.
|
private |
BlockScheduleables is a list of scheduleables that should be sequentially executed when executing the associated basic block.
Definition at line 227 of file CalyxLoweringUtils.h.
Referenced by circt::calyx::SchedulerInterface< T >::addBlockScheduleable(), and circt::calyx::SchedulerInterface< T >::getBlockScheduleables().