PandA-2024.02
Public Types | Public Member Functions | Data Fields | Private Attributes | Friends
FunctionBehavior Class Reference

#include <function_behavior.hpp>

Collaboration diagram for FunctionBehavior:
Collaboration graph
[legend]

Public Types

enum  graph_type {
  CFG, ECFG, FCFG, CDG,
  FCDG, DFG, FDFG, ADG,
  FADG, ODG, FODG, FLG,
  SDG, FSDG, SAODG, FSAODG,
  FLSAODG, FLSAODDG, FFLSAODG, FLAODDG,
  FFLAODDG, SG, AGG_VIRTUALG
}
 Declaration of enum representing the type of graph. More...
 
enum  bb_graph_type {
  BB, FBB, EBB, CDG_BB,
  DOM_TREE, POST_DOM_TREE, PPG, DJ
}
 Declaration of enum representing the type of bb_graph. More...
 

Public Member Functions

 FunctionBehavior (const application_managerConstRef AppM, const BehavioralHelperRef _helper, const ParameterConstRef parameters)
 Constructor. More...
 
 FunctionBehavior (const FunctionBehavior &)=delete
 
 ~FunctionBehavior ()
 Destructor. More...
 
BehavioralHelperRef GetBehavioralHelper ()
 Returns the helper associated with the function. More...
 
const BehavioralHelperConstRef CGetBehavioralHelper () const
 Returns the helper associated with the function. More...
 
CustomOrderedSet< unsigned int > get_local_variables (const application_managerConstRef AppM) const
 Returns the set of local variables. More...
 
const std::deque< vertex > & get_levels () const
 Return the vector of vertex index sorted in topological order. More...
 
const std::deque< vertex > & get_bb_levels () const
 Return the vector of bb vertex index sorted in topological order. More...
 
const std::map< vertex, unsigned int > & get_map_levels () const
 Return the map of vertex index sorted in topological order. More...
 
const std::map< vertex, unsigned int > & get_bb_map_levels () const
 Return the map of bb vertex index sorted in topological order. More...
 
OpGraphRef GetOpGraph (FunctionBehavior::graph_type gt)
 This method returns the operation graphs. More...
 
const OpGraphConstRef CGetOpGraph (FunctionBehavior::graph_type gt) const
 This method returns the operation graphs. More...
 
const OpGraphConstRef CGetOpGraph (FunctionBehavior::graph_type gt, const OpVertexSet &statements) const
 This method returns the operation graph having as vertices the vertices of subset. More...
 
BBGraphRef GetBBGraph (FunctionBehavior::bb_graph_type gt=FunctionBehavior::BB)
 This method returns the basic block graphs. More...
 
const BBGraphConstRef CGetBBGraph (FunctionBehavior::bb_graph_type gt=FunctionBehavior::BB) const
 This method returns the basic block graphs. More...
 
void print (std::ostream &os) const
 Function that prints the class behavioral_manager. More...
 
void set_epp (EdgeDescriptor e, unsigned long long value)
 Set epp associated with an edges. More...
 
const LoopsConstRef CGetLoops () const
 Return the loops. More...
 
const LoopsRef GetLoops () const
 Return the loops. More...
 
void add_parm_decl_copied (unsigned int node_id)
 Adds an identifier to the set of memory variables. More...
 
void add_parm_decl_loaded (unsigned int node_id)
 add an actual parameter that has to be loaded into the formal parameter More...
 
void add_parm_decl_stored (unsigned int node_id)
 add a formal parameter that has to be initialized from the actual value More...
 
void add_function_mem (unsigned int node_id)
 Adds a memory variable to the function. More...
 
void add_dynamic_address (unsigned int node_id)
 Add the node_id to the set of object for which a dynamic address computation could be used. More...
 
void clean_dynamic_address ()
 remove all variables from the dynamic address set More...
 
bool is_variable_mem (unsigned int node_id) const
 Checks if a variable has been allocated in memory. More...
 
const CustomOrderedSet< unsigned int > & get_function_mem () const
 Returns the set of memory variables. More...
 
void clean_function_mem ()
 clean the function mem data structure More...
 
const CustomOrderedSet< unsigned int > & get_dynamic_address () const
 Returns the set of variables for which a dynamic address computation maybe required. More...
 
const CustomOrderedSet< unsigned int > & get_parm_decl_copied () const
 Returns the set of parameters to be copied. More...
 
void clean_parm_decl_copied ()
 clean_parm_decl_copied clean parm_decl_copied data structure More...
 
const CustomOrderedSet< unsigned int > & get_parm_decl_loaded () const
 Returns the set of the actual parameters that has to be loaded into the formal parameter. More...
 
void clean_parm_decl_loaded ()
 clean_parm_decl_loaded clean parm_decl_loaded data structure More...
 
const CustomOrderedSet< unsigned int > & get_parm_decl_stored () const
 Returns the set of the formal parameters that has to be stored into the formal parameter. More...
 
void clean_parm_decl_stored ()
 clean_parm_decl_stored clean parm_decl_stored data structure More...
 
void set_dereference_unknown_addr (bool f)
 Set the use of dereference of unknown address. More...
 
bool get_dereference_unknown_addr () const
 Return true if the function has dereference of unknown address. More...
 
void set_unaligned_accesses (bool f)
 Set if LOADs or STOREs perform unaligned accesses. More...
 
bool get_unaligned_accesses () const
 Return true if a LOADs or STOREs perform unaligned accesses. More...
 
void set_has_globals (bool f)
 set if there are or not externally visible global variables More...
 
bool get_has_globals () const
 helper for global variables property More...
 
void set_has_undefined_function_receiveing_pointers (bool f)
 set if there are or not undefined functions called and which has pointers passed More...
 
bool get_has_undefined_function_receiving_pointers () const
 helper for has_undefined_function_receiveing_pointers variables property More...
 
void add_state_variable (unsigned int node_id)
 Add a state variable: static, global or volatile variable. More...
 
bool is_a_state_variable (unsigned int node_id) const
 return true if a variable is a state variable or not More...
 
void clean_state_variable ()
 clean_state_variable initialize the state variable data structure More...
 
const CustomOrderedSet< unsigned int > & get_state_variables ()
 get_state_variables More...
 
void set_packed_vars (bool packed)
 update the the packed variables status More...
 
bool has_packed_vars () const
 
bool is_pipeline_enabled () const
 
bool is_simple_pipeline () const
 
int get_initiation_time () const
 
bool CheckReachability (const vertex first_operation, const vertex second_operation) const
 Check if a path from first_operation to second_operation exists in control flow graph (without feedback) More...
 
bool CheckBBReachability (const vertex first_basic_block, const vertex second_basic_block) const
 Check if a path from the first basic block to the second basic block exists in control flow graph (without feedback) More...
 
bool CheckFeedbackReachability (const vertex first_operation, const vertex second_operation) const
 Check if a path from first_operation to second_operation exists in control flow graph with feedback. More...
 
bool CheckBBFeedbackReachability (const vertex first_basic_block, const vertex second_basic_block) const
 Check if a path from the first basic block to the second basic block exists in control flow graph with feedback. More...
 
