|
Jlm
|
#include <distribute-constants.hpp>


Public Member Functions | |
| ~ConstantDistribution () noexcept override | |
| ConstantDistribution () | |
| ConstantDistribution (const ConstantDistribution &)=delete | |
| ConstantDistribution & | operator= (const ConstantDistribution &)=delete |
| void | Run (rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override |
| Perform RVSDG transformation. More... | |
Public Member Functions inherited from jlm::rvsdg::Transformation | |
| virtual | ~Transformation () noexcept |
| Transformation (std::string_view Name) | |
| const std::string_view & | GetName () const noexcept |
| void | Run (RvsdgModule &module) |
| Perform RVSDG transformation. More... | |
Static Public Member Functions | |
| static void | CreateAndRun (rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) |
Static Private Member Functions | |
| static void | distributeConstantsInRootRegion (rvsdg::Region ®ion) |
| static void | distributeConstantsInLambda (const rvsdg::LambdaNode &lambdaNode) |
| static util::HashSet< rvsdg::SimpleNode * > | collectConstants (rvsdg::Region ®ion) |
| static util::HashSet< rvsdg::Output * > | collectOutputs (const rvsdg::SimpleNode &constantNode) |
Distributes constants into subregions of gamma and theta nodes if they have users there.
Definition at line 22 of file distribute-constants.hpp.
|
overridedefaultnoexcept |
| jlm::hls::ConstantDistribution::ConstantDistribution | ( | ) |
Definition at line 213 of file distribute-constants.cpp.
|
delete |
|
staticprivate |
Collects all constants within a region and recursively within its structural node's subregion.
| region | the region for which to collect constants |
Definition at line 107 of file distribute-constants.cpp.
|
staticprivate |
For a given constant node constantNode, collect all gamma or theta node arguments/outputs where the constant node has users that are either another simple node or a lambda subregion result. The idea is that only outputs are of interest where there is a "real user" of a constant, and it is not just routed through a region.
| constantNode | The constant node for which to collect the outputs. |
constantNode. Definition at line 143 of file distribute-constants.cpp.
|
inlinestatic |
Definition at line 38 of file distribute-constants.hpp.
|
staticprivate |
Distribute all constants within a lambda node.
| lambdaNode | The lambda node where the constants are distributed. |
Definition at line 44 of file distribute-constants.cpp.
|
staticprivate |
Traverse the root region as well as phi regions to find all lambda nodes where constants should be distributed.
| region | The region to traverse. |
Definition at line 22 of file distribute-constants.cpp.
|
delete |
|
overridevirtual |
Perform RVSDG transformation.
| module | RVSDG module the transformation is performed on. |
| statisticsCollector | Statistics collector for collecting transformation statistics. |
Implements jlm::rvsdg::Transformation.
Definition at line 218 of file distribute-constants.cpp.