PandA-2024.02
Data Structures | Macros | Typedefs | Functions
op_graph.hpp File Reference

Data structures used in operations graph. More...

#include "config_HAVE_HLS_BUILT.hpp"
#include "config_HAVE_UNORDERED.hpp"
#include "cdfg_edge_info.hpp"
#include "graph.hpp"
#include "typed_node_info.hpp"
#include "function_behavior.hpp"
#include <boost/graph/graph_traits.hpp>
#include <iosfwd>
#include <limits>
#include <list>
#include <set>
#include <string>
#include "custom_map.hpp"
#include "custom_set.hpp"
#include "refcount.hpp"
#include "strong_typedef.hpp"
Include dependency graph for op_graph.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  OpNodeInfo
 Information associated with a generic operation node. More...
 
class  OpEdgeInfo
 The info associated with an edge of operation graph. More...
 
struct  OpGraphInfo
 information associated with the whole graph More...
 
class  OpVertexSorter
 
class  OpVertexSet
 A set of operation vertices. More...
 
class  OpVertexMap< value >
 Map from operation vertices to value. More...
 
class  OpEdgeSorter
 
class  OpEdgeSet
 
class  OpGraphsCollection
 This structure defines graphs where nodes are operations. More...
 
struct  OpGraph
 Class used to describe a particular graph with operations as nodes. More...
 

Macros

#define ENTRY_ID   (std::numeric_limits<unsigned int>::max())
 constant used to represent tree node index of entry operation More...
 
#define EXIT_ID   (std::numeric_limits<unsigned int>::max() - 1)
 constant used to represent tree node index of exit operation More...
 
#define ASSIGN   "ASSIGN"
 constant string identifying the operation performed by an assignment. More...
 
#define ASSERT_EXPR   "assert_expr"
 constant string identifying the operation performed by an assignment. More...
 
#define EXTRACT_BIT_EXPR   "extract_bit_expr"
 constant string identifying the operation performed by an extract_bit_expr. More...
 
#define LUT_EXPR   "lut_expr"
 constant string identifying the operation performed by an extract_bit_expr. More...
 
#define READ_COND   "READ_COND"
 constant string identifying the operation performed by a READ_COND. More...
 
#define MULTI_READ_COND   "MULTI_READ_COND"
 constant string identifying the operation performed by a MULTI_READ_COND. More...
 
#define SWITCH_COND   "SWITCH_COND"
 constant string identifying the operation performed by a SWITCH_COND. More...
 
#define GIMPLE_LABEL   "gimple_label"
 constant string identifying the operation performed by a GIMPLE_LABEL. More...
 
#define GIMPLE_GOTO   "gimple_goto"
 constant string identifying the operation performed by a GIMPLE_GOTO. More...
 
#define NOP   "NOP"
 constant string identifying a no operation. More...
 
#define GIMPLE_RETURN   "gimple_return"
 constant string identifying the operation performed by a gimple_return. More...
 
#define GIMPLE_NOP   "gimple_nop"
 constant string identifying the operation performed by a gimple_return. More...
 
#define GIMPLE_PHI   "gimple_phi"
 constant string identifying the operation performed by a gimple_phi. More...
 
#define GIMPLE_ASM   "gimple_asm"
 constant string identifying the operation performed by a gimple_asm. More...
 
#define GIMPLE_PRAGMA   "gimple_pragma"
 constant string identifying the operation performed by a GIMPLE_PRAGMA. More...
 
#define MEMCPY   "__internal_bambu_memcpy"
 constant string identifying the operation performed when two objects are memcopied. More...
 
#define MEMCMP   "memcmp"
 constant string identifying the operation performed when two objects are memcompared. More...
 
#define MEMSET   "__internal_bambu_memset"
 constant string identifying the operation performed when two objects are memsetted. More...
 
#define VECT_CONCATENATION   "VECT_CONCATENATION"
 constant string identifying the operation performed when a vector concatenation is considered. More...
 
#define ADDR_EXPR   "addr_expr"
 constant string identifying the addressing operation. More...
 
#define NOP_EXPR   "nop_expr"
 constant string identifying some conversion expressions More...
 
#define FLOAT_EXPR   "float_expr"
 constant string identifying integer to float conversions More...
 
#define FIX_TRUNC_EXPR   "fix_trunc_expr"
 constant string identifying float to integer conversions More...
 
#define CONVERT_EXPR   "convert_expr"
 constant string identifying some conversion expressions More...
 
#define VIEW_CONVERT_EXPR   "view_convert_expr"
 constant string identifying view convert expressions More...
 
#define BUILTIN_WAIT_CALL   "__builtin_wait_call"
 constant defining the builtin wait call intrinsic function More...
 
