Jlm
Loading...
Searching...
No Matches
jlm
llvm
opt
IOBarrierElimination.hpp
Go to the documentation of this file.
1
/*
2
* Copyright 2026 Nico Reißmann <nico.reissmann@gmail.com>
3
* See COPYING for terms of redistribution.
4
*/
5
6
#ifndef JLM_LLVM_OPT_IOBARRIERELIMINATION_HPP
7
#define JLM_LLVM_OPT_IOBARRIERELIMINATION_HPP
8
9
#include <
jlm/rvsdg/gamma.hpp
>
10
#include <
jlm/rvsdg/Transformation.hpp
>
11
12
namespace
jlm::llvm
13
{
14
15
class
IOBarrierElimination
final :
public
rvsdg::Transformation
16
{
17
class
Context
;
18
class
Statistics
;
19
20
public
:
21
~IOBarrierElimination
()
override
;
22
23
IOBarrierElimination
();
24
25
IOBarrierElimination
(
const
IOBarrierElimination
&) =
delete
;
26
27
IOBarrierElimination
(
IOBarrierElimination
&&) =
delete
;
28
29
IOBarrierElimination
&
30
operator=
(
const
IOBarrierElimination
&) =
delete
;
31
32
IOBarrierElimination
&
33
operator=
(
IOBarrierElimination
&&) =
delete
;
34
35
void
36
Run
(
rvsdg::RvsdgModule
& module,
util::StatisticsCollector
&
statisticsCollector
)
override
;
37
38
static
void
39
normalizeMemoryHoistBarriers
(
rvsdg::Region
& region);
40
41
private
:
42
void
43
markOutputs
(
rvsdg::Region
& region);
44
45
void
46
propagateSize
(
rvsdg::Graph
& graph);
47
48
void
49
encodeSize
(
rvsdg::Graph
& graph);
50
51
void
52
sweepRegion
(
rvsdg::Region
& region);
53
54
size_t
55
getDereferenceableSize
(
const
rvsdg::GammaNode::EntryVar
& entryVar)
const
;
56
57
std::unique_ptr<Context>
context_
{};
58
};
59
60
}
61
62
#endif
Transformation.hpp
jlm::llvm::IOBarrierElimination::Context
Definition
IOBarrierElimination.cpp:106
jlm::llvm::IOBarrierElimination::Statistics
Definition
IOBarrierElimination.cpp:24
jlm::llvm::IOBarrierElimination
Definition
IOBarrierElimination.hpp:16
jlm::llvm::IOBarrierElimination::propagateSize
void propagateSize(rvsdg::Graph &graph)
Definition
IOBarrierElimination.cpp:474
jlm::llvm::IOBarrierElimination::Run
void Run(rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector) override
Perform RVSDG transformation.
Definition
IOBarrierElimination.cpp:154
jlm::llvm::IOBarrierElimination::normalizeMemoryHoistBarriers
static void normalizeMemoryHoistBarriers(rvsdg::Region ®ion)
Definition
IOBarrierElimination.cpp:248
jlm::llvm::IOBarrierElimination::encodeSize
void encodeSize(rvsdg::Graph &graph)
Definition
IOBarrierElimination.cpp:616
jlm::llvm::IOBarrierElimination::operator=
IOBarrierElimination & operator=(const IOBarrierElimination &)=delete
jlm::llvm::IOBarrierElimination::operator=
IOBarrierElimination & operator=(IOBarrierElimination &&)=delete
jlm::llvm::IOBarrierElimination::markOutputs
void markOutputs(rvsdg::Region ®ion)
Definition
IOBarrierElimination.cpp:379
jlm::llvm::IOBarrierElimination::IOBarrierElimination
IOBarrierElimination()
Definition
IOBarrierElimination.cpp:149
jlm::llvm::IOBarrierElimination::getDereferenceableSize
size_t getDereferenceableSize(const rvsdg::GammaNode::EntryVar &entryVar) const
Definition
IOBarrierElimination.cpp:309
jlm::llvm::IOBarrierElimination::~IOBarrierElimination
~IOBarrierElimination() override
jlm::llvm::IOBarrierElimination::sweepRegion
void sweepRegion(rvsdg::Region ®ion)
Definition
IOBarrierElimination.cpp:683
jlm::llvm::IOBarrierElimination::context_
std::unique_ptr< Context > context_
Definition
IOBarrierElimination.hpp:57
jlm::llvm::IOBarrierElimination::IOBarrierElimination
IOBarrierElimination(IOBarrierElimination &&)=delete
jlm::llvm::IOBarrierElimination::IOBarrierElimination
IOBarrierElimination(const IOBarrierElimination &)=delete
jlm::rvsdg::Graph
Definition
graph.hpp:75
jlm::rvsdg::Region
Represent acyclic RVSDG subgraphs.
Definition
region.hpp:213
jlm::rvsdg::RvsdgModule
Definition
RvsdgModule.hpp:20
jlm::rvsdg::Transformation
Represents an RVSDG transformation.
Definition
Transformation.hpp:21
jlm::util::StatisticsCollector
Definition
Statistics.hpp:444
gamma.hpp
jlm::llvm
Global memory state passed between functions.
Definition
IpGraphToLlvmConverter.cpp:40
jlm::llvm::statisticsCollector
static util::StatisticsCollector statisticsCollector
Definition
CommonNodeEliminationTests.cpp:27
jlm::rvsdg::GammaNode::EntryVar
A variable routed into all gamma regions.
Definition
gamma.hpp:131
Generated by
1.9.8