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
82{
83 class Statistics;
84
85public:
94
96
98 : Transformation("InvariantValueRedirection"),
99 configuration_(std::move(configuration))
100 {}
101
102 void
104
111 static void
112 createAndRun(rvsdg::RvsdgModule & rvsdgModule, Configuration configuration);
113
114private:
115 void
117
118 void
120
121 void
123
124 static void
126
127 static void
129
136 static void
138
139 static void
141
148 static void
150
152};
153
154}
155
156#endif
static jlm::util::StatisticsCollector statisticsCollector
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.