#define GET_BB_INDEX(data, vertex_index)   Cget_node_info<OpNodeInfo>(vertex_index, *(data))->bb_index
 Macro returning the index of the basic block which the node belongs to. More...
 
#define GET_CER(data, vertex_index)   Cget_node_info<OpNodeInfo>(vertex_index, *(data))->cer
 Macro returning the control equivalent region of the node. More...
 
#define DFG_SCA_SELECTOR   1 << 7
 Selectors used only in operation graphs; numbers continue from cdfg_edge_info.hpp. More...
 
#define DFG_AGG_SELECTOR   1 << 8
 Data flow graph edge selector between computed on aggregates. More...
 
#define DFG_SELECTOR   (DFG_SCA_SELECTOR | DFG_AGG_SELECTOR)
 Data flow graph edge selector. More...
 
#define FB_DFG_SCA_SELECTOR   1 << 9
 Data flow graph edge selector between computed on scalars. More...
 
#define FB_DFG_AGG_SELECTOR   1 << 10
 Data flow graph edge selector between computed on aggregates. More...
 
#define FB_DFG_SELECTOR   (FB_DFG_SCA_SELECTOR | FB_DFG_AGG_SELECTOR)
 Feedback Data flow graph edge selector. More...
 
#define FDFG_SELECTOR   (DFG_SELECTOR | FB_DFG_SELECTOR)
 Data flow graph with feedback edges. More...
 
#define ADG_SCA_SELECTOR   1 << 11
 Anti-dependence graph edge selector computed on scalar. More...
 
#define ADG_AGG_SELECTOR   1 << 12
 Anti-dependence graph edge selector computed on aggregates. More...
 
#define ADG_SELECTOR   (ADG_SCA_SELECTOR | ADG_AGG_SELECTOR)
 Anti-dependence graph edge selector. More...
 
#define FB_ADG_SCA_SELECTOR   1 << 13
 Feedback Anti-dependence graph edge selector computed on scalar. More...
 
#define FB_ADG_AGG_SELECTOR   1 << 14
 Feedback Anti-dependence graph edge selector computed on aggregates. More...
 
#define FB_ADG_SELECTOR   (FB_ADG_SCA_SELECTOR | FB_ADG_AGG_SELECTOR)
 Feedback anti-dependence graph edge selector. More...
 
#define FADG_SELECTOR   (ADG_SELECTOR | FB_ADG_SELECTOR)
 Anti-dependence graph selector with feedback edges. More...
 
#define ODG_SCA_SELECTOR   1 << 15
 Output-dependence graph edge selector computed on scalars. More...
 
#define ODG_AGG_SELECTOR   1 << 16
 Output-dependence graph edge selector computed on aggregates. More...
 
#define ODG_SELECTOR   (ODG_SCA_SELECTOR | ODG_AGG_SELECTOR)
 Output-dependence graph edge selector. More...
 
#define FB_ODG_SCA_SELECTOR   1 << 17
 Feedback Output-dependence graph edge selector computed on scalars. More...
 
#define FB_ODG_AGG_SELECTOR   1 << 18
 Feedback Output-dependence graph edge selector computed on aggregates. More...
 
#define FB_ODG_SELECTOR   (FB_ODG_SCA_SELECTOR | FB_ODG_AGG_SELECTOR)
 Feedback Output-dependence graph edge selector. More...
 
#define FODG_SELECTOR   (ODG_SELECTOR | FB_ODG_SELECTOR)
 Output-dependence graph selector with feedback edges. More...
 
#define SDG_SELECTOR   (CDG_SELECTOR | DFG_SELECTOR)
 Control and Data dependence graph edge selector. More...
 
#define FSDG_SELECTOR   (FCDG_SELECTOR | FDFG_SELECTOR)
 Control and Data dependence graph and dependence edge selector. More...
 
#define RSDG_SELECTOR   (TRED_SELECTOR)
 Reducted sdg with feedback edges. More...
 
#define FSADG_SELECTOR   (CDG_SELECTOR | DFG_SELECTOR | ADG_SELECTOR | FB_CDG_SELECTOR | FB_DFG_SELECTOR | FB_ADG_SELECTOR)
 Control and Data dependence and antidependence graph edge selector with feedback edges. More...
 
#define SAODG_SELECTOR   (CDG_SELECTOR | DFG_SELECTOR | ADG_SELECTOR | ODG_SELECTOR)
 Control and Data dependence and antidependence graph edge selector. More...
 
#define FADFG_SELECTOR   (DFG_SELECTOR | ADG_SELECTOR)
 data dependence antidependence and feedback graph edge selector More...
 
#define CSG_SELECTOR   1 << 19
 Control edge in a speculation graph. More...
 
#define SG_SELECTOR   (CSG_SELECTOR | DFG_SELECTOR | ADG_SELECTOR | ODG_SELECTOR | FLG_SELECTOR)
 Speculation graph. More...
 