unsigned int GetBBVersion () const
 Return the version of the basic block intermediate representation. More...
 
unsigned int UpdateBBVersion ()
 Update the version of the basic block intermediate representation. More...
 
unsigned int GetBitValueVersion () const
 Return the version of the bitvalue information. More...
 
unsigned int UpdateBitValueVersion ()
 Update the version of the bitvalue information. More...
 
unsigned int GetChannelsNumber () const
 
void SetChannelsNumber (unsigned int val)
 
MemoryAllocation_ChannelsType GetChannelsType () const
 
void SetChannelsType (MemoryAllocation_ChannelsType val)
 
MemoryAllocation_Policy GetMemoryAllocationPolicy () const
 
void SetMemoryAllocationPolicy (MemoryAllocation_Policy val)
 

Data Fields

CustomUnorderedMapStable< vertex, CustomUnorderedSet< vertex > > bb_reachability
 Mutual exclusion between basic blocks (based on control flow graph with flow edges) More...
 
CustomUnorderedMapStable< vertex, CustomUnorderedSet< vertex > > feedback_bb_reachability
 Reachability between basic blocks based on control flow graph with feedback. More...
 
const operations_graph_constructorRef ogc
 reference to the operations graph constructor More...
 
const BasicBlocksGraphConstructorRef bbgc
 reference to the basic block graph constructor More...
 
const level_constructorRef lm
 reference to the level constructor More...
 
const level_constructorRef bb_lm
 reference to the level constructor More...
 
dominance< BBGraph > * dominators
 This class stores dominator information. More...
 
dominance< BBGraph > * post_dominators
 This class stores post-dominator information. More...
 
std::map< unsigned int, memory_accessRefmemory_info
 map between node id and the corresponding memory allocation More...
 
bool packed_vars
 True when there access to packed data. More...
 

Private Attributes

const BehavioralHelperRef helper
 Behavioral helper associated with this behavioral_graph_manager. More...
 
const BBGraphsCollectionRef bb_graphs_collection
 Global graph storing CFG, dominators and post-dominators. The nodes of this graph are basic blocks. More...
 
const OpGraphsCollectionRef op_graphs_collection
 Global graph storing CFG, DFG, FCFG, FDFG, SDG, FSDG, CDG. The nodes of this graph are operations. More...
 
const BBGraphRef bb
 The basic block CFG. More...
 
const BBGraphRef extended_bb
 The basic block Control Flow Graph extended with edges that impose that basic block inside a loop are executed before what follows the loop. More...
 
const BBGraphRef cdg_bb
 The control dependence graph among basic blocks. More...
 
const BBGraphRef dj
 The dj graph (used for loop computation) More...
 
const BBGraphRef dt
 The dominator tree of the CFG on basic blocks. More...
 
const BBGraphRef fbb
 The basic block CFG with feedback. More...
 
const BBGraphRef pdt
 The post-dominator tree of the CFG on basic blocks. More...
 
const BBGraphRef ppg
 The support basic block graph for path profiling. More...
 
const OpGraphRef cfg
 The control flow graph. More...
 
const OpGraphRef extended_cfg
 The extended control flow graph. More...
 
const OpGraphRef fcfg
 The control flow graph with feedback. More...
 
const OpGraphRef adg
 The anti-dependencies graph. More...
 
const OpGraphRef fadg
 The anti-dependencies graph with feedback. More...
 
const OpGraphRef cdg
 The control dependence graph. More...
 
const OpGraphRef fcdg
 The control dependence graph with feedback. More...
 
const OpGraphRef dfg
 The data flow graph. More...
 
const OpGraphRef fdfg
 The data flow graph with feedback. More...
 
const OpGraphRef flg
 The flow edge operation graph. More...
 
const OpGraphRef odg
 The output-dependencies flow graph. More...
 
const OpGraphRef fodg
 The output-dependencies flow graph with feedback. More...
 
const OpGraphRef flaoddg
 The anti-dependence + data dependence + output dependence + flow graph. More...
 
const OpGraphRef fflaoddg
 The anti-dependence + data dependence + output dependence + flow graph with freedback. More...
 
const OpGraphRef flsaodg
 The system dependence, antidependence, output dependence and flow graph. More...
 
const OpGraphRef flsaoddg
 The system dependence, antidependence, output dependence, flow and debug graph. More...
 
const OpGraphRef fflsaodg
 The system dependence, antidependence, output dependence and flow graph with feedback;. More...
 
const OpGraphRef saodg
 The system dependence, antidependence and output dependence graph. More...
 
const OpGraphRef fsaodg
 The system dependence, antidependence and output dependence graph with feedback. More...
 
const OpGraphRef sdg
 The system dependence graph. More...
 
const OpGraphRef fsdg
 The system dependence graph with feedback. More...
 
const OpGraphRef sg
 The speculation graph. More...
 
const OpGraphRef agg_virtualg
 Anti + Data flow graph on aggregates. More...
 
std::map< vertex, unsigned int > map_levels
 Map operation vertex to position in topological order in control flow graph; in the sorting then part vertices come before else part ones. More...
 
std::map< vertex, unsigned int > bb_map_levels
 Map basic block vertex to position in topological order in control flow graph; in the sorting then part vertices come before else part ones. More...
 
std::deque< vertexdeque_levels
 list of operations vertices sorted by topological order in control flow graph; in the sorting then part vertices come before else part ones More...
 
std::deque< vertexbb_deque_levels
 list of operations vertices sorted by topological order in control flow graph; in the sorting then part vertices come before else part ones More...
 
LoopsRef loops
 Loops of the function. More...
 
CustomOrderedSet< unsigned int > mem_nodeID
 this set represents the memory variables accessed by the function More...
 
CustomOrderedSet< unsigned int > dynamic_address
 store memory objects which can be indirectly addressed through a dynamic address computation More...
 
CustomOrderedSet< unsigned int > parm_decl_copied
 this set represents the parameters that have to be copied from the caller More...
 
CustomOrderedSet< unsigned int > parm_decl_loaded
 this set represents the actual parameters that has to be loaded into the formal parameter from the actual parameter More...
 
CustomOrderedSet< unsigned int > parm_decl_stored
 this set represents the formal parameters that has to be stored into the formal parameter from the actual parameter More...
 
const ParameterConstRef parameters
 The set of input parameters. More...
 
bool dereference_unknown_address
 the function dereference a pointer initialized with constant address. More...
 
bool unaligned_accesses
 
unsigned int bb_version
 The version of basic block intermediate representation. More...
 
unsigned int bitvalue_version
 Version of the bitvalue information. More...
 
bool has_globals
 when true at least one global variable is used More...
 
bool has_undefined_function_receiveing_pointers
 function calls undefined function passing pointers More...
 
CustomOrderedSet< unsigned int > state_variables
 set of global variables More...
 
bool pipeline_enabled
 true when pipelining is enabled for the function More...
 
bool simple_pipeline
 true when the requested pipeline does not include unbounded functions More...
 
int initiation_time
 used only for stallable pipelines More...
 
unsigned int _channels_number
 Function scope channels number. More...
 
