Jlm
distribute-constants.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_HLS_BACKEND_RVSDG2RHLS_DISTRIBUTE_CONSTANTS_HPP
7 #define JLM_HLS_BACKEND_RVSDG2RHLS_DISTRIBUTE_CONSTANTS_HPP
8 
10 
11 namespace jlm::rvsdg
12 {
13 class LambdaNode;
14 }
15 
16 namespace jlm::hls
17 {
18 
23 {
24 public:
25  ~ConstantDistribution() noexcept override;
26 
28 
30 
32  operator=(const ConstantDistribution &) = delete;
33 
34  void
35  Run(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector) override;
36 
37  static void
38  CreateAndRun(rvsdg::RvsdgModule & rvsdgModule, util::StatisticsCollector & statisticsCollector)
39  {
40  ConstantDistribution constantDistribution;
41  constantDistribution.Run(rvsdgModule, statisticsCollector);
42  }
43 
44 private:
51  static void
53 
59  static void
61 
70 
81  collectOutputs(const rvsdg::SimpleNode & constantNode);
82 };
83 
84 }
85 
86 #endif
static void distributeConstantsInRootRegion(rvsdg::Region &region)
static util::HashSet< rvsdg::Output * > collectOutputs(const rvsdg::SimpleNode &constantNode)
static void distributeConstantsInLambda(const rvsdg::LambdaNode &lambdaNode)
void Run(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
~ConstantDistribution() noexcept override
static util::HashSet< rvsdg::SimpleNode * > collectConstants(rvsdg::Region &region)
static void CreateAndRun(rvsdg::RvsdgModule &rvsdgModule, util::StatisticsCollector &statisticsCollector)
Lambda node.
Definition: lambda.hpp:83
Represent acyclic RVSDG subgraphs.
Definition: region.hpp:213
Represents an RVSDG transformation.