#define RPDG_SELECTOR   1 << 20
 Reduced PDG edge selector. More...
 
#define FLG_SELECTOR   1 << 21
 Flow edge selector. More...
 
#define FB_FLG_SELECTOR   1 << 22
 Feedback flow edge selector. More...
 
#define DEBUG_SELECTOR   1 << 23
 Debug selector. More...
 
Node name and type definition for the cdfg node.
#define TYPE_OPAQUE   1 << 0
 constant identifying a node of opaque type More...
 
#define TYPE_EXTERNAL   1 << 4
 constant identifying the node type of a EXTERNAL operation (a function call) More...
 
#define TYPE_IF   1 << 5
 constant identifying the node type of an IF operation. More...
 
#define TYPE_SWITCH   1 << 6
 constant identifying the node type of a SWITCH operation. More...
 
#define TYPE_WHILE   1 << 7
 constant string identifying the node type of an WHILE operation. More...
 
#define TYPE_FOR   1 << 8
 constant string identifying the node type of an WHILE operation. More...
 
#define TYPE_DO   1 << 9
 constant string identifying the node type of an DO operation. More...
 
#define TYPE_ASSIGN   1 << 10
 constant string identifying the node type of an ASSIGN operation. More...
 
#define TYPE_NOP   1 << 11
 constant string identifying a type for a no operation. More...
 
#define TYPE_PHI   1 << 12
 constant string identifying an operation node of type PHI More...
 
#define TYPE_RET   1 << 13
 constant string identifying an operation node of type return expr More...
 
#define TYPE_TO_BE_REMOVED   1 << 14
 Constant string identifying an operation that has to be removed. More...
 
#define TYPE_LABEL   1 << 15
 A vertex is of type TYPE_LABEL when it is a target of a goto expression. More...
 
#define TYPE_GOTO   1 << 16
 A vertex is of type TYPE_GOTO when it is associated with a goto expression. More...
 
#define TYPE_VPHI   1 << 17
 constant string identifying an operation node of type virtual phi-nodes More...
 
#define TYPE_INIT   1 << 18
 Constant string identifying an operation that is a variable initialization. More...
 
#define TYPE_LOAD   1 << 19
 Constant string identifying a memory load operation. More...
 
#define TYPE_STORE   1 << 20
 Constant string identifying a memory store operation. More...
 
#define TYPE_MEMCPY   1 << 21
 A vertex is of type TYPE_MEMCPY when it is associated with a assignment between struct/union. More...
 
#define TYPE_WAS_GIMPLE_PHI   1 << 22
 A vertex is of type TYPE_WAS_GIMPLE_PHI when it is comes from a split of phi nodes. More...
 
#define TYPE_FIRST_OP   1 << 23
 A vertex of type FIRST_OP if it is the first operation of the application. More...
 
#define TYPE_LAST_OP   1 << 24
 A vertex of type LAST_OP if it is the last operation of the application. More...
 
#define TYPE_MULTIIF   1 << 25
 constant identifying the a multi-way if More...
 
#define TYPE_ATOMIC   1 << 26
 Constant identifying an atomic operation. More...
 
#define TYPE_PREDICATED   1 << 27
 Constant identifying a predicated operation. More...
 
#define TYPE_RW   1 << 28
 Constant identifying if a TYPE_EXTERNAL write or read memory. More...
 

Typedefs

using OpNodeInfoRef = refcount< OpNodeInfo >
 
using OpNodeInfoConstRef = refcount< const OpNodeInfo >
 
using OpEdgeInfoRef = refcount< OpEdgeInfo >
 Refcount definition for OpEdgeInfo. More...
 
using OpEdgeInfoConstRef = refcount< const OpEdgeInfo >
 
using OpGraphInfoRef = refcount< OpGraphInfo >
 Refcount definition for OpGraphInfo. More...
 
using OpGraphInfoConstRef = refcount< const OpGraphInfo >
 
using OpGraphsCollectionRef = refcount< OpGraphsCollection >
 Refcount definition for OpGraphsCollectionRef. More...
 
using OpGraphRef = refcount< OpGraph >
 refcount definition of the class More...
 
using OpGraphConstRef = refcount< const OpGraph >
 

Functions

 CONSTREF_FORWARD_DECL (BehavioralHelper)
 Autoheader include. More...
 
 CONSTREF_FORWARD_DECL (hls)
 
 UINT_STRONG_TYPEDEF (MemoryAddress)
 

Detailed Description

Data structures used in operations graph.

Author
Marco Lattuada lattu.nosp@m.ada@.nosp@m.elet..nosp@m.poli.nosp@m.mi.it
Fabrizio Ferrandi fabri.nosp@m.zio..nosp@m.ferra.nosp@m.ndi@.nosp@m.polim.nosp@m.i.it $Revision$ $Date$ Last modified by $Author$