MemoryAllocation_ChannelsType _channels_type
 Function scope channels type. More...
 
MemoryAllocation_Policy _allocation_policy
 

Friends

std::ostream & operator<< (std::ostream &os, const FunctionBehavior &s)
 Friend definition of the << operator. More...
 
std::ostream & operator<< (std::ostream &os, const FunctionBehaviorRef &s)
 Friend definition of the << operator. More...
 
some friend classes
class BasicBlocksProfiling
 
class BBCdgComputation
 
class OpCdgComputation
 
class hpp_profiling
 
class loops_computation
 
class instr_sequences_detection
 
struct loop_regions_computation
 
class LoopsProfiling
 
class probability_path
 
class HostProfiling
 
class read_profiling_data
 
class tp_profiling
 
class BBOrderComputation
 
class OpOrderComputation
 
class BasicBlocksCfgComputation
 

Detailed Description

Definition at line 177 of file function_behavior.hpp.

Member Enumeration Documentation

◆ bb_graph_type

Declaration of enum representing the type of bb_graph.

Enumerator
BB 

Basic block control flow graph.

FBB 

Basic block control flow graph with feedback.

EBB 

Basic block control flow graph with edges imposing that basic block inside a loop are executed before what follows the loop.

CDG_BB 

Basic block control dependence graph.

DOM_TREE 

Basic block dominator tree.

POST_DOM_TREE 

Basic block post-dominator tree.

PPG 

Support basic block for path profiling.

DJ 

DJ basic block graph (used for loop computation)

Definition at line 438 of file function_behavior.hpp.

◆ graph_type

Declaration of enum representing the type of graph.

Enumerator
CFG 

Control flow graph.

ECFG 

Extended control flow graph.

FCFG 

Control flow graph with feedback.

CDG 

Control dependence graph.

FCDG 

Control dependence graph with feedback.

DFG 

Data flow graph.

FDFG 

Data flow graph with feedback.

ADG 

Anti-dependence graph.

FADG 

Anti-dependence graph with feedback.

ODG 

Output dependence graph.

FODG 

Output dependence graph with feedback.

FLG 

Flow edges graph.

SDG 

System dependence graph.

FSDG 

System dependence graph with feedback.

SAODG 

System dependence + anti-dependence graph + output dependence graph.

FSAODG 

System dependence + anti-dependence graph + output dependence graph with feedback.

FLSAODG 

System dependence + anti-dependence + output dependence graph + flow graph.

FLSAODDG 

System dependence + anti-dependence + output dependence graph + flow graph + debug graph.

FFLSAODG 

System dependence + anti-dependence + output dependence graph + flow graph with feedback.

FLAODDG 

Anti-dependence + data dependence + output dependence + flow graph.

FFLAODDG 

Anti dependence + data dependence + output dependence + flow graph with feedback.

SG 

Speculation graph.

AGG_VIRTUALG 

Anti + Data flow graph dependence between aggregates.

Definition at line 406 of file function_behavior.hpp.

Constructor & Destructor Documentation

◆ FunctionBehavior() [1/2]

FunctionBehavior::FunctionBehavior ( const application_managerConstRef  AppM,
const BehavioralHelperRef  _helper,
const ParameterConstRef  parameters 
)

Constructor.

Parameters
AppMis the application manager
_helperis the helper associated with the function
parametersis the set of input parameters

Definition at line 92 of file function_behavior.cpp.

References tree_helper::GetMangledFunctionName(), INDENT_OUT_MEX, initiation_time, OUTPUT_LEVEL_MINIMUM, pipeline_enabled, simple_pipeline, SplitString(), STR, and THROW_ASSERT.

Here is the call graph for this function:

◆ FunctionBehavior() [2/2]

FunctionBehavior::FunctionBehavior ( const FunctionBehavior )
delete

◆ ~FunctionBehavior()

FunctionBehavior::~FunctionBehavior ( )

Destructor.

Definition at line 242 of file function_behavior.cpp.

References dominators, and post_dominators.

Member Function Documentation

◆ add_dynamic_address()

void FunctionBehavior::add_dynamic_address ( unsigned int  node_id)

Add the node_id to the set of object for which a dynamic address computation could be used.

Parameters
node_idis the object stored in memory

the object may be written once you have the address

Definition at line 575 of file function_behavior.cpp.

References dynamic_address.

◆ add_function_mem()

void FunctionBehavior::add_function_mem ( unsigned int  node_id)

Adds a memory variable to the function.

Definition at line 570 of file function_behavior.cpp.

References mem_nodeID.

◆ add_parm_decl_copied()

void FunctionBehavior::add_parm_decl_copied ( unsigned int  node_id)

Adds an identifier to the set of memory variables.

Definition at line 592 of file function_behavior.cpp.

References dynamic_address, and parm_decl_copied.

◆ add_parm_decl_loaded()

void FunctionBehavior::add_parm_decl_loaded ( unsigned int  node_id)

add an actual parameter that has to be loaded into the formal parameter

Definition at line 598 of file function_behavior.cpp.

References dynamic_address, and parm_decl_loaded.

◆ add_parm_decl_stored()

void FunctionBehavior::add_parm_decl_stored ( unsigned int  node_id)

add a formal parameter that has to be initialized from the actual value

Definition at line 604 of file function_behavior.cpp.

References dynamic_address, and parm_decl_stored.

◆ add_state_variable()

void FunctionBehavior::add_state_variable ( unsigned int  node_id)
inline

Add a state variable: static, global or volatile variable.

Definition at line 755 of file function_behavior.hpp.

◆ CGetBBGraph()

const BBGraphConstRef FunctionBehavior::CGetBBGraph ( FunctionBehavior::bb_graph_type  gt = FunctionBehavior::BB) const

This method returns the basic block graphs.

Parameters
gtis the type of the bb_graph to be returned
Returns
the pointer to the bb_graph.

Definition at line 495 of file function_behavior.cpp.

References bb, BB, cdg_bb, CDG_BB, dj, DJ, DOM_TREE, dt, EBB, extended_bb, fbb, FBB, pdt, POST_DOM_TREE, ppg, PPG, and THROW_UNREACHABLE.

Referenced by pragma_manager::CheckAddOmpFor(), CWriter::compute_phi_nodes(), SDCScheduling::Initialize(), FSM_NI_SSA_liveness::InternalExec(), SDCScheduling::InternalExec(), parametric_list_based::InternalExec(), EdgeCWriter::writeRoutineInstructions(), CWriter::writeRoutineInstructions(), and EdgeCWriter::writeRoutineInstructions_rec().

Here is the caller graph for this function:

◆ CGetBehavioralHelper()

const BehavioralHelperConstRef FunctionBehavior::CGetBehavioralHelper ( ) const

◆ CGetLoops()

const LoopsConstRef FunctionBehavior::CGetLoops ( ) const

◆ CGetOpGraph() [1/2]

const OpGraphConstRef FunctionBehavior::CGetOpGraph ( FunctionBehavior::graph_type  gt) const

This method returns the operation graphs.

Parameters
gtis the type of the graph to be returned
Returns
the pointer to the graph.

