#include <sdfg/passes/loop_fusion/loop_fusion_pass.h>
|
| InOutCheckResult | check_ins_outs (const loop_fusion::FusionLoopCandidate &first_candidate, const loop_fusion::FusionLoopCandidate &second_candidate, symbolic::ExpressionMapping &canonical_indvars, bool local_not_nested=true, bool only_no_overlap=false) |
| InOutCheckResult | check_ins_outs (const std::unordered_map< loop_fusion::RegId, loop_fusion::FusionArg > &first_args, const std::unordered_map< loop_fusion::RegId, loop_fusion::FusionArg > &second_args, symbolic::ExpressionMapping &canonical_indvars, bool local_not_nested=true, bool only_no_overlap=false) |
| void | update_fused_seq (Sequence &sequence, const symbolic::ExpressionMapping &replacements) |
| bool | loop_match (loop_fusion::FusionLoopCandidate &first, loop_fusion::FusionLoopCandidate &second, SymEngine::map_basic_basic &canonical_indvars) |
| void | update_moved_candidate_states (loop_fusion::FusionLoopCandidate *top, const symbolic::ExpressionMapping &replace) |
| void | update_candidate_state (ControlFlowNode *first_top, loop_fusion::FusionLoopCandidate *first_current, loop_fusion::FusionLoopCandidate *second_current, const symbolic::ExpressionMapping &canonical_indvars) |
| void | update_candidate_args_up (ControlFlowNode *first_top, loop_fusion::FusionLoopCandidate *first_current, loop_fusion::FusionLoopCandidate *second_current, const std::function< void(const std::string &name, loop_fusion::FusionArg &source_arg, std::unordered_map< std::string, loop_fusion::FusionArg > &target_args)> &action) |
| | Helper that walks up from the innermost loops fused (first_current & second_current) until reaching top.
|
| loop_fusion::PatternHandler::MatchResult | fuse_contents (ControlFlowNode *first_top, loop_fusion::FusionLoopCandidate *first_innermost, loop_fusion::FusionLoopCandidate *second_innermost, const symbolic::ExpressionMapping &indvar_mapping, Sequence &target_root, bool can_remove_original) |
| analysis::LoopAnalysis & | get_loop_analysis () override |
| loop_fusion::FusionLoopCandidate * | get_fuse_candidate (StructuredLoop &loop) override |
| builder::StructuredSDFGBuilder & | builder () override |
| void | update_copied_leaf_contents_from_first_to_second (const Plan &plan, FusionLoopCandidate *first_current, FusionLoopCandidate *second_current) override |
| | Moved non-loop contents from first_current to second_current.
|
◆ LoopFusionHandler()
◆ builder()
◆ check_ins_outs() [1/2]
◆ check_ins_outs() [2/2]
◆ check_no_overlap()
◆ fuse_contents()
◆ get_fuse_candidate()
◆ get_loop_analysis()
◆ loop_match()
◆ match()
◆ try_complex_fuse_producer_into_consumer()
◆ update_candidate_args_up()
Helper that walks up from the innermost loops fused (first_current & second_current) until reaching top.
- Parameters
-
| first_top | the outermost loop considered for fusing (first_current is this or a nested loop) |
| first_current | |
| second_current | |
| action | is given the container, the source arg from the first loop and the target_args from the second loop |
◆ update_candidate_state()
◆ update_copied_leaf_contents_from_first_to_second()
◆ update_fused_seq()
◆ update_moved_candidate_states()
The documentation for this class was generated from the following file: