docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
lib_node_expansion_context.h
Go to the documentation of this file.
1#pragma once
2
4
6
7class AccessNodeExpansion;
8
10 friend AccessNodeExpansion;
11
13 Sequence& parent_;
14 size_t child_idx_;
15 Block& block_;
17 const Options& options_;
18 bool expanded_ = false;
19 bool dropped_block_ = false;
20
21public:
24 Sequence& parent,
25 size_t child_idx,
26 Block& block,
29 )
30 : builder_(builder), parent_(parent), child_idx_(child_idx), block_(block), node_(node), options_(options) {
31 }
32
33 std::unique_ptr<LibNodeExpander::AccessNodeExpand>
34 replacement_requires_access_nodes(const std::vector<LibNodeExpander::InputUse>& access_dirs) override;
35
37
40
41 const Options& options() const override {
42 return options_;
43 }
44
45 bool expanded() const {
46 return expanded_;
47 }
48
49 bool dropped_block() const {
50 return dropped_block_;
51 }
52
53 void cleanup();
54};
55
56} // namespace sdfg::passes::expansion
Definition options.h:56
static const Options & empty()
Definition options.h:84
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
Base class for all library nodes in the dataflow graph.
Definition library_node.h:106
Definition lib_node_expander.h:122
LibNodeExpander::ExpandOutcome unapplicable() override
LibNodeExpansionContext(builder::StructuredSDFGBuilder &builder, Sequence &parent, size_t child_idx, Block &block, data_flow::LibraryNode &node, const Options &options=Options::empty())
Definition lib_node_expansion_context.h:22
bool expanded() const
Definition lib_node_expansion_context.h:45
std::unique_ptr< LibNodeExpander::AccessNodeExpand > replacement_requires_access_nodes(const std::vector< LibNodeExpander::InputUse > &access_dirs) override
start expansion with access nodes.
bool dropped_block() const
Definition lib_node_expansion_context.h:49
LibNodeExpander::ExpandOutcome successfully_modified_node_only() override
Only properties of the node under expansion had to be changed, no change to the dataflow were necessa...
LibNodeExpander::ExpandOutcome unable() override
const Options & options() const override
Compile options for this run, so expanders can select variants (e.g.
Definition lib_node_expansion_context.h:41
A control flow node representing a basic block with dataflow computations.
Definition block.h:42
A sequential container of control flow nodes.
Definition sequence.h:52
Definition function_builder.h:10
Definition lib_node_expansion_context.h:5
Definition lib_node_expander.h:12