Definition at line 312 of file function_behavior.cpp.

References adg, ADG, agg_virtualg, AGG_VIRTUALG, cdg, CDG, cfg, CFG, dfg, DFG, ECFG, extended_cfg, fadg, FADG, fcdg, FCDG, fcfg, FCFG, fdfg, FDFG, fflaoddg, FFLAODDG, fflsaodg, FFLSAODG, flaoddg, FLAODDG, flg, FLG, flsaoddg, FLSAODDG, flsaodg, FLSAODG, fodg, FODG, fsaodg, FSAODG, fsdg, FSDG, odg, ODG, saodg, SAODG, sdg, SDG, sg, SG, and THROW_UNREACHABLE.

Referenced by conn_binding::add_command_ports(), CWriter::compute_phi_nodes(), VcdSignalSelection::CrossPropagateAddrSsa(), CWriter::DeclareLocalVariables(), VcdSignalSelection::DetectInvalidReturns(), estimate_muxes(), HLS_manager::get_required_values(), application_manager::GetProducedValue(), StorageValueInformation::Initialize(), SDCScheduling::Initialize(), Scheduling::Initialize(), Schedule::Initialize(), parametric_list_based::Initialize(), cdfc_module_binding::initialize_connection_relation(), OmpAllocation::IntegrateTechnologyLibraries(), pipeline_controller::InternalExec(), unique_binding::InternalExec(), FSM_NI_SSA_liveness::InternalExec(), sched_based_chaining_computation::InternalExec(), port_swapping::InternalExec(), SDCScheduling::InternalExec(), parametric_list_based::InternalExec(), cdfc_module_binding::InternalExec(), VcdSignalSelection::PropagateAddrParamToSsa(), VcdSignalSelection::SelectInitialSsa(), InstructionWriter::write(), CWriter::WriteFunctionBody(), DiscrepancyAnalysisCWriter::writePostInstructionInfo(), DiscrepancyAnalysisCWriter::writePreInstructionInfo(), EdgeCWriter::writeRoutineInstructions(), CWriter::writeRoutineInstructions(), and EdgeCWriter::writeRoutineInstructions_rec().

Here is the caller graph for this function:

◆ CGetOpGraph() [2/2]

const OpGraphConstRef FunctionBehavior::CGetOpGraph ( FunctionBehavior::graph_type  gt,
const OpVertexSet statements 
) const

This method returns the operation graph having as vertices the vertices of subset.

optimization in case the subset is equal to the whole set of vertices is possible

Parameters
gtis the type of the graph to be returned
subsetis the set of subgraph vertices
Returns
the refcount to the subgraph

This "transformation" is necessary because of graph constructor

Definition at line 381 of file function_behavior.cpp.

References ADG, ADG_AGG_SELECTOR, ADG_SELECTOR, AGG_VIRTUALG, CDG, CDG_SELECTOR, CFG, CFG_SELECTOR, DEBUG_SELECTOR, DFG, DFG_AGG_SELECTOR, DFG_SELECTOR, ECFG, ECFG_SELECTOR, FADG, FADG_SELECTOR, FB_ADG_SELECTOR, FCDG, FCDG_SELECTOR, FCFG, FCFG_SELECTOR, FDFG, FDFG_SELECTOR, FFLAODDG, FFLSAODG, FLAODDG, FLG, FLG_SELECTOR, FLSAODDG, FLSAODG, FODG, FODG_SELECTOR, FSAODG, FSDG, FSDG_SELECTOR, ODG, ODG_SELECTOR, op_graphs_collection, SAODG, SAODG_SELECTOR, SDG, SDG_SELECTOR, SG, SG_SELECTOR, and THROW_UNREACHABLE.

◆ CheckBBFeedbackReachability()

bool FunctionBehavior::CheckBBFeedbackReachability ( const vertex  first_basic_block,
const vertex  second_basic_block 
) const

Check if a path from the first basic block to the second basic block exists in control flow graph with feedback.

Parameters
first_basic_blockis the first basic block to be considered
second_basic_blockis the second operation to be considered
Returns
true if there is a path from first_basic_block to second_basic_block in flcfg

Definition at line 699 of file function_behavior.cpp.

References CheckBBReachability(), and feedback_bb_reachability.

Referenced by CheckFeedbackReachability().

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

◆ CheckBBReachability()

bool FunctionBehavior::CheckBBReachability ( const vertex  first_basic_block,
const vertex  second_basic_block 
) const

Check if a path from the first basic block to the second basic block exists in control flow graph (without feedback)

Parameters
first_basic_blockis the first basic block to be considered
second_basic_blockis the second operation to be considered
Returns
true if there is a path from first_basic_block to second_basic_block in flcfg

Definition at line 685 of file function_behavior.cpp.

References bb_reachability.

Referenced by CheckBBFeedbackReachability(), and CheckReachability().

Here is the caller graph for this function:

◆ CheckFeedbackReachability()

bool FunctionBehavior::CheckFeedbackReachability ( const vertex  first_operation,
const vertex  second_operation 
) const

Check if a path from first_operation to second_operation exists in control flow graph with feedback.

Parameters
first_operationis the first operation to be considered
second_operationis the second operation to be considered
Returns
true if there is a path from first_operation to second_operation in fcfg

Definition at line 744 of file function_behavior.cpp.

References bb, cfg, and CheckBBFeedbackReachability().

Here is the call graph for this function:

◆ CheckReachability()

bool FunctionBehavior::CheckReachability ( const vertex  first_operation,
const vertex  second_operation 
) const

Check if a path from first_operation to second_operation exists in control flow graph (without feedback)

Parameters
first_operationis the first operation to be considered
second_operationis the second operation to be considered
Returns
true if there is a path from first_operation to second_operation in flcfg

Definition at line 718 of file function_behavior.cpp.

References bb, cfg, CheckBBReachability(), GET_NAME, map_levels, and THROW_ASSERT.

Referenced by SDCScheduling::InternalExec().

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

◆ clean_dynamic_address()

void FunctionBehavior::clean_dynamic_address ( )

remove all variables from the dynamic address set

Definition at line 582 of file function_behavior.cpp.

References dynamic_address.

◆ clean_function_mem()

void FunctionBehavior::clean_function_mem ( )

clean the function mem data structure

Definition at line 615 of file function_behavior.cpp.

References mem_nodeID.

◆ clean_parm_decl_copied()

void FunctionBehavior::clean_parm_decl_copied ( )

clean_parm_decl_copied clean parm_decl_copied data structure

Definition at line 630 of file function_behavior.cpp.

References parm_decl_copied.

◆ clean_parm_decl_loaded()

void FunctionBehavior::clean_parm_decl_loaded ( )

clean_parm_decl_loaded clean parm_decl_loaded data structure

Definition at line 640 of file function_behavior.cpp.

References parm_decl_loaded.

◆ clean_parm_decl_stored()

void FunctionBehavior::clean_parm_decl_stored ( )

clean_parm_decl_stored clean parm_decl_stored data structure

Definition at line 650 of file function_behavior.cpp.

References parm_decl_stored.

◆ clean_state_variable()