Definition in file op_graph.hpp.

Macro Definition Documentation

◆ ADDR_EXPR

#define ADDR_EXPR   "addr_expr"

constant string identifying the addressing operation.

Definition at line 330 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ ADG_AGG_SELECTOR

#define ADG_AGG_SELECTOR   1 << 12

◆ ADG_SCA_SELECTOR

#define ADG_SCA_SELECTOR   1 << 11

Anti-dependence graph edge selector computed on scalar.

Definition at line 462 of file op_graph.hpp.

Referenced by ScalarSsaDataDependenceComputation::Initialize(), and DataDependenceComputation::InternalExec().

◆ ADG_SELECTOR

#define ADG_SELECTOR   (ADG_SCA_SELECTOR | ADG_AGG_SELECTOR)

Anti-dependence graph edge selector.

Definition at line 466 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), DataDependenceComputation::Computedependencies(), and OpEdgeWriter::operator()().

◆ ASSERT_EXPR

#define ASSERT_EXPR   "assert_expr"

constant string identifying the operation performed by an assignment.

Definition at line 240 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ ASSIGN

#define ASSIGN   "ASSIGN"

◆ BUILTIN_WAIT_CALL

#define BUILTIN_WAIT_CALL   "__builtin_wait_call"

◆ CONVERT_EXPR

#define CONVERT_EXPR   "convert_expr"

constant string identifying some conversion expressions

Definition at line 350 of file op_graph.hpp.

Referenced by allocation::InternalExec(), and BB_based_stg::is_instantaneous_operation().

◆ CSG_SELECTOR

#define CSG_SELECTOR   1 << 19

Control edge in a speculation graph.

Definition at line 507 of file op_graph.hpp.

Referenced by OpEdgeWriter::operator()().

◆ DEBUG_SELECTOR

#define DEBUG_SELECTOR   1 << 23

◆ DFG_AGG_SELECTOR

#define DFG_AGG_SELECTOR   1 << 8

◆ DFG_SCA_SELECTOR

#define DFG_SCA_SELECTOR   1 << 7

Selectors used only in operation graphs; numbers continue from cdfg_edge_info.hpp.

Data flow graph edge selector between computed on scalars

Definition at line 447 of file op_graph.hpp.

Referenced by estimate_muxes(), ScalarSsaDataDependenceComputation::Initialize(), DataDependenceComputation::InternalExec(), cdfc_module_binding::InternalExec(), OpEdgeWriter::operator()(), and cdfc_module_binding::update_slack_starting_time().

◆ DFG_SELECTOR

#define DFG_SELECTOR   (DFG_SCA_SELECTOR | DFG_AGG_SELECTOR)

Data flow graph edge selector.

Definition at line 451 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), DataDependenceComputation::Computedependencies(), and OpEdgeWriter::operator()().

◆ ENTRY_ID

#define ENTRY_ID   (std::numeric_limits<unsigned int>::max())

constant used to represent tree node index of entry operation

Definition at line 79 of file op_graph.hpp.

Referenced by operations_graph_constructor::AddOperation(), AllocationInformation::can_implement_set(), AllocationInformation::CanBeChained(), AllocationInformation::CanBeMerged(), Schedule::CanBeMoved(), BehavioralHelper::CanBeMoved(), BehavioralHelper::CanBeSpeculated(), AllocationInformation::CanImplementSetNotEmpty(), Schedule::ComputeCriticalPath(), VcdSignalSelection::DetectInvalidReturns(), AllocationInformation::get_attribute_of_fu_per_op(), Schedule::get_cstep(), Schedule::get_cstep_end(), AllocationInformation::get_cycles(), AllocationInformation::get_execution_time(), AllocationInformation::get_initiation_time(), AllocationInformation::get_stage_period(), AllocationInformation::GetConnectionTime(), AllocationInformation::GetCycleLatency(), Schedule::GetEndingTime(), OpNodeInfo::GetNodeId(), AllocationInformation::GetPhiConnectionLatency(), Schedule::GetStartingTime(), AllocationInformation::GetTimeLatency(), AllocationInformation::GetToDspRegisterDelay(), easy_module_binding::InternalExec(), allocation::InternalExec(), AllocationInformation::is_vertex_bounded_with(), AllocationInformation::IsVariableExecutionTime(), AllocationInformation::max_number_of_resources(), AllocationInformation::min_number_of_resources(), AllocationInformation::print_allocated_resources(), VcdSignalSelection::PropagateAddrParamToSsa(), VcdSignalSelection::SelectInitialSsa(), VcdSignalSelection::SelectInternalSignals(), Schedule::UpdateTime(), DiscrepancyAnalysisCWriter::writePostInstructionInfo(), and DiscrepancyAnalysisCWriter::writePreInstructionInfo().

