docc 0.8.3 (0d44999b)
C++ API Reference
Loading...
Searching...
No Matches
arg_capture_plan.h
Go to the documentation of this file.
1#pragma once
2
3#include <unordered_map>
10
11namespace sdfg {
12namespace codegen {
13
35
37private:
38 StructuredSDFG& sdfg_;
39 std::unordered_map<const structured_control_flow::ControlFlowNode*, std::unordered_map<std::string, CaptureVarPlan>>
40 nodes_;
41
42 static bool add_capture_plan(
44 analysis::AnalysisManager& analysis_manager,
46 const std::string& var_name,
47 analysis::RegionArgument region_arg,
48 int arg_idx,
49 bool is_external,
50 std::unordered_map<std::string, CaptureVarPlan>& plan
51 );
52
53public:
56 const std::unordered_map<
58 std::unordered_map<std::string, CaptureVarPlan>>& nodes
59 )
60 : sdfg_(sdfg), nodes_(nodes) {
61 }
62
63 bool is_empty() const {
64 return nodes_.empty();
65 }
66
68
71 PrettyPrinter& stream,
72 LanguageExtension& language_extension
73 ) const;
74
77 PrettyPrinter& stream,
78 LanguageExtension& language_extension
79 ) const;
80
82 PrettyPrinter& stream,
83 LanguageExtension& language_extension,
84 const std::unordered_map<std::string, CaptureVarPlan>& plan,
85 bool after,
86 std::string element_id
87 ) const;
88
89 static std::unique_ptr<ArgCapturePlan> none(StructuredSDFG& sdfg);
90
91 static std::unique_ptr<ArgCapturePlan> root(StructuredSDFG& sdfg);
92
93 static std::unique_ptr<ArgCapturePlan> outermost_loops_plan(StructuredSDFG& sdfg);
94
95 static std::unordered_map<std::string, CaptureVarPlan> create_capture_plan(
97 analysis::AnalysisManager& analysis_manager,
99 );
100};
101
102} // namespace codegen
103} // namespace sdfg
Definition structured_sdfg.h:30
Definition analysis.h:53
static std::unique_ptr< ArgCapturePlan > none(StructuredSDFG &sdfg)
void emit_arg_captures(PrettyPrinter &stream, LanguageExtension &language_extension, const std::unordered_map< std::string, CaptureVarPlan > &plan, bool after, std::string element_id) const
static std::unique_ptr< ArgCapturePlan > root(StructuredSDFG &sdfg)
void end_instrumentation(const structured_control_flow::ControlFlowNode &node, PrettyPrinter &stream, LanguageExtension &language_extension) const
bool should_instrument(const structured_control_flow::ControlFlowNode &node) const
ArgCapturePlan(StructuredSDFG &sdfg, const std::unordered_map< const structured_control_flow::ControlFlowNode *, std::unordered_map< std::string, CaptureVarPlan > > &nodes)
Definition arg_capture_plan.h:54
bool is_empty() const
Definition arg_capture_plan.h:63
static std::unordered_map< std::string, CaptureVarPlan > create_capture_plan(StructuredSDFG &sdfg, analysis::AnalysisManager &analysis_manager, structured_control_flow::ControlFlowNode &node)
static std::unique_ptr< ArgCapturePlan > outermost_loops_plan(StructuredSDFG &sdfg)
void begin_instrumentation(const structured_control_flow::ControlFlowNode &node, PrettyPrinter &stream, LanguageExtension &language_extension) const
const bool capture_output
Definition arg_capture_plan.h:17
CaptureVarPlan(bool capture_input, bool capture_output, int arg_idx, bool is_external, sdfg::types::PrimitiveType inner_type, const symbolic::Expression size, bool is_scalar)
const bool is_external
Definition arg_capture_plan.h:19
const sdfg::types::PrimitiveType inner_type
Definition arg_capture_plan.h:23
const symbolic::Expression size
Definition arg_capture_plan.h:20
const bool capture_input
Definition arg_capture_plan.h:16
const int arg_idx
Definition arg_capture_plan.h:18
const bool is_scalar
Definition arg_capture_plan.h:21
Definition language_extension.h:39
Definition utils.h:16
Base class for all structured control flow nodes in a StructuredSDFG.
Definition control_flow_node.h:44
SymEngine::RCP< const SymEngine::Basic > Expression
Reference-counted pointer to a symbolic expression (SymEngine Basic).
Definition symbolic.h:83
Definition argument_registry.h:10
PrimitiveType
Enumeration of all primitive data types supported by sdfglib.
Definition type.h:35
Definition analysis.h:7
Definition arguments_analysis.h:51