void FunctionBehavior::clean_state_variable ( )
inline

clean_state_variable initialize the state variable data structure

Definition at line 772 of file function_behavior.hpp.

◆ get_bb_levels()

const std::deque< vertex > & FunctionBehavior::get_bb_levels ( ) const

Return the vector of bb vertex index sorted in topological order.

Definition at line 533 of file function_behavior.cpp.

References bb_deque_levels.

◆ get_bb_map_levels()

const std::map< vertex, unsigned int > & FunctionBehavior::get_bb_map_levels ( ) const

Return the map of bb vertex index sorted in topological order.

Definition at line 543 of file function_behavior.cpp.

References bb_map_levels.

Referenced by SDCScheduling::InternalExec().

Here is the caller graph for this function:

◆ get_dereference_unknown_addr()

bool FunctionBehavior::get_dereference_unknown_addr ( ) const
inline

Return true if the function has dereference of unknown address.

Definition at line 695 of file function_behavior.hpp.

◆ get_dynamic_address()

const CustomOrderedSet< unsigned int > & FunctionBehavior::get_dynamic_address ( ) const

Returns the set of variables for which a dynamic address computation maybe required.

Definition at line 620 of file function_behavior.cpp.

References dynamic_address.

◆ get_function_mem()

const CustomOrderedSet< unsigned int > & FunctionBehavior::get_function_mem ( ) const

Returns the set of memory variables.

Definition at line 610 of file function_behavior.cpp.

References mem_nodeID.

Referenced by LoadOpNode::opCtorGenerator().

Here is the caller graph for this function:

◆ get_has_globals()

bool FunctionBehavior::get_has_globals ( ) const
inline

helper for global variables property

Returns
true in case there exist at least one externally visible global variable

Definition at line 729 of file function_behavior.hpp.

◆ get_has_undefined_function_receiving_pointers()

bool FunctionBehavior::get_has_undefined_function_receiving_pointers ( ) const
inline

helper for has_undefined_function_receiveing_pointers variables property

Returns
true in case there are undefined function which receives pointers as a parameter

Definition at line 747 of file function_behavior.hpp.

◆ get_initiation_time()

int FunctionBehavior::get_initiation_time ( ) const
inline

Definition at line 817 of file function_behavior.hpp.

References FunctionFrontendFlowStep::GetBitValueVersion(), and THROW_ASSERT.

Here is the call graph for this function:

◆ get_levels()

const std::deque< vertex > & FunctionBehavior::get_levels ( ) const

Return the vector of vertex index sorted in topological order.

Definition at line 528 of file function_behavior.cpp.

References deque_levels.

◆ get_local_variables()

CustomOrderedSet< unsigned int > FunctionBehavior::get_local_variables ( const application_managerConstRef  AppM) const

Returns the set of local variables.

Definition at line 655 of file function_behavior.cpp.

References cfg, and helper.

◆ get_map_levels()

const std::map< vertex, unsigned int > & FunctionBehavior::get_map_levels ( ) const

Return the map of vertex index sorted in topological order.

Definition at line 538 of file function_behavior.cpp.

References map_levels.

◆ get_parm_decl_copied()

const CustomOrderedSet< unsigned int > & FunctionBehavior::get_parm_decl_copied ( ) const

Returns the set of parameters to be copied.

Definition at line 625 of file function_behavior.cpp.

References parm_decl_copied.

◆ get_parm_decl_loaded()

const CustomOrderedSet< unsigned int > & FunctionBehavior::get_parm_decl_loaded ( ) const

Returns the set of the actual parameters that has to be loaded into the formal parameter.

Definition at line 635 of file function_behavior.cpp.

References parm_decl_loaded.

◆ get_parm_decl_stored()

const CustomOrderedSet< unsigned int > & FunctionBehavior::get_parm_decl_stored ( ) const

Returns the set of the formal parameters that has to be stored into the formal parameter.

Definition at line 645 of file function_behavior.cpp.

References parm_decl_stored.

◆ get_state_variables()

const CustomOrderedSet<unsigned int>& FunctionBehavior::get_state_variables ( )
inline

get_state_variables

Returns
the state variables data structure

Definition at line 781 of file function_behavior.hpp.

◆ get_unaligned_accesses()

bool FunctionBehavior::get_unaligned_accesses ( ) const
inline

Return true if a LOADs or STOREs perform unaligned accesses.

Definition at line 711 of file function_behavior.hpp.

◆ GetBBGraph()

BBGraphRef FunctionBehavior::GetBBGraph ( FunctionBehavior::bb_graph_type  gt = FunctionBehavior::BB)

This method returns the basic block graphs.

Parameters
gtis the type of the bb_graph to be returned
Returns
the pointer to the bb_graph.

Definition at line 469 of file function_behavior.cpp.

References bb, BB, cdg_bb, CDG_BB, dj, DJ, DOM_TREE, dt, EBB, extended_bb, fbb, FBB, pdt, POST_DOM_TREE, ppg, PPG, and THROW_UNREACHABLE.

◆ GetBBVersion()

unsigned int FunctionBehavior::GetBBVersion ( ) const

Return the version of the basic block intermediate representation.

Returns
bb_version

Definition at line 754 of file function_behavior.cpp.

References bb_version.

Referenced by HLSFunctionStep::Exec(), and HLSFunctionStep::HasToBeExecuted().

Here is the caller graph for this function:

◆ GetBehavioralHelper()

BehavioralHelperRef FunctionBehavior::GetBehavioralHelper ( )

Returns the helper associated with the function.

Definition at line 370 of file function_behavior.cpp.

References helper.

◆ GetBitValueVersion()

unsigned int FunctionBehavior::GetBitValueVersion ( ) const

Return the version of the bitvalue information.

Returns
bitvalue_version

Definition at line 765 of file function_behavior.cpp.

References bitvalue_version.

Referenced by HLSFunctionStep::Exec(), and HLSFunctionStep::HasToBeExecuted().

Here is the caller graph for this function:

◆ GetChannelsNumber()

unsigned int FunctionBehavior::GetChannelsNumber ( ) const

Definition at line 776 of file function_behavior.cpp.

References _channels_number.

Referenced by ModuleGeneratorManager::create_generic_module(), and ModuleGeneratorManager::specialize_fu().

Here is the caller graph for this function:

◆ GetChannelsType()

MemoryAllocation_ChannelsType FunctionBehavior::GetChannelsType ( ) const

Definition at line 786 of file function_behavior.cpp.

References _channels_type.

◆ GetLoops()

const LoopsRef FunctionBehavior::GetLoops ( ) const

Return the loops.

Definition at line 558 of file function_behavior.cpp.

References loops.

◆ GetMemoryAllocationPolicy()

MemoryAllocation_Policy FunctionBehavior::GetMemoryAllocationPolicy ( ) const

Definition at line 796 of file function_behavior.cpp.

References _allocation_policy.

◆ GetOpGraph()

OpGraphRef FunctionBehavior::GetOpGraph ( FunctionBehavior::graph_type  gt)

This method returns the operation graphs.

Parameters
gtis the type of the graph to be returned
Returns
the pointer to the graph.