◆ EXIT_ID

#define EXIT_ID   (std::numeric_limits<unsigned int>::max() - 1)

constant used to represent tree node index of exit operation

Definition at line 81 of file op_graph.hpp.

Referenced by operations_graph_constructor::AddOperation(), AllocationInformation::can_implement_set(), AllocationInformation::CanBeChained(), AllocationInformation::CanBeMerged(), Schedule::CanBeMoved(), BehavioralHelper::CanBeMoved(), BehavioralHelper::CanBeSpeculated(), AllocationInformation::CanImplementSetNotEmpty(), Schedule::ComputeCriticalPath(), VcdSignalSelection::DetectInvalidReturns(), AllocationInformation::get_attribute_of_fu_per_op(), Schedule::get_cstep(), Schedule::get_cstep_end(), AllocationInformation::get_cycles(), AllocationInformation::get_execution_time(), AllocationInformation::get_initiation_time(), AllocationInformation::get_stage_period(), AllocationInformation::GetConnectionTime(), AllocationInformation::GetCycleLatency(), Schedule::GetEndingTime(), OpNodeInfo::GetNodeId(), AllocationInformation::GetPhiConnectionLatency(), Schedule::GetStartingTime(), AllocationInformation::GetTimeLatency(), AllocationInformation::GetToDspRegisterDelay(), easy_module_binding::InternalExec(), allocation::InternalExec(), AllocationInformation::is_vertex_bounded_with(), AllocationInformation::IsVariableExecutionTime(), AllocationInformation::max_number_of_resources(), AllocationInformation::min_number_of_resources(), AllocationInformation::print_allocated_resources(), VcdSignalSelection::PropagateAddrParamToSsa(), VcdSignalSelection::SelectInitialSsa(), VcdSignalSelection::SelectInternalSignals(), Schedule::UpdateTime(), DiscrepancyAnalysisCWriter::writePostInstructionInfo(), and DiscrepancyAnalysisCWriter::writePreInstructionInfo().

◆ EXTRACT_BIT_EXPR

#define EXTRACT_BIT_EXPR   "extract_bit_expr"

constant string identifying the operation performed by an extract_bit_expr.

Definition at line 245 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ FADFG_SELECTOR

#define FADFG_SELECTOR   (DFG_SELECTOR | ADG_SELECTOR)

data dependence antidependence and feedback graph edge selector

Definition at line 504 of file op_graph.hpp.

◆ FADG_SELECTOR

#define FADG_SELECTOR   (ADG_SELECTOR | FB_ADG_SELECTOR)

Anti-dependence graph selector with feedback edges.

Definition at line 474 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), and OpEdgeWriter::operator()().

◆ FB_ADG_AGG_SELECTOR

#define FB_ADG_AGG_SELECTOR   1 << 14

Feedback Anti-dependence graph edge selector computed on aggregates.

Definition at line 470 of file op_graph.hpp.

Referenced by VirtualAggregateDataFlowAnalysis::Initialize(), and DataDependenceComputation::InternalExec().

◆ FB_ADG_SCA_SELECTOR

#define FB_ADG_SCA_SELECTOR   1 << 13

Feedback Anti-dependence graph edge selector computed on scalar.

Definition at line 468 of file op_graph.hpp.

Referenced by ScalarSsaDataDependenceComputation::Initialize(), and DataDependenceComputation::InternalExec().

◆ FB_ADG_SELECTOR

#define FB_ADG_SELECTOR   (FB_ADG_SCA_SELECTOR | FB_ADG_AGG_SELECTOR)

Feedback anti-dependence graph edge selector.

Definition at line 472 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), and OpEdgeWriter::operator()().

◆ FB_DFG_AGG_SELECTOR

#define FB_DFG_AGG_SELECTOR   1 << 10

Data flow graph edge selector between computed on aggregates.

Definition at line 455 of file op_graph.hpp.

Referenced by VirtualAggregateDataFlowAnalysis::Initialize(), and DataDependenceComputation::InternalExec().

◆ FB_DFG_SCA_SELECTOR

#define FB_DFG_SCA_SELECTOR   1 << 9

Data flow graph edge selector between computed on scalars.

Definition at line 453 of file op_graph.hpp.

Referenced by estimate_muxes(), ScalarSsaDataDependenceComputation::Initialize(), and DataDependenceComputation::InternalExec().

◆ FB_DFG_SELECTOR

#define FB_DFG_SELECTOR   (FB_DFG_SCA_SELECTOR | FB_DFG_AGG_SELECTOR)

Feedback Data flow graph edge selector.

Definition at line 457 of file op_graph.hpp.

Referenced by OpEdgeWriter::operator()().

◆ FB_FLG_SELECTOR

