PandA-2024.02
commutative_expr_restructuring.hpp
Go to the documentation of this file.
1 /*
2  *
3  * _/_/_/ _/_/ _/ _/ _/_/_/ _/_/
4  * _/ _/ _/ _/ _/_/ _/ _/ _/ _/ _/
5  * _/_/_/ _/_/_/_/ _/ _/_/ _/ _/ _/_/_/_/
6  * _/ _/ _/ _/ _/ _/ _/ _/ _/
7  * _/ _/ _/ _/ _/ _/_/_/ _/ _/
8  *
9  * ***********************************************
10  * PandA Project
11  * URL: http://panda.dei.polimi.it
12  * Politecnico di Milano - DEIB
13  * System Architectures Group
14  * ***********************************************
15  * Copyright (C) 2018-2024 Politecnico di Milano
16  *
17  * This file is part of the PandA framework.
18  *
19  * The PandA framework is free software; you can redistribute it and/or modify
20  * it under the terms of the GNU General Public License as published by
21  * the Free Software Foundation; either version 3 of the License, or
22  * (at your option) any later version.
23  *
24  * This program is distributed in the hope that it will be useful,
25  * but WITHOUT ANY WARRANTY; without even the implied warranty of
26  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
27  * GNU General Public License for more details.
28  *
29  * You should have received a copy of the GNU General Public License
30  * along with this program. If not, see <http://www.gnu.org/licenses/>.
31  *
32  */
40 #ifndef COMMUTATIVE_EXPR_RESTRUCTURING_HPP
41 #define COMMUTATIVE_EXPR_RESTRUCTURING_HPP
42 
45 
47 #include "refcount.hpp"
48 
54 
56 {
57  private:
60 
63 
66 
71  bool IsCommExprGimple(const tree_nodeConstRef tn) const;
72 
84  tree_nodeRef IsCommExprChain(const tree_nodeConstRef tn, const bool first, bool is_third_node) const;
85 
91  ComputeFrontendRelationships(const DesignFlowStep::RelationshipType relationship_type) const override;
92 
93  public:
102  const DesignFlowManagerConstRef design_flow_manager,
104 
109 
114 
118  void Initialize() override;
119 
124  bool HasToBeExecuted() const override;
125 };
126 #endif
bool IsCommExprGimple(const tree_nodeConstRef tn) const
Return true if tree node is a gimple_assign with a mult_expr/plus_expr in the right part...
Class managing the schedule of the operations.
Definition: schedule.hpp:118
REF_FORWARD_DECL(AllocationInformation)
Superclass include.
RelationshipType
The relationship type.
DesignFlowStep_Status InternalExec() override
Performs the loops analysis.
This class manages the tree structures extracted from the raw file.
bool HasToBeExecuted() const override
Check if this step has actually to be executed.
This class contains the base representation for a generic frontend flow step which works on a single ...
Abstract pure class for the tree structure.
Definition: tree_node.hpp:139
tree_managerRef TM
The tree manager.
~commutative_expr_restructuring() override
Destructor.
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
Template definition of refcount.
tree_nodeRef IsCommExprChain(const tree_nodeConstRef tn, const bool first, bool is_third_node) const
Given a gimple_assign with a commutative operation it checks:
const unsigned int function_id
The index of the function to be analyzed.
const application_managerRef AppM
The application manager.
AllocationInformationRef allocation_information
The allocation information.
commutative_expr_restructuring(const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
Constructor.
const CustomUnorderedSet< std::pair< FrontendFlowStepType, FunctionRelationship > > ComputeFrontendRelationships(const DesignFlowStep::RelationshipType relationship_type) const override
Return the set of analyses in relationship with this design step.
CONSTREF_FORWARD_DECL(tree_node)

Generated on Mon Feb 12 2024 13:02:52 for PandA-2024.02 by doxygen 1.8.13