|
docc 0.8.3 (0d44999b)
C++ API Reference
|
Represents pre-cached data for 1 Loop that fullfills the prerequisits for fusing with another candidate Goal is to collect every harder to get data once for all involved loops. More...
#include <sdfg/passes/loop_fusion/fusion_types.h>
Public Member Functions | |
| FusionLoopCandidate (structured_control_flow::StructuredLoop *loop, const symbolic::Assumption *indvar_boundaries, symbolic::Assumptions assumptions, bool is_map=false, bool is_by_domain_candidate=false) | |
| void | non_indvar_writes () |
| void | aliasing_encountered () |
| void | replace (const symbolic::ExpressionMapping &mapping) |
Public Attributes | |
| structured_control_flow::StructuredLoop * | loop |
| const symbolic::Assumption * | indvar_boundaries |
| symbolic::Assumptions | assumptions |
| bool | is_map = false |
| bool | is_by_domain_candidate = false |
| std::unordered_map< RegId, FusionArg > | args |
| bool | incompatible = false |
| bool | nested_incompatible = false |
Represents pre-cached data for 1 Loop that fullfills the prerequisits for fusing with another candidate Goal is to collect every harder to get data once for all involved loops.
Because we likely need to compare a candidate against many others, reusing the same data. Also structured in a way, that the data can be merged & updated if fusing between candidates actually happens
Also, since not every loop is eligible to be a candidate, this flattens the loop-tree. Relevant data of nested loops that are not themselves candidates will need to be folded into its nearest parent candidate
|
inline |
| void sdfg::passes::loop_fusion::FusionLoopCandidate::aliasing_encountered | ( | ) |
| void sdfg::passes::loop_fusion::FusionLoopCandidate::non_indvar_writes | ( | ) |
| void sdfg::passes::loop_fusion::FusionLoopCandidate::replace | ( | const symbolic::ExpressionMapping & | mapping | ) |
| symbolic::Assumptions sdfg::passes::loop_fusion::FusionLoopCandidate::assumptions |
| bool sdfg::passes::loop_fusion::FusionLoopCandidate::incompatible = false |
| const symbolic::Assumption* sdfg::passes::loop_fusion::FusionLoopCandidate::indvar_boundaries |
| bool sdfg::passes::loop_fusion::FusionLoopCandidate::is_by_domain_candidate = false |
| bool sdfg::passes::loop_fusion::FusionLoopCandidate::is_map = false |
| structured_control_flow::StructuredLoop* sdfg::passes::loop_fusion::FusionLoopCandidate::loop |
| bool sdfg::passes::loop_fusion::FusionLoopCandidate::nested_incompatible = false |