|
Jlm
|
#include <hls.hpp>


Static Public Member Functions | |
| static std::vector< jlm::rvsdg::Output * > | create (size_t nalternatives, jlm::rvsdg::Output &value, bool isConstant=false) |
| static rvsdg::Node & | CreateNode (const size_t numResults, rvsdg::Output &operand, const bool isConstant=false) |
Private Attributes | |
| bool | IsConstant_ = false |
Forks ensures 1-to-1 connections between producers and consumers, i.e., they handle fanout of signals. Normal forks have a register inside to ensure that a token consumed on one output is not repeated. The fork only creates an acknowledge on its single input once all outputs have been consumed.
CFORK (constant fork): Handles the special case when the same constant is used as input for multiple nodes. It would be possible to have a constant for each input, but deduplication replaces the constants with a single constant fork. Since the input of the fork is always the same value and is always valid. No handshaking is necessary and the outputs of the fork is always valid.
|
overridedefaultnoexcept |
|
inline |
|
inline |
|
inlineoverridevirtual |
Implements jlm::rvsdg::Operation.
|
inlinestatic |
Create a fork operation with a single input and multiple outputs.
/param nalternatives Number of outputs. /param value The signal type, which is the same for the input and all outputs. /param isConstant If true, the fork is a constant fork.
/return A vector of outputs.
|
inlinestatic |
Create a ForkOperation node.
| numResults | Number of outputs. |
| operand | The node's operand |
| isConstant | If true, the ForkOperation is a constant fork. |
|
inlineoverridevirtual |
Debug string for the fork operation. /return HLS_CFORK if the fork is a constant fork, else HLS_FORK.
Implements jlm::rvsdg::Operation.
|
inlinenoexcept |
|
inlineoverridevirtualnoexcept |
Implements jlm::rvsdg::Operation.