Definition at line 254 of file function_behavior.cpp.

References adg, ADG, agg_virtualg, AGG_VIRTUALG, cdg, CDG, cfg, CFG, dfg, DFG, ECFG, extended_cfg, fadg, FADG, fcdg, FCDG, fcfg, FCFG, fdfg, FDFG, fflaoddg, FFLAODDG, fflsaodg, FFLSAODG, flaoddg, FLAODDG, flg, FLG, flsaoddg, FLSAODDG, flsaodg, FLSAODG, fodg, FODG, fsaodg, FSAODG, fsdg, FSDG, odg, ODG, saodg, SAODG, sdg, SDG, sg, SG, and THROW_UNREACHABLE.

◆ has_packed_vars()

bool FunctionBehavior::has_packed_vars ( ) const
inline
Returns
true in case packed vars are used

Definition at line 798 of file function_behavior.hpp.

◆ is_a_state_variable()

bool FunctionBehavior::is_a_state_variable ( unsigned int  node_id) const
inline

return true if a variable is a state variable or not

Parameters
node_idis the node id of the variable

Definition at line 764 of file function_behavior.hpp.

◆ is_pipeline_enabled()

bool FunctionBehavior::is_pipeline_enabled ( ) const
inline

Definition at line 803 of file function_behavior.hpp.

◆ is_simple_pipeline()

bool FunctionBehavior::is_simple_pipeline ( ) const
inline

Definition at line 808 of file function_behavior.hpp.

References THROW_ASSERT.

◆ is_variable_mem()

bool FunctionBehavior::is_variable_mem ( unsigned int  node_id) const

Checks if a variable has been allocated in memory.

Definition at line 587 of file function_behavior.cpp.

References mem_nodeID.

Referenced by mux_connection_binding::determine_connection().

Here is the caller graph for this function:

◆ print()

void FunctionBehavior::print ( std::ostream &  os) const

Function that prints the class behavioral_manager.

Definition at line 521 of file function_behavior.cpp.

References helper.

◆ set_dereference_unknown_addr()

void FunctionBehavior::set_dereference_unknown_addr ( bool  f)
inline

Set the use of dereference of unknown address.

Definition at line 687 of file function_behavior.hpp.

◆ set_epp()

void FunctionBehavior::set_epp ( EdgeDescriptor  e,
unsigned long long  value 
)

Set epp associated with an edges.

Parameters
eis the edges
valueis the value

Definition at line 548 of file function_behavior.cpp.

References ppg.

◆ set_has_globals()

void FunctionBehavior::set_has_globals ( bool  f)
inline

set if there are or not externally visible global variables

Parameters
fboolean value specifying if there exist at least one externally visible global variable

Definition at line 720 of file function_behavior.hpp.

◆ set_has_undefined_function_receiveing_pointers()

void FunctionBehavior::set_has_undefined_function_receiveing_pointers ( bool  f)
inline

set if there are or not undefined functions called and which has pointers passed

Parameters
fboolean value specifying if there are such functions

Definition at line 738 of file function_behavior.hpp.

◆ set_packed_vars()

void FunctionBehavior::set_packed_vars ( bool  packed)
inline

update the the packed variables status

Parameters
packedis true when there is at least one packed variables

Definition at line 790 of file function_behavior.hpp.

◆ set_unaligned_accesses()

void FunctionBehavior::set_unaligned_accesses ( bool  f)
inline

Set if LOADs or STOREs perform unaligned accesses.

Definition at line 703 of file function_behavior.hpp.

◆ SetChannelsNumber()

void FunctionBehavior::SetChannelsNumber ( unsigned int  val)

Definition at line 781 of file function_behavior.cpp.

References _channels_number.

◆ SetChannelsType()

void FunctionBehavior::SetChannelsType ( MemoryAllocation_ChannelsType  val)

Definition at line 791 of file function_behavior.cpp.

References _channels_type.

◆ SetMemoryAllocationPolicy()

void FunctionBehavior::SetMemoryAllocationPolicy ( MemoryAllocation_Policy  val)

Definition at line 801 of file function_behavior.cpp.

References _allocation_policy.

◆ UpdateBBVersion()

unsigned int FunctionBehavior::UpdateBBVersion ( )

Update the version of the basic block intermediate representation.

Returns
the new version

Definition at line 759 of file function_behavior.cpp.

References bb_version.

◆ UpdateBitValueVersion()

unsigned int FunctionBehavior::UpdateBitValueVersion ( )

Update the version of the bitvalue information.

Returns
the new version

Definition at line 770 of file function_behavior.cpp.

References bitvalue_version.

Friends And Related Function Documentation

◆ BasicBlocksCfgComputation

friend class BasicBlocksCfgComputation
friend

Definition at line 198 of file function_behavior.hpp.

◆ BasicBlocksProfiling

friend class BasicBlocksProfiling
friend

Definition at line 184 of file function_behavior.hpp.

◆ BBCdgComputation

friend class BBCdgComputation
friend

Definition at line 185 of file function_behavior.hpp.

◆ BBOrderComputation

friend class BBOrderComputation
friend

Definition at line 196 of file function_behavior.hpp.

◆ HostProfiling

friend class HostProfiling
friend

Definition at line 193 of file function_behavior.hpp.

◆ hpp_profiling

friend class hpp_profiling
friend

Definition at line 187 of file function_behavior.hpp.

◆ instr_sequences_detection

friend class instr_sequences_detection
friend

Definition at line 189 of file function_behavior.hpp.

◆ loop_regions_computation

friend struct loop_regions_computation
friend

Definition at line 190 of file function_behavior.hpp.

◆ loops_computation

friend class loops_computation
friend

Definition at line 188 of file function_behavior.hpp.

◆ LoopsProfiling

friend class LoopsProfiling
friend

Definition at line 191 of file function_behavior.hpp.

◆ OpCdgComputation

friend class OpCdgComputation
friend

Definition at line 186 of file function_behavior.hpp.

◆ operator<< [1/2]

std::ostream& operator<< ( std::ostream &  os,
const FunctionBehavior s 
)
friend

Friend definition of the << operator.

Parameters
osis the output stream

Definition at line 568 of file function_behavior.hpp.

◆ operator<< [2/2]

std::ostream& operator<< ( std::ostream &  os,
const FunctionBehaviorRef s 
)
friend

Friend definition of the << operator.

Pointer version.

Parameters
osis the output stream

Definition at line 578 of file function_behavior.hpp.

◆ OpOrderComputation

friend class OpOrderComputation
friend

Definition at line 197 of file function_behavior.hpp.

◆ probability_path

friend class probability_path
friend

Definition at line 192 of file function_behavior.hpp.

◆ read_profiling_data

friend class read_profiling_data
friend

Definition at line 194 of file function_behavior.hpp.

◆ tp_profiling

friend class tp_profiling
friend

Definition at line 195 of file function_behavior.hpp.

Field Documentation

◆ _allocation_policy

MemoryAllocation_Policy FunctionBehavior::_allocation_policy
private

Definition at line 385 of file function_behavior.hpp.

