Jlm
mem-sep.hpp
Go to the documentation of this file.
1 //
2 // Created by david on 7/2/21.
3 //
4 
5 #ifndef JLM_BACKEND_HLS_RVSDG2RHLS_MEM_SEP_HPP
6 #define JLM_BACKEND_HLS_RVSDG2RHLS_MEM_SEP_HPP
7 
9 
10 namespace jlm::rvsdg
11 {
12 class LambdaNode;
13 }
14 
15 namespace jlm::hls
16 {
17 
19 {
20 public:
21  ~MemoryStateSeparation() noexcept override;
22 
24 
26 
28 
30  operator=(const MemoryStateSeparation &) = delete;
31 
33  operator=(MemoryStateSeparation &&) = delete;
34 
35  void
36  Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override;
37 
38  static void
39  CreateAndRun(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector)
40  {
41  MemoryStateSeparation memoryStateSeparation;
42  memoryStateSeparation.Run(rvsdgModule, statisticsCollector);
43  }
44 
45 private:
46  static void
47  separateMemoryStates(const rvsdg::LambdaNode & lambdaNode);
48 
49  static std::vector<rvsdg::Node *>
51 };
52 
53 } // namespace jlm::hls
54 
55 #endif // JLM_BACKEND_HLS_RVSDG2RHLS_MEM_SEP_HPP
~MemoryStateSeparation() noexcept override
static std::vector< rvsdg::Node * > gatherNonDecoupleCalls(rvsdg::Region &region)
Definition: mem-sep.cpp:149
static void separateMemoryStates(const rvsdg::LambdaNode &lambdaNode)
Definition: mem-sep.cpp:182
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
Definition: mem-sep.cpp:261
static void CreateAndRun(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector)
Definition: mem-sep.hpp:39
Lambda node.
Definition: lambda.hpp:83
Represent acyclic RVSDG subgraphs.
Definition: region.hpp:213
Represents an RVSDG transformation.