Jlm
mem-conv.hpp
Go to the documentation of this file.
1 /*
2  * Copyright 2021 David Metz <david.c.metz@ntnu.no>
3  * See COPYING for terms of redistribution.
4  */
5 
6 #ifndef JLM_BACKEND_HLS_RVSDG2RHLS_MEM_CONV_HPP
7 #define JLM_BACKEND_HLS_RVSDG2RHLS_MEM_CONV_HPP
8 
12 
13 namespace jlm::hls
14 {
15 
17 {
18  std::vector<rvsdg::Node *> loadNodes{};
19  std::vector<rvsdg::Node *> storeNodes{};
20  std::vector<rvsdg::Node *> decoupleNodes{};
21 };
22 
29 std::vector<TracedPointerNodes>
31 
34  const jlm::rvsdg::LambdaNode * lambda,
35  const jlm::llvm::IntegerConstantOperation * request_constant);
36 
38 {
39 public:
40  ~MemoryConverter() noexcept override;
41 
43 
44  MemoryConverter(const MemoryConverter &) = delete;
45 
47  operator=(const MemoryConverter &) = delete;
48 
49  void
50  Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override;
51 
52  static void
53  CreateAndRun(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector)
54  {
55  MemoryConverter memoryConverter;
56  memoryConverter.Run(rvsdgModule, statisticsCollector);
57  }
58 };
59 
60 } // namespace jlm::hls
61 
62 #endif // JLM_BACKEND_HLS_RVSDG2RHLS_MEM_CONV_HPP
~MemoryConverter() noexcept override
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
Definition: mem-conv.cpp:802
static void CreateAndRun(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector)
Definition: mem-conv.hpp:53
Lambda node.
Definition: lambda.hpp:83
Represents an RVSDG transformation.
rvsdg::SimpleNode * find_decouple_response(const rvsdg::LambdaNode *lambda, const llvm::IntegerConstantOperation *request_constant)
Definition: mem-conv.cpp:27
std::vector< TracedPointerNodes > TracePointerArguments(const rvsdg::LambdaNode *lambda)
Definition: mem-conv.cpp:339
std::vector< rvsdg::Node * > loadNodes
Definition: mem-conv.hpp:18
std::vector< rvsdg::Node * > decoupleNodes
Definition: mem-conv.hpp:20
std::vector< rvsdg::Node * > storeNodes
Definition: mem-conv.hpp:19