Referenced by GetMemoryAllocationPolicy(), and SetMemoryAllocationPolicy().

◆ _channels_number

unsigned int FunctionBehavior::_channels_number
private

Function scope channels number.

Definition at line 380 of file function_behavior.hpp.

Referenced by GetChannelsNumber(), and SetChannelsNumber().

◆ _channels_type

MemoryAllocation_ChannelsType FunctionBehavior::_channels_type
private

Function scope channels type.

Definition at line 383 of file function_behavior.hpp.

Referenced by GetChannelsType(), and SetChannelsType().

◆ adg

const OpGraphRef FunctionBehavior::adg
private

The anti-dependencies graph.

Definition at line 245 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ agg_virtualg

const OpGraphRef FunctionBehavior::agg_virtualg
private

Anti + Data flow graph on aggregates.

Definition at line 304 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ bb

const BBGraphRef FunctionBehavior::bb
private

The basic block CFG.

Definition at line 211 of file function_behavior.hpp.

Referenced by CGetBBGraph(), CheckFeedbackReachability(), CheckReachability(), and GetBBGraph().

◆ bb_deque_levels

std::deque<vertex> FunctionBehavior::bb_deque_levels
private

list of operations vertices sorted by topological order in control flow graph; in the sorting then part vertices come before else part ones

Definition at line 325 of file function_behavior.hpp.

Referenced by get_bb_levels().

◆ bb_graphs_collection

const BBGraphsCollectionRef FunctionBehavior::bb_graphs_collection
private

Global graph storing CFG, dominators and post-dominators. The nodes of this graph are basic blocks.

Definition at line 205 of file function_behavior.hpp.

◆ bb_lm

const level_constructorRef FunctionBehavior::bb_lm

reference to the level constructor

Definition at line 467 of file function_behavior.hpp.

◆ bb_map_levels

std::map<vertex, unsigned int> FunctionBehavior::bb_map_levels
private

Map basic block vertex to position in topological order in control flow graph; in the sorting then part vertices come before else part ones.

Definition at line 317 of file function_behavior.hpp.

Referenced by get_bb_map_levels().

◆ bb_reachability

CustomUnorderedMapStable<vertex, CustomUnorderedSet<vertex> > FunctionBehavior::bb_reachability

Mutual exclusion between basic blocks (based on control flow graph with flow edges)

Definition at line 452 of file function_behavior.hpp.

Referenced by CheckBBReachability().

◆ bb_version

unsigned int FunctionBehavior::bb_version
private

The version of basic block intermediate representation.

Definition at line 356 of file function_behavior.hpp.

Referenced by GetBBVersion(), and UpdateBBVersion().

◆ bbgc

const BasicBlocksGraphConstructorRef FunctionBehavior::bbgc

reference to the basic block graph constructor

Definition at line 461 of file function_behavior.hpp.

◆ bitvalue_version

unsigned int FunctionBehavior::bitvalue_version
private

Version of the bitvalue information.

Definition at line 359 of file function_behavior.hpp.

Referenced by GetBitValueVersion(), and UpdateBitValueVersion().

◆ cdg

const OpGraphRef FunctionBehavior::cdg
private

The control dependence graph.

Definition at line 251 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ cdg_bb

const BBGraphRef FunctionBehavior::cdg_bb
private

The control dependence graph among basic blocks.

Definition at line 218 of file function_behavior.hpp.

Referenced by CGetBBGraph(), and GetBBGraph().

◆ cfg

const OpGraphRef FunctionBehavior::cfg
private

The control flow graph.

Definition at line 236 of file function_behavior.hpp.

Referenced by CGetOpGraph(), CheckFeedbackReachability(), CheckReachability(), get_local_variables(), and GetOpGraph().

◆ deque_levels

std::deque<vertex> FunctionBehavior::deque_levels
private

list of operations vertices sorted by topological order in control flow graph; in the sorting then part vertices come before else part ones

Definition at line 321 of file function_behavior.hpp.

Referenced by get_levels().

◆ dereference_unknown_address

bool FunctionBehavior::dereference_unknown_address
private

the function dereference a pointer initialized with constant address.

Definition at line 351 of file function_behavior.hpp.

◆ dfg

const OpGraphRef FunctionBehavior::dfg
private

The data flow graph.

Definition at line 257 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ dj

const BBGraphRef FunctionBehavior::dj
private

The dj graph (used for loop computation)

Definition at line 221 of file function_behavior.hpp.

Referenced by CGetBBGraph(), and GetBBGraph().

◆ dominators

dominance<BBGraph>* FunctionBehavior::dominators

This class stores dominator information.

Definition at line 470 of file function_behavior.hpp.

Referenced by EdgeCWriter::writeRoutineInstructions(), CWriter::writeRoutineInstructions(), and ~FunctionBehavior().

◆ dt

const BBGraphRef FunctionBehavior::dt
private

The dominator tree of the CFG on basic blocks.

Definition at line 224 of file function_behavior.hpp.

Referenced by CGetBBGraph(), and GetBBGraph().

◆ dynamic_address

CustomOrderedSet<unsigned int> FunctionBehavior::dynamic_address
private

store memory objects which can be indirectly addressed through a dynamic address computation

Definition at line 334 of file function_behavior.hpp.

Referenced by add_dynamic_address(), add_parm_decl_copied(), add_parm_decl_loaded(), add_parm_decl_stored(), clean_dynamic_address(), and get_dynamic_address().

◆ extended_bb

const BBGraphRef FunctionBehavior::extended_bb
private

The basic block Control Flow Graph extended with edges that impose that basic block inside a loop are executed before what follows the loop.

Definition at line 215 of file function_behavior.hpp.

Referenced by CGetBBGraph(), and GetBBGraph().

◆ extended_cfg

const OpGraphRef FunctionBehavior::extended_cfg
private

The extended control flow graph.

Definition at line 239 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fadg

const OpGraphRef FunctionBehavior::fadg
private

The anti-dependencies graph with feedback.

Definition at line 248 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fbb

const BBGraphRef FunctionBehavior::fbb
private

The basic block CFG with feedback.

Definition at line 227 of file function_behavior.hpp.

Referenced by CGetBBGraph(), and GetBBGraph().

◆ fcdg

const OpGraphRef FunctionBehavior::fcdg
private

The control dependence graph with feedback.

Definition at line 254 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fcfg

const OpGraphRef FunctionBehavior::fcfg
private

The control flow graph with feedback.

Definition at line 242 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fdfg

const OpGraphRef FunctionBehavior::fdfg
private

The data flow graph with feedback.

Definition at line 260 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ feedback_bb_reachability

CustomUnorderedMapStable<vertex, CustomUnorderedSet<vertex> > FunctionBehavior::feedback_bb_reachability

Reachability between basic blocks based on control flow graph with feedback.

Definition at line 455 of file function_behavior.hpp.

Referenced by CheckBBFeedbackReachability().

◆ fflaoddg

const OpGraphRef FunctionBehavior::fflaoddg
private

The anti-dependence + data dependence + output dependence + flow graph with freedback.

Definition at line 275 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fflsaodg