#define FB_FLG_SELECTOR   1 << 22

Feedback flow edge selector.

Definition at line 518 of file op_graph.hpp.

Referenced by AddOpLoopFlowEdges::InternalExec(), and OpEdgeWriter::operator()().

◆ FB_ODG_AGG_SELECTOR

#define FB_ODG_AGG_SELECTOR   1 << 18

Feedback Output-dependence graph edge selector computed on aggregates.

Definition at line 485 of file op_graph.hpp.

Referenced by DataDependenceComputation::Computedependencies(), and VirtualAggregateDataFlowAnalysis::Initialize().

◆ FB_ODG_SCA_SELECTOR

#define FB_ODG_SCA_SELECTOR   1 << 17

Feedback Output-dependence graph edge selector computed on scalars.

Definition at line 483 of file op_graph.hpp.

Referenced by ScalarSsaDataDependenceComputation::Initialize().

◆ FB_ODG_SELECTOR

#define FB_ODG_SELECTOR   (FB_ODG_SCA_SELECTOR | FB_ODG_AGG_SELECTOR)

Feedback Output-dependence graph edge selector.

Definition at line 487 of file op_graph.hpp.

Referenced by OpEdgeWriter::operator()().

◆ FDFG_SELECTOR

#define FDFG_SELECTOR   (DFG_SELECTOR | FB_DFG_SELECTOR)

Data flow graph with feedback edges.

Definition at line 459 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), and OpEdgeWriter::operator()().

◆ FIX_TRUNC_EXPR

#define FIX_TRUNC_EXPR   "fix_trunc_expr"

constant string identifying float to integer conversions

Definition at line 345 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive().

◆ FLG_SELECTOR

#define FLG_SELECTOR   1 << 21

◆ FLOAT_EXPR

#define FLOAT_EXPR   "float_expr"

constant string identifying integer to float conversions

Definition at line 340 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), and fu_binding::specialise_fu().

◆ FODG_SELECTOR

#define FODG_SELECTOR   (ODG_SELECTOR | FB_ODG_SELECTOR)

Output-dependence graph selector with feedback edges.

Definition at line 489 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), and OpEdgeWriter::operator()().

◆ FSADG_SELECTOR

Control and Data dependence and antidependence graph edge selector with feedback edges.

Definition at line 499 of file op_graph.hpp.

◆ FSDG_SELECTOR

#define FSDG_SELECTOR   (FCDG_SELECTOR | FDFG_SELECTOR)

Control and Data dependence graph and dependence edge selector.

Definition at line 494 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph().

◆ GET_BB_INDEX

#define GET_BB_INDEX (   data,
  vertex_index 
)    Cget_node_info<OpNodeInfo>(vertex_index, *(data))->bb_index

Macro returning the index of the basic block which the node belongs to.

Parameters
vertex_indexis the index of the cdfg node.

Definition at line 435 of file op_graph.hpp.

Referenced by liveness::are_in_conflict(), and get_bb_index_from_state_info().

◆ GET_CER

#define GET_CER (   data,
  vertex_index 
)    Cget_node_info<OpNodeInfo>(vertex_index, *(data))->cer

Macro returning the control equivalent region of the node.

Parameters
var_indexis the NodeID of the variable

Definition at line 441 of file op_graph.hpp.

◆ GIMPLE_ASM

#define GIMPLE_ASM   "gimple_asm"

constant string identifying the operation performed by a gimple_asm.

Definition at line 300 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ GIMPLE_GOTO

#define GIMPLE_GOTO   "gimple_goto"

constant string identifying the operation performed by a GIMPLE_GOTO.

Definition at line 275 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ GIMPLE_LABEL

#define GIMPLE_LABEL   "gimple_label"

constant string identifying the operation performed by a GIMPLE_LABEL.

Definition at line 270 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ GIMPLE_NOP

#define GIMPLE_NOP   "gimple_nop"

constant string identifying the operation performed by a gimple_return.

Definition at line 290 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ GIMPLE_PHI

#define GIMPLE_PHI   "gimple_phi"

constant string identifying the operation performed by a gimple_phi.

Definition at line 295 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ GIMPLE_PRAGMA

#define GIMPLE_PRAGMA   "gimple_pragma"

constant string identifying the operation performed by a GIMPLE_PRAGMA.

Definition at line 305 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ GIMPLE_RETURN

#define GIMPLE_RETURN   "gimple_return"

constant string identifying the operation performed by a gimple_return.

Definition at line 285 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ LUT_EXPR

#define LUT_EXPR   "lut_expr"

constant string identifying the operation performed by an extract_bit_expr.

Definition at line 250 of file op_graph.hpp.

Referenced by allocation::InternalExec().

◆ MEMCMP

#define MEMCMP   "memcmp"

constant string identifying the operation performed when two objects are memcompared.

