|
docc 0.8.3 (0d44999b)
C++ API Reference
|
Linearizes memlet base types by flattening nested arrays. More...
#include <sdfg/passes/dataflow/memlet_linearization.h>
Static Public Member Functions | |
| static std::string | name () |
| Returns the name of the pass. | |
Additional Inherited Members | |
| Protected Member Functions inherited from sdfg::visitor::NonStoppingStructuredSDFGVisitor | |
| bool | visit_internal (structured_control_flow::Sequence &parent) override |
| Protected Attributes inherited from sdfg::visitor::StructuredSDFGVisitor | |
| builder::StructuredSDFGBuilder & | builder_ |
| analysis::AnalysisManager & | analysis_manager_ |
Linearizes memlet base types by flattening nested arrays.
This pass transforms memlets that have pointer base types pointing to nested arrays. It converts such pointers into flat pointers to the innermost element type, and adjusts the subset accordingly by linearizing multi-dimensional array accesses into a single linear index.
For example, a pointer to int[3][4] with subset [i, j] becomes a pointer to int with subset [i * 4 + j].
This linearization simplifies subsequent passes and code generation by eliminating nested array types in pointer pointees.
| sdfg::passes::MemletLinearization::MemletLinearization | ( | builder::StructuredSDFGBuilder & | builder, |
| analysis::AnalysisManager & | analysis_manager ) |
Constructs a new MemletLinearization pass.
| builder | The structured SDFG builder |
| analysis_manager | The analysis manager |
|
overridevirtual |
Accepts a block and linearizes memlets in its dataflow graph.
| block | The block to process |
Reimplemented from sdfg::visitor::StructuredSDFGVisitor.
|
inlinestatic |
Returns the name of the pass.