const OpGraphRef FunctionBehavior::fflsaodg
private

The system dependence, antidependence, output dependence and flow graph with feedback;.

Definition at line 286 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ flaoddg

const OpGraphRef FunctionBehavior::flaoddg
private

The anti-dependence + data dependence + output dependence + flow graph.

Definition at line 272 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ flg

const OpGraphRef FunctionBehavior::flg
private

The flow edge operation graph.

Definition at line 263 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ flsaoddg

const OpGraphRef FunctionBehavior::flsaoddg
private

The system dependence, antidependence, output dependence, flow and debug graph.

Definition at line 282 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ flsaodg

const OpGraphRef FunctionBehavior::flsaodg
private

The system dependence, antidependence, output dependence and flow graph.

Definition at line 278 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fodg

const OpGraphRef FunctionBehavior::fodg
private

The output-dependencies flow graph with feedback.

Definition at line 269 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fsaodg

const OpGraphRef FunctionBehavior::fsaodg
private

The system dependence, antidependence and output dependence graph with feedback.

Definition at line 292 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ fsdg

const OpGraphRef FunctionBehavior::fsdg
private

The system dependence graph with feedback.

Definition at line 298 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ has_globals

bool FunctionBehavior::has_globals
private

when true at least one global variable is used

Definition at line 362 of file function_behavior.hpp.

◆ has_undefined_function_receiveing_pointers

bool FunctionBehavior::has_undefined_function_receiveing_pointers
private

function calls undefined function passing pointers

Definition at line 365 of file function_behavior.hpp.

◆ helper

const BehavioralHelperRef FunctionBehavior::helper
private

Behavioral helper associated with this behavioral_graph_manager.

Definition at line 202 of file function_behavior.hpp.

Referenced by CGetBehavioralHelper(), get_local_variables(), GetBehavioralHelper(), and print().

◆ initiation_time

int FunctionBehavior::initiation_time
private

used only for stallable pipelines

Definition at line 377 of file function_behavior.hpp.

Referenced by FunctionBehavior().

◆ lm

const level_constructorRef FunctionBehavior::lm

reference to the level constructor

Definition at line 464 of file function_behavior.hpp.

◆ loops

LoopsRef FunctionBehavior::loops
private

Loops of the function.

Definition at line 328 of file function_behavior.hpp.

Referenced by CGetLoops(), and GetLoops().

◆ map_levels

std::map<vertex, unsigned int> FunctionBehavior::map_levels
private

Map operation vertex to position in topological order in control flow graph; in the sorting then part vertices come before else part ones.

Definition at line 313 of file function_behavior.hpp.

Referenced by CheckReachability(), and get_map_levels().

◆ mem_nodeID

CustomOrderedSet<unsigned int> FunctionBehavior::mem_nodeID
private

this set represents the memory variables accessed by the function

Definition at line 331 of file function_behavior.hpp.

Referenced by add_function_mem(), clean_function_mem(), get_function_mem(), and is_variable_mem().

◆ memory_info

std::map<unsigned int, memory_accessRef> FunctionBehavior::memory_info

map between node id and the corresponding memory allocation

Definition at line 476 of file function_behavior.hpp.

◆ odg

const OpGraphRef FunctionBehavior::odg
private

The output-dependencies flow graph.

Definition at line 266 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ ogc

const operations_graph_constructorRef FunctionBehavior::ogc

reference to the operations graph constructor

Definition at line 458 of file function_behavior.hpp.

Referenced by SDCScheduling::InternalExec().

◆ op_graphs_collection

const OpGraphsCollectionRef FunctionBehavior::op_graphs_collection
private

Global graph storing CFG, DFG, FCFG, FDFG, SDG, FSDG, CDG. The nodes of this graph are operations.

Definition at line 208 of file function_behavior.hpp.

Referenced by CGetOpGraph().

◆ packed_vars

bool FunctionBehavior::packed_vars

True when there access to packed data.

Definition at line 479 of file function_behavior.hpp.

◆ parameters

const ParameterConstRef FunctionBehavior::parameters
private

The set of input parameters.

Definition at line 348 of file function_behavior.hpp.

◆ parm_decl_copied

CustomOrderedSet<unsigned int> FunctionBehavior::parm_decl_copied
private

this set represents the parameters that have to be copied from the caller

Definition at line 337 of file function_behavior.hpp.

Referenced by add_parm_decl_copied(), clean_parm_decl_copied(), and get_parm_decl_copied().

◆ parm_decl_loaded

CustomOrderedSet<unsigned int> FunctionBehavior::parm_decl_loaded
private

this set represents the actual parameters that has to be loaded into the formal parameter from the actual parameter

Definition at line 341 of file function_behavior.hpp.

Referenced by add_parm_decl_loaded(), clean_parm_decl_loaded(), and get_parm_decl_loaded().

◆ parm_decl_stored

CustomOrderedSet<unsigned int> FunctionBehavior::parm_decl_stored
private

this set represents the formal parameters that has to be stored into the formal parameter from the actual parameter

Definition at line 345 of file function_behavior.hpp.

Referenced by add_parm_decl_stored(), clean_parm_decl_stored(), and get_parm_decl_stored().

◆ pdt

const BBGraphRef FunctionBehavior::pdt
private

The post-dominator tree of the CFG on basic blocks.

Definition at line 230 of file function_behavior.hpp.

Referenced by CGetBBGraph(), and GetBBGraph().

◆ pipeline_enabled

bool FunctionBehavior::pipeline_enabled
private

true when pipelining is enabled for the function

Definition at line 371 of file function_behavior.hpp.

Referenced by FunctionBehavior().

◆ post_dominators

dominance<BBGraph>* FunctionBehavior::post_dominators

This class stores post-dominator information.

Definition at line 473 of file function_behavior.hpp.

Referenced by EdgeCWriter::writeRoutineInstructions(), CWriter::writeRoutineInstructions(), and ~FunctionBehavior().

◆ ppg

const BBGraphRef FunctionBehavior::ppg
private

The support basic block graph for path profiling.

Definition at line 233 of file function_behavior.hpp.

Referenced by CGetBBGraph(), GetBBGraph(), and set_epp().

◆ saodg

const OpGraphRef FunctionBehavior::saodg
private

The system dependence, antidependence and output dependence graph.

Definition at line 289 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ sdg

const OpGraphRef FunctionBehavior::sdg
private

The system dependence graph.

Definition at line 295 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ sg

const OpGraphRef FunctionBehavior::sg
private

The speculation graph.

Definition at line 301 of file function_behavior.hpp.

Referenced by CGetOpGraph(), and GetOpGraph().

◆ simple_pipeline

bool FunctionBehavior::simple_pipeline
private

true when the requested pipeline does not include unbounded functions

Definition at line 374 of file function_behavior.hpp.

Referenced by FunctionBehavior().

◆ state_variables

CustomOrderedSet<unsigned int> FunctionBehavior::state_variables
private

set of global variables

Definition at line 368 of file function_behavior.hpp.

◆ unaligned_accesses

bool FunctionBehavior::unaligned_accesses
private

Definition at line 353 of file function_behavior.hpp.


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

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