docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
map_fusion.h
Go to the documentation of this file.
1#pragma once
2
5#include "sdfg/passes/pass.h"
7
8namespace sdfg {
9namespace passes {
10namespace normalization {
11
12
14 std::unique_ptr<analysis::LoopAnalysis> loop_analysis_;
15 // When false, Case 2 (init-into-reduction hoisting) is disabled for this run.
16 bool allow_init_hoist_;
17 // Allow ProducerIntoConsumer fusing
18 bool allow_prod_into_cons_;
19
20public:
23 analysis::AnalysisManager& analysis_manager,
24 bool allow_init_hoist = true,
25 bool allow_prod_into_cons = true
26 );
27
28 static std::string name() {
29 return "MapFusion";
30 };
31
33};
34
35// A VisitorPass-style wrapper that forwards the init-hoist flag to the visitor.
36class MapFusionPass : public Pass {
37 bool allow_init_hoist_;
38 bool allow_prod_into_cons_;
39
40public:
41 MapFusionPass(bool allow_init_hoist = true, bool allow_prod_into_cons = true)
42 : allow_init_hoist_(allow_init_hoist), allow_prod_into_cons_(allow_prod_into_cons) {
43 }
44
45 std::string name() override {
46 return MapFusion::name();
47 }
48
50 MapFusion visitor(builder, analysis_manager, allow_init_hoist_, allow_prod_into_cons_);
51 return visitor.visit();
52 }
53};
54
55} // namespace normalization
56} // namespace passes
57} // namespace sdfg
Definition analysis.h:53
Note: Even though the class references unique_ptr, it will never delete an SDFG it has a reference to...
Definition structured_sdfg_builder.h:44
bool run_pass(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager) override
Definition map_fusion.h:49
std::string name() override
Definition map_fusion.h:45
MapFusionPass(bool allow_init_hoist=true, bool allow_prod_into_cons=true)
Definition map_fusion.h:41
Definition map_fusion.h:13
MapFusion(builder::StructuredSDFGBuilder &builder, analysis::AnalysisManager &analysis_manager, bool allow_init_hoist=true, bool allow_prod_into_cons=true)
bool accept(structured_control_flow::Sequence &node) override
static std::string name()
Definition map_fusion.h:28
A sequential container of control flow nodes.
Definition sequence.h:52
Definition structured_sdfg_visitor.h:53
Definition function_builder.h:10
Definition loop_normal_form.h:8
Definition approximate_math.h:12
Definition control_flow_node.h:16
Definition analysis.h:7