PandA-2024.02
Public Member Functions | Protected Attributes | Static Protected Attributes
fun_dominator_allocation Class Reference

#include <fun_dominator_allocation.hpp>

Inheritance diagram for fun_dominator_allocation:
Inheritance graph
[legend]
Collaboration diagram for fun_dominator_allocation:
Collaboration graph
[legend]

Public Member Functions

 fun_dominator_allocation (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type=HLSFlowStep_Type::DOMINATOR_FUNCTION_ALLOCATION)
 Constructor. More...
 
 ~fun_dominator_allocation () override
 Destructor. More...
 
DesignFlowStep_Status Exec () override
 Execute the step. More...
 
void ComputeRelationships (DesignFlowStepSet &relationship, const DesignFlowStep::RelationshipType relationship_type) override
 Compute the relationships of a step with other steps. More...
 
bool HasToBeExecuted () const override
 Check if this step has actually to be executed. More...
 
- Public Member Functions inherited from function_allocation
 function_allocation (const ParameterConstRef Param, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type)
 Constructor. More...
 
 ~function_allocation () override
 Destructor. More...
 
void Initialize () override
 Initialize the step (i.e., like a constructor, but executed just before exec. More...
 
- Public Member Functions inherited from HLS_step
 HLS_step (const ParameterConstRef _parameters, const HLS_managerRef HLSMgr, const DesignFlowManagerConstRef design_flow_manager, const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization=HLSFlowStepSpecializationConstRef())
 Constructor. More...
 
 ~HLS_step () override
 Destructor. More...
 
std::string GetSignature () const override
 Return a unified identifier of this design step. More...
 
std::string GetName () const override
 Return the name of this design step. More...
 
virtual std::string GetKindText () const
 Return the name of the type of this frontend flow step. More...
 
DesignFlowStepFactoryConstRef CGetDesignFlowStepFactory () const final
 Return the factory to create this type of steps. More...
 
void ComputeRelationships (DesignFlowStepSet &design_flow_step_set, const DesignFlowStep::RelationshipType relationship_type) override
 Compute the relationships of a step with other steps. More...
 
- Public Member Functions inherited from DesignFlowStep
 DesignFlowStep (const DesignFlowManagerConstRef design_flow_manager, const ParameterConstRef parameters)
 Constructor. More...
 
virtual ~DesignFlowStep ()
 Destructor. More...
 
DesignFlowStep_Status GetStatus () const
 Return the status of this design step. More...
 
virtual void WriteDot (std::ostream &out) const
 Write the label for a dot graph. More...
 
bool IsComposed () const
 Returns if this step is composed. More...
 
int CGetDebugLevel () const
 Return the debug level of the step. More...
 
virtual void PrintInitialIR () const
 Dump the initial intermediate representation. More...
 
virtual void PrintFinalIR () const
 Dump the final intermediate representation. More...
 

Protected Attributes

bool already_executed
 True if this step has yet been executed. More...
 
- Protected Attributes inherited from HLS_step
const HLS_managerRef HLSMgr
 information about all the HLS synthesis More...
 
const HLSFlowStep_Type hls_flow_step_type
 The type of this step. More...
 
const HLSFlowStepSpecializationConstRef hls_flow_step_specialization
 The information about specialization. More...
 
- Protected Attributes inherited from DesignFlowStep
bool composed
 True if this step represents a composition of design flow steps (e.g., a flow); must be set by specialized constructors. More...
 
const Wrefcount< const DesignFlowManagerdesign_flow_manager
 The design flow manager. More...
 
const ParameterConstRef parameters
 Set of input parameters. More...
 
int debug_level
 The debug level. More...
 
const int output_level
 The output level. More...
 

Static Protected Attributes

static const std::set< std::string > simple_functions
 list of trivial function that does not require to be proxied More...
 
- Static Protected Attributes inherited from HLS_step
static CustomUnorderedMap< std::string, HLSFlowStep_Typecommand_line_name_to_enum
 Map hls step name to enum. More...
 

Additional Inherited Members

- Public Types inherited from DesignFlowStep
enum  RelationshipType { DEPENDENCE_RELATIONSHIP, INVALIDATION_RELATIONSHIP, PRECEDENCE_RELATIONSHIP }
 The relationship type. More...
 
- Static Public Member Functions inherited from HLS_step
static std::string EnumToName (const HLSFlowStep_Type hls_flow_step_type)
 Given a HLS flow step type, return the name of the type. More...
 
static const std::string ComputeSignature (const HLSFlowStep_Type hls_flow_step_type, const HLSFlowStepSpecializationConstRef hls_flow_step_specialization)
 Compute the signature of a hls flow step. More...
 
- Protected Member Functions inherited from function_allocation
virtual const CustomUnorderedSet< std::tuple< HLSFlowStep_Type, HLSFlowStepSpecializationConstRef, HLSFlowStep_Relationship > > ComputeHLSRelationships (const DesignFlowStep::RelationshipType relationship_type) const override
 Return the set of analyses in relationship with this design step. More...
 

Detailed Description

Definition at line 49 of file fun_dominator_allocation.hpp.

Constructor & Destructor Documentation

◆ fun_dominator_allocation()

fun_dominator_allocation::fun_dominator_allocation ( const ParameterConstRef  _parameters,
const HLS_managerRef  HLSMgr,
const DesignFlowManagerConstRef  design_flow_manager,
const HLSFlowStep_Type  hls_flow_step_type = HLSFlowStep_Type::DOMINATOR_FUNCTION_ALLOCATION 
)

Constructor.

Definition at line 79 of file fun_dominator_allocation.cpp.

References DesignFlowStep::debug_level, GET_CLASS, DesignFlowStep::parameters, and ~fun_dominator_allocation().

Here is the call graph for this function:

◆ ~fun_dominator_allocation()

fun_dominator_allocation::~fun_dominator_allocation ( )
overridedefault

Destructor.

Referenced by fun_dominator_allocation().

Here is the caller graph for this function:

Member Function Documentation

◆ ComputeRelationships()

void fun_dominator_allocation::ComputeRelationships ( DesignFlowStepSet relationship,
const DesignFlowStep::RelationshipType  relationship_type 
)
overridevirtual

Compute the relationships of a step with other steps.

Parameters
dependenciesis where relationships will be stored
relationship_typeis the type of relationship to be computed

Implements DesignFlowStep.

Definition at line 89 of file fun_dominator_allocation.cpp.

References HLS_step::ComputeRelationships(), ApplicationFrontendFlowStep::ComputeSignature(), TechnologyFlowStep::ComputeSignature(), DesignFlowStep::DEPENDENCE_RELATIONSHIP, DesignFlowStep::design_flow_manager, DesignFlowStep::INVALIDATION_RELATIONSHIP, LOAD_TECHNOLOGY, Wrefcount< T >::lock(), DesignFlowStep::PRECEDENCE_RELATIONSHIP, simple_functions, and THROW_UNREACHABLE.

Here is the call graph for this function:

◆ Exec()

DesignFlowStep_Status fun_dominator_allocation::Exec ( )
overridevirtual

Execute the step.

Returns
the exit status of this step

the analysis has to be performed only on the reachable functions

we do not need the exit vertex since the post-dominator graph is not used

compute the number of instances for each function

find the common dominator and decide where to allocate

find the common dominator between two candidates

really allocate

add proxies

Implements DesignFlowStep.

Reimplemented in OmpFunctionAllocation, and OmpFunctionAllocationCS.

Definition at line 140 of file fun_dominator_allocation.cpp.

References already_executed, DesignFlowStep::debug_level, DEBUG_LEVEL_PEDANTIC, functions::GetFUName(), tree_helper::GetMangledFunctionName(), HLS_step::HLSMgr, INDENT_DBG_MEX, INDENT_OUT_MEX, INFINITE_UINT, INTERFACE_LIBRARY, tree_helper::is_a_nop_function_decl(), NULL_VERTEX, DesignFlowStep::output_level, OUTPUT_LEVEL_MINIMUM, OUTPUT_LEVEL_PEDANTIC, OUTPUT_LEVEL_VERBOSE, DesignFlowStep::parameters, simple_functions, SplitString(), STR, STR_CST_interface_parameter_keyword, SUCCESS, lenet_tvm::target, THROW_ASSERT, THROW_ERROR, and WORK_LIBRARY.

Referenced by OmpFunctionAllocation::Exec(), and OmpFunctionAllocationCS::Exec().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HasToBeExecuted()

bool fun_dominator_allocation::HasToBeExecuted ( ) const
overridevirtual

Check if this step has actually to be executed.

Returns
true if the step has to be executed

Implements DesignFlowStep.

Definition at line 135 of file fun_dominator_allocation.cpp.

References already_executed.

Field Documentation

◆ already_executed

bool fun_dominator_allocation::already_executed
protected

True if this step has yet been executed.

Definition at line 53 of file fun_dominator_allocation.hpp.

Referenced by Exec(), and HasToBeExecuted().

◆ simple_functions

const std::set< std::string > fun_dominator_allocation::simple_functions
staticprotected
Initial value:
= {"__builtin_cond_expr32", "llabs",
"__builtin_llabs", "labs", "__builtin_labs"}

list of trivial function that does not require to be proxied

Definition at line 56 of file fun_dominator_allocation.hpp.

Referenced by ComputeRelationships(), and Exec().


The documentation for this class was generated from the following files:

Generated on Mon Feb 12 2024 13:03:51 for PandA-2024.02 by doxygen 1.8.13