Definition at line 315 of file op_graph.hpp.

Referenced by memory_allocation::finalize_memory_allocation(), and mem_dominator_allocation::InternalExec().

◆ MEMCPY

#define MEMCPY   "__internal_bambu_memcpy"

◆ MEMSET

#define MEMSET   "__internal_bambu_memset"

◆ MULTI_READ_COND

#define MULTI_READ_COND   "MULTI_READ_COND"

constant string identifying the operation performed by a MULTI_READ_COND.

Definition at line 260 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), mux_connection_binding::create_connections(), and allocation::InternalExec().

◆ NOP

#define NOP   "NOP"

constant string identifying a no operation.

Only used for operations associated with empty basic blocks.

Definition at line 280 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), OpNodeInfo::GetOperation(), and allocation::InternalExec().

◆ NOP_EXPR

#define NOP_EXPR   "nop_expr"

constant string identifying some conversion expressions

Definition at line 335 of file op_graph.hpp.

Referenced by allocation::InternalExec(), and BB_based_stg::is_instantaneous_operation().

◆ ODG_AGG_SELECTOR

#define ODG_AGG_SELECTOR   1 << 16

Output-dependence graph edge selector computed on aggregates.

Definition at line 479 of file op_graph.hpp.

Referenced by DataDependenceComputation::Computedependencies(), and VirtualAggregateDataFlowAnalysis::Initialize().

◆ ODG_SCA_SELECTOR

#define ODG_SCA_SELECTOR   1 << 15

Output-dependence graph edge selector computed on scalars.

Definition at line 477 of file op_graph.hpp.

Referenced by ScalarSsaDataDependenceComputation::Initialize().

◆ ODG_SELECTOR

#define ODG_SELECTOR   (ODG_SCA_SELECTOR | ODG_AGG_SELECTOR)

Output-dependence graph edge selector.

Definition at line 481 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph(), DataDependenceComputation::Computedependencies(), and OpEdgeWriter::operator()().

◆ READ_COND

#define READ_COND   "READ_COND"

constant string identifying the operation performed by a READ_COND.

Definition at line 255 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), and allocation::InternalExec().

◆ RPDG_SELECTOR

#define RPDG_SELECTOR   1 << 20

Reduced PDG edge selector.

Definition at line 512 of file op_graph.hpp.

◆ RSDG_SELECTOR

#define RSDG_SELECTOR   (TRED_SELECTOR)

Reducted sdg with feedback edges.

Definition at line 496 of file op_graph.hpp.

◆ SAODG_SELECTOR

#define SAODG_SELECTOR   (CDG_SELECTOR | DFG_SELECTOR | ADG_SELECTOR | ODG_SELECTOR)

Control and Data dependence and antidependence graph edge selector.

Definition at line 502 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph().

◆ SDG_SELECTOR

#define SDG_SELECTOR   (CDG_SELECTOR | DFG_SELECTOR)

Control and Data dependence graph edge selector.

Definition at line 492 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph().

◆ SG_SELECTOR

#define SG_SELECTOR   (CSG_SELECTOR | DFG_SELECTOR | ADG_SELECTOR | ODG_SELECTOR | FLG_SELECTOR)

Speculation graph.

Definition at line 509 of file op_graph.hpp.

Referenced by FunctionBehavior::CGetOpGraph().

◆ SWITCH_COND

#define SWITCH_COND   "SWITCH_COND"

constant string identifying the operation performed by a SWITCH_COND.

Definition at line 265 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), and allocation::InternalExec().

◆ TYPE_ASSIGN

#define TYPE_ASSIGN   1 << 10

constant string identifying the node type of an ASSIGN operation.

Definition at line 125 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), and OpWriter::operator()().

◆ TYPE_ATOMIC

#define TYPE_ATOMIC   1 << 26

Constant identifying an atomic operation.

Definition at line 207 of file op_graph.hpp.

Referenced by ParallelMemoryFuBinding::add_to_SM(), and operations_cfg_computation::build_operation_recursive().

◆ TYPE_DO

#define TYPE_DO   1 << 9

constant string identifying the node type of an DO operation.

Definition at line 120 of file op_graph.hpp.

◆ TYPE_EXTERNAL

#define TYPE_EXTERNAL   1 << 4

◆ TYPE_FIRST_OP

#define TYPE_FIRST_OP   1 << 23

A vertex of type FIRST_OP if it is the first operation of the application.

Definition at line 192 of file op_graph.hpp.

Referenced by operations_cfg_computation::connect_start_nodes().

◆ TYPE_FOR

#define TYPE_FOR   1 << 8

◆ TYPE_GOTO

#define TYPE_GOTO   1 << 16

A vertex is of type TYPE_GOTO when it is associated with a goto expression.

Mainly used in loops and in computed goto expressions.

