Jlm
Public Member Functions | Static Public Member Functions | Static Private Member Functions | List of all members
jlm::hls::ForkInsertion Class Referencefinal

#include <add-forks.hpp>

Inheritance diagram for jlm::hls::ForkInsertion:
Inheritance graph
[legend]
Collaboration diagram for jlm::hls::ForkInsertion:
Collaboration graph
[legend]

Public Member Functions

 ~ForkInsertion () noexcept override
 
 ForkInsertion ()
 
void Run (rvsdg::RvsdgModule &module, 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 &module, util::StatisticsCollector &statisticsCollector)
 

Static Private Member Functions

static void AddForksToRegion (rvsdg::Region &region)
 
static void AddForkToOutput (rvsdg::Output &output)
 
static bool IsConstantFork (const rvsdg::Output &output)
 

Detailed Description

Adds fork nodes for every output that has multiple users to ensure that each output has at most a single user. The original output is connected to the fork's input and each user is connected to one of the fork's outputs.

Definition at line 21 of file add-forks.hpp.

Constructor & Destructor Documentation

◆ ~ForkInsertion()

jlm::hls::ForkInsertion::~ForkInsertion ( )
overridedefaultnoexcept

◆ ForkInsertion()

jlm::hls::ForkInsertion::ForkInsertion ( )
inline

Definition at line 26 of file add-forks.hpp.

Member Function Documentation

◆ AddForksToRegion()

void jlm::hls::ForkInsertion::AddForksToRegion ( rvsdg::Region region)
staticprivate

Definition at line 30 of file add-forks.cpp.

◆ AddForkToOutput()

void jlm::hls::ForkInsertion::AddForkToOutput ( rvsdg::Output output)
staticprivate

Definition at line 63 of file add-forks.cpp.

◆ CreateAndRun()

void jlm::hls::ForkInsertion::CreateAndRun ( rvsdg::RvsdgModule module,
util::StatisticsCollector statisticsCollector 
)
static

Definition at line 21 of file add-forks.cpp.

◆ IsConstantFork()

bool jlm::hls::ForkInsertion::IsConstantFork ( const rvsdg::Output output)
staticprivate

Definition at line 89 of file add-forks.cpp.

◆ Run()

void jlm::hls::ForkInsertion::Run ( rvsdg::RvsdgModule module,
util::StatisticsCollector statisticsCollector 
)
overridevirtual

Perform RVSDG transformation.

Note
This method is expected to be called multiple times. An implementation is required to reset the objects' internal state to ensure correct behavior after every invocation.
Parameters
moduleRVSDG module the transformation is performed on.
statisticsCollectorStatistics collector for collecting transformation statistics.

Implements jlm::rvsdg::Transformation.

Definition at line 15 of file add-forks.cpp.


The documentation for this class was generated from the following files: