Jlm
Loading...
Searching...
No Matches
InvariantValueRedirection.hpp
Go to the documentation of this file.
1/*
2 * Copyright 2017 Nico Reißmann <nico.reissmann@gmail.com>
3 * See COPYING for terms of redistribution.
4 */
5
6#ifndef JLM_LLVM_OPT_INVARIANTVALUEREDIRECTION_HPP
7#define JLM_LLVM_OPT_INVARIANTVALUEREDIRECTION_HPP
8
10
11namespace jlm::rvsdg
12{
13class GammaNode;
14class Graph;
15class Region;
16class StructuralNode;
17class ThetaNode;
18class SimpleNode;
19}
20
21namespace jlm::llvm
22{
23
24class ThetaGammaPredicateCorrelation;
25
89{
90 class Statistics;
91
92public:
102
104
106 : Transformation("InvariantValueRedirection"),
107 configuration_(std::move(configuration))
108 {}
109
110 void
112
119 static void
120 createAndRun(rvsdg::RvsdgModule & rvsdgModule, Configuration configuration);
121
122private:
123 void
125
126 void
128
129 void
131
132 static void
134
135 static void
137
138 static void
140
147 static void
149
150 static void
152
159 static void
161
163};
164
165}
166
167#endif
static void redirectGammaOutputConstants(rvsdg::GammaNode &gammaNode)
static void redirectGammaOutputs(rvsdg::GammaNode &gammaNode)
void Run(rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
static void redirectLoadMemoryStates(rvsdg::SimpleNode &loadNode)
void redirectInSubregions(rvsdg::StructuralNode &structuralNode)
static void redirectCallOutputs(rvsdg::SimpleNode &callNode)
static void createAndRun(rvsdg::RvsdgModule &rvsdgModule, Configuration configuration)
static void redirectThetaOutputs(rvsdg::ThetaNode &thetaNode)
InvariantValueRedirection(Configuration configuration)
static void redirectThetaGammaOutputs(rvsdg::ThetaNode &thetaNode)
Conditional operator / pattern matching.
Definition gamma.hpp:99
Represent acyclic RVSDG subgraphs.
Definition region.hpp:213
Represents an RVSDG transformation.
Transformation(std::string_view Name)
Global memory state passed between functions.
static util::StatisticsCollector statisticsCollector