Definition at line 157 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::exec(), BB_based_stg::InternalExec(), cdfc_module_binding::InternalExec(), and OpWriter::operator()().

◆ TYPE_IF

#define TYPE_IF   1 << 5

◆ TYPE_INIT

#define TYPE_INIT   1 << 18

Constant string identifying an operation that is a variable initialization.

Definition at line 167 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().

◆ TYPE_LABEL

#define TYPE_LABEL   1 << 15

A vertex is of type TYPE_LABEL when it is a target of a goto expression.

Used to define the first vertex of a basic block header of a loop.

Definition at line 151 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), SDCScheduling::InternalExec(), cdfc_module_binding::InternalExec(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().

◆ TYPE_LAST_OP

#define TYPE_LAST_OP   1 << 24

◆ TYPE_LOAD

#define TYPE_LOAD   1 << 19

◆ TYPE_MEMCPY

#define TYPE_MEMCPY   1 << 21

A vertex is of type TYPE_MEMCPY when it is associated with a assignment between struct/union.

Definition at line 182 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), allocation::InternalExec(), and OpWriter::operator()().

◆ TYPE_MULTIIF

#define TYPE_MULTIIF   1 << 25

◆ TYPE_NOP

#define TYPE_NOP   1 << 11

constant string identifying a type for a no operation.

Only used for operations associated with empty basic blocks.

Definition at line 130 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive(), and FSM_NI_SSA_liveness::InternalExec().

◆ TYPE_OPAQUE

#define TYPE_OPAQUE   1 << 0

constant identifying a node of opaque type

Definition at line 90 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive().

◆ TYPE_PHI

#define TYPE_PHI   1 << 12

◆ TYPE_PREDICATED

#define TYPE_PREDICATED   1 << 27

Constant identifying a predicated operation.

Definition at line 212 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive().

◆ TYPE_RET

#define TYPE_RET   1 << 13

◆ TYPE_RW

#define TYPE_RW   1 << 28

◆ TYPE_STORE

#define TYPE_STORE   1 << 20

◆ TYPE_SWITCH

#define TYPE_SWITCH   1 << 6

◆ TYPE_TO_BE_REMOVED

#define TYPE_TO_BE_REMOVED   1 << 14

Constant string identifying an operation that has to be removed.

Definition at line 145 of file op_graph.hpp.

◆ TYPE_VPHI

#define TYPE_VPHI   1 << 17

◆ TYPE_WAS_GIMPLE_PHI

#define TYPE_WAS_GIMPLE_PHI   1 << 22

A vertex is of type TYPE_WAS_GIMPLE_PHI when it is comes from a split of phi nodes.

Definition at line 187 of file op_graph.hpp.

◆ TYPE_WHILE

#define TYPE_WHILE   1 << 7

◆ VECT_CONCATENATION

#define VECT_CONCATENATION   "VECT_CONCATENATION"

constant string identifying the operation performed when a vector concatenation is considered.

Definition at line 325 of file op_graph.hpp.

Referenced by operations_cfg_computation::build_operation_recursive().

◆ VIEW_CONVERT_EXPR

#define VIEW_CONVERT_EXPR   "view_convert_expr"

constant string identifying view convert expressions

Definition at line 355 of file op_graph.hpp.

Referenced by allocation::InternalExec(), and BB_based_stg::is_instantaneous_operation().

Typedef Documentation

◆ OpEdgeInfoConstRef

Definition at line 551 of file op_graph.hpp.

◆ OpEdgeInfoRef

Refcount definition for OpEdgeInfo.

Definition at line 550 of file op_graph.hpp.

◆ OpGraphConstRef

Definition at line 923 of file op_graph.hpp.

◆ OpGraphInfoConstRef

Definition at line 589 of file op_graph.hpp.

◆ OpGraphInfoRef

Refcount definition for OpGraphInfo.

Definition at line 588 of file op_graph.hpp.

◆ OpGraphRef

refcount definition of the class

Definition at line 922 of file op_graph.hpp.

◆ OpGraphsCollectionRef

Refcount definition for OpGraphsCollectionRef.

Definition at line 778 of file op_graph.hpp.

◆ OpNodeInfoConstRef

Definition at line 429 of file op_graph.hpp.

◆ OpNodeInfoRef

Definition at line 428 of file op_graph.hpp.

Function Documentation

◆ CONSTREF_FORWARD_DECL() [1/2]

CONSTREF_FORWARD_DECL ( BehavioralHelper  )

Autoheader include.

Superclasses include behavior include utility includes

◆ CONSTREF_FORWARD_DECL() [2/2]

CONSTREF_FORWARD_DECL ( hls  )

◆ UINT_STRONG_TYPEDEF()

UINT_STRONG_TYPEDEF ( MemoryAddress  )

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