43 #ifndef SIMPLE_CODE_MOTION_HPP 44 #define SIMPLE_CODE_MOTION_HPP 101 unsigned int curr_loop_id, std::list<tree_nodeRef>& to_be_removed,
102 std::list<tree_nodeRef>& to_be_added_back, std::list<tree_nodeRef>& to_be_added_front,
103 std::map<unsigned int, blocRef>& list_of_bloc,
104 std::map<std::pair<unsigned int, blocRef>, std::pair<unsigned int, blocRef>>& dom_diff,
105 unsigned int curr_bb_dom);
This struct specifies the field bloc (basic block).
Class managing the schedule of the operations.
ScheduleRef schedule
The scheduling solution.
RelationshipType
The relationship type.
This class manages the tree structures extracted from the raw file.
DesignFlowStep_Status InternalExec() override
Updates the tree to have a more compliant CFG.
This class contains the base representation for a generic frontend flow step which works on a single ...
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.
~simple_code_motion() override
Destructor.
redefinition of map to manage ordered/unordered structures
FunctionFrontendFlowStep_Movable CheckMovable(const unsigned int dest_bb_index, tree_nodeRef tn, bool &zero_delay, const tree_managerRef TM)
Check if a statement can be moved in a basic block.
Abstract pure class for the tree structure.
bool conservative
True if only zero delay statement can be moved.
unsigned map[NUM_VERTICES]
This struct specifies the gimple_assign node (GCC 4.3 tree node).
void loop_pipelined(tree_nodeRef curr_stmt, const tree_managerRef TM, unsigned int curr_bb, unsigned int curr_loop_id, std::list< tree_nodeRef > &to_be_removed, std::list< tree_nodeRef > &to_be_added_back, std::list< tree_nodeRef > &to_be_added_front, std::map< unsigned int, blocRef > &list_of_bloc, std::map< std::pair< unsigned int, blocRef >, std::pair< unsigned int, blocRef >> &dom_diff, unsigned int curr_bb_dom)
static bool tree_dumped
flag to check if initial tree has been dumped
const Wrefcount< const DesignFlowManager > design_flow_manager
The design flow manager.
Restructure the tree control flow graph.
REF_FORWARD_DECL(Schedule)
const ParameterConstRef parameters
Set of input parameters.
DesignFlowStep_Status
The status of a step.
Template definition of refcount.
FunctionFrontendFlowStep_Movable
Enum class used to specify if a statement can be moved.
const unsigned int function_id
The index of the function to be analyzed.
const application_managerRef AppM
The application manager.
void Initialize() override
Initialize the step (i.e., like a constructor, but executed just before exec.
bool IsScheduleBased() const
Return true if the last run of this step was based on scheduling.
This struct specifies the ssa_name node.
simple_code_motion(const ParameterConstRef parameters, const application_managerRef AppM, unsigned int function_id, const DesignFlowManagerConstRef design_flow_manager)
Constructor.