PandA-2024.02
|
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"
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) | |
Data structures used in operations graph.
Definition in file op_graph.hpp.
#define ADDR_EXPR "addr_expr" |
constant string identifying the addressing operation.
Definition at line 330 of file op_graph.hpp.
Referenced by allocation::InternalExec().
#define ADG_AGG_SELECTOR 1 << 12 |
Anti-dependence graph edge selector computed on aggregates.
Definition at line 464 of file op_graph.hpp.
Referenced by FunctionBehavior::CGetOpGraph(), DataDependenceComputation::do_dependence_reduction(), VirtualAggregateDataFlowAnalysis::Initialize(), and DataDependenceComputation::InternalExec().
#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().
#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()().
#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().
#define ASSIGN "ASSIGN" |
constant string identifying the operation performed by an assignment.
Definition at line 224 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), RTLCharacterization::fix_execution_time_std(), RTLCharacterization::fix_muxes(), allocation::InternalExec(), and BB_based_stg::is_instantaneous_operation().
#define BUILTIN_WAIT_CALL "__builtin_wait_call" |
constant defining the builtin wait call intrinsic function
Definition at line 358 of file op_graph.hpp.
Referenced by fu_binding::add_to_SM(), CallGraphManager::AddFunctionAndCallPoint(), determine_memory_accesses::analyze_node(), HWCallInjection::buildBuiltinCall(), VcdSignalSelection::CrossPropagateAddrSsa(), mem_dominator_allocation::InternalExec(), CallGraphBuiltinCall::lookForBuiltinCall(), soft_float_cg_ext::RecursiveExaminate(), CallGraphManager::RemoveCallPoint(), bloc::RemoveStmt(), fu_binding::specialise_fu(), CWriter::WriteBuiltinWaitCall(), CWriter::WriteGlobalDeclarations(), and DiscrepancyAnalysisCWriter::writePreInstructionInfo().
#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().
#define CSG_SELECTOR 1 << 19 |
Control edge in a speculation graph.
Definition at line 507 of file op_graph.hpp.
Referenced by OpEdgeWriter::operator()().
#define DEBUG_SELECTOR 1 << 23 |
Debug selector.
Definition at line 521 of file op_graph.hpp.
Referenced by SDCScheduling::AddDelayConstraints(), FunctionBehavior::CGetOpGraph(), SDCScheduling::InternalExec(), and OpEdgeWriter::operator()().
#define DFG_AGG_SELECTOR 1 << 8 |
Data flow graph edge selector between computed on aggregates.
Definition at line 449 of file op_graph.hpp.
Referenced by FunctionBehavior::CGetOpGraph(), DataDependenceComputation::do_dependence_reduction(), VirtualAggregateDataFlowAnalysis::Initialize(), DataDependenceComputation::InternalExec(), and OpEdgeWriter::operator()().
#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().
#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()().
#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().
#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().
#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().
#define FADFG_SELECTOR (DFG_SELECTOR | ADG_SELECTOR) |
data dependence antidependence and feedback graph edge selector
Definition at line 504 of file op_graph.hpp.
#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()().
#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().
#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().
#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()().
#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().
#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().
#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()().
#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()().
#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().
#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().
#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()().
#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()().
#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().
#define FLG_SELECTOR 1 << 21 |
Flow edge selector.
Definition at line 515 of file op_graph.hpp.
Referenced by FunctionBehavior::CGetOpGraph(), OpEdgeInfo::FlgEdgeF(), OpEdgeInfo::FlgEdgeT(), AddOpPhiFlowEdges::Initialize(), AddOpExitFlowEdges::Initialize(), AddOpLoopFlowEdges::Initialize(), AddArtificialCallFlowEdges::InternalExec(), AddOpPhiFlowEdges::InternalExec(), AddOpLoopFlowEdges::InternalExec(), AddOpExitFlowEdges::InternalExec(), and OpEdgeWriter::operator()().
#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().
#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()().
#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.
Definition at line 499 of file op_graph.hpp.
#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().
#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.
vertex_index | is 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().
#define GET_CER | ( | data, | |
vertex_index | |||
) | Cget_node_info<OpNodeInfo>(vertex_index, *(data))->cer |
Macro returning the control equivalent region of the node.
var_index | is the NodeID of the variable |
Definition at line 441 of file op_graph.hpp.
#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().
#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().
#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().
#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().
#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().
#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().
#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().
#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().
#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().
#define MEMCPY "__internal_bambu_memcpy" |
constant string identifying the operation performed when two objects are memcopied.
Definition at line 310 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), HLS_step::ComputeRelationships(), VcdSignalSelection::CrossPropagateAddrSsa(), memory_allocation::finalize_memory_allocation(), Bit_Value::initialize(), FixStructsPassedByValue::InternalExec(), mem_dominator_allocation::InternalExec(), compute_implicit_calls::InternalExec(), soft_float_cg_ext::RecursiveExaminate(), and compute_implicit_calls::replace_with_memcpy().
#define MEMSET "__internal_bambu_memset" |
constant string identifying the operation performed when two objects are memsetted.
Definition at line 320 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), memory_allocation::finalize_memory_allocation(), mem_dominator_allocation::InternalExec(), compute_implicit_calls::InternalExec(), soft_float_cg_ext::RecursiveExaminate(), and compute_implicit_calls::replace_with_memset().
#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().
#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().
#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().
#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().
#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().
#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()().
#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().
#define RPDG_SELECTOR 1 << 20 |
Reduced PDG edge selector.
Definition at line 512 of file op_graph.hpp.
#define RSDG_SELECTOR (TRED_SELECTOR) |
Reducted sdg with feedback edges.
Definition at line 496 of file op_graph.hpp.
#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().
#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().
#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().
#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().
#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()().
#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().
#define TYPE_DO 1 << 9 |
constant string identifying the node type of an DO operation.
Definition at line 120 of file op_graph.hpp.
#define TYPE_EXTERNAL 1 << 4 |
constant identifying the node type of a EXTERNAL operation (a function call)
Definition at line 95 of file op_graph.hpp.
Referenced by conn_binding::add_command_ports(), operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::CheckSchedulabilityConditions(), parametric_list_based::exec(), pipeline_controller::InternalExec(), SDCScheduling::InternalExec(), OpWriter::operator()(), and BB_based_stg::optimize_cycles().
#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().
#define TYPE_FOR 1 << 8 |
constant string identifying the node type of an WHILE operation.
Definition at line 115 of file op_graph.hpp.
Referenced by ASLAP::ASLAP(), operations_cfg_computation::build_operation_recursive(), parametric_list_based::exec(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
#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()().
#define TYPE_IF 1 << 5 |
constant identifying the node type of an IF operation.
Definition at line 100 of file op_graph.hpp.
Referenced by ASLAP::ASLAP(), operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::create_connections(), parametric_list_based::exec(), SDCScheduling::InternalExec(), OpWriter::operator()(), BB_based_stg::optimize_cycles(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
#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().
#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().
#define TYPE_LAST_OP 1 << 24 |
A vertex of type LAST_OP if it is the last operation of the application.
Definition at line 197 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), AddOpExitFlowEdges::Initialize(), AddOpExitFlowEdges::InternalExec(), operations_cfg_computation::InternalExec(), SDCScheduling::InternalExec(), and EdgeCWriter::writeRoutineInstructions_rec().
#define TYPE_LOAD 1 << 19 |
Constant string identifying a memory load operation.
Definition at line 172 of file op_graph.hpp.
Referenced by mux_connection_binding::address_precision(), operations_cfg_computation::build_operation_recursive(), parametric_list_based::check_direct_operation_chaining(), parametric_list_based::check_LOAD_chaining(), parametric_list_based::check_non_direct_operation_chaining(), parametric_list_based::CheckSchedulabilityConditions(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::create_connections(), parametric_list_based::exec(), memory_allocation::finalize_memory_allocation(), mem_dominator_allocation::InternalExec(), SDCScheduling::InternalExec(), allocation::InternalExec(), OpWriter::operator()(), BB_based_stg::optimize_cycles(), fu_binding::specialise_fu(), parametric_list_based::store_in_chaining_with_load_in(), and parametric_list_based::store_in_chaining_with_load_out().
#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()().
#define TYPE_MULTIIF 1 << 25 |
constant identifying the a multi-way if
Definition at line 202 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::create_connections(), parametric_list_based::exec(), fsm_controller::get_guard_value(), SDCScheduling::InternalExec(), BB_based_stg::optimize_cycles(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
#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().
#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().
#define TYPE_PHI 1 << 12 |
constant string identifying an operation node of type PHI
Definition at line 135 of file op_graph.hpp.
Referenced by mux_connection_binding::add_conversion(), SDCScheduling::AddDelayConstraints(), operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::CheckSchedulabilityConditions(), CWriter::compute_phi_nodes(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::connect_to_registers(), mux_connection_binding::create_connections(), mux_connection_binding::determine_connection(), StorageValueInformation::get_compatibility_weight(), AddOpPhiFlowEdges::Initialize(), cdfc_module_binding::initialize_connection_relation(), BB_based_stg::InternalExec(), FSM_NI_SSA_liveness::InternalExec(), AddOpPhiFlowEdges::InternalExec(), port_swapping::InternalExec(), SDCScheduling::InternalExec(), cdfc_module_binding::InternalExec(), BB_based_stg::is_instantaneous_operation(), and BB_based_stg::optimize_cycles().
#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().
#define TYPE_RET 1 << 13 |
constant string identifying an operation node of type return expr
Definition at line 140 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::CheckSchedulabilityConditions(), parametric_list_based::exec(), SDCScheduling::InternalExec(), cdfc_module_binding::InternalExec(), BB_based_stg::optimize_cycles(), and EdgeCWriter::writeRoutineInstructions_rec().
#define TYPE_RW 1 << 28 |
Constant identifying if a TYPE_EXTERNAL write or read memory.
Definition at line 217 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), parametric_list_based::CheckSchedulabilityConditions(), parametric_list_based::exec(), SDCScheduling::InternalExec(), and BB_based_stg::optimize_cycles().
#define TYPE_STORE 1 << 20 |
Constant string identifying a memory store operation.
Definition at line 177 of file op_graph.hpp.
Referenced by SDCScheduling::AddDelayConstraints(), mux_connection_binding::address_precision(), operations_cfg_computation::build_operation_recursive(), parametric_list_based::CheckSchedulabilityConditions(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::create_connections(), parametric_list_based::exec(), memory_allocation::finalize_memory_allocation(), mem_dominator_allocation::InternalExec(), SDCScheduling::InternalExec(), allocation::InternalExec(), OpWriter::operator()(), BB_based_stg::optimize_cycles(), StateInfo::print(), fu_binding::specialise_fu(), parametric_list_based::store_in_chaining_with_load_in(), and parametric_list_based::store_in_chaining_with_load_out().
#define TYPE_SWITCH 1 << 6 |
constant identifying the node type of a SWITCH operation.
Definition at line 105 of file op_graph.hpp.
Referenced by ASLAP::ASLAP(), operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::create_connections(), parametric_list_based::exec(), SDCScheduling::InternalExec(), cdfc_module_binding::InternalExec(), OpWriter::operator()(), BB_based_stg::optimize_cycles(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
#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.
#define TYPE_VPHI 1 << 17 |
constant string identifying an operation node of type virtual phi-nodes
Definition at line 162 of file op_graph.hpp.
Referenced by operations_cfg_computation::build_operation_recursive(), cdfc_module_binding::can_be_clustered(), parametric_list_based::CheckSchedulabilityConditions(), parametric_list_based::compute_starting_ending_time_asap(), mux_connection_binding::create_connections(), BB_based_stg::InternalExec(), VarComputation::InternalExec(), SDCScheduling::InternalExec(), cdfc_module_binding::InternalExec(), BB_based_stg::optimize_cycles(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
#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.
#define TYPE_WHILE 1 << 7 |
constant string identifying the node type of an WHILE operation.
Definition at line 110 of file op_graph.hpp.
Referenced by ASLAP::ASLAP(), operations_cfg_computation::build_operation_recursive(), parametric_list_based::exec(), EdgeCWriter::writeRoutineInstructions_rec(), and CWriter::writeRoutineInstructions_rec().
#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().
#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().
using OpEdgeInfoConstRef = refcount<const OpEdgeInfo> |
Definition at line 551 of file op_graph.hpp.
using OpEdgeInfoRef = refcount<OpEdgeInfo> |
Refcount definition for OpEdgeInfo.
Definition at line 550 of file op_graph.hpp.
using OpGraphConstRef = refcount<const OpGraph> |
Definition at line 923 of file op_graph.hpp.
using OpGraphInfoConstRef = refcount<const OpGraphInfo> |
Definition at line 589 of file op_graph.hpp.
using OpGraphInfoRef = refcount<OpGraphInfo> |
Refcount definition for OpGraphInfo.
Definition at line 588 of file op_graph.hpp.
using OpGraphRef = refcount<OpGraph> |
refcount definition of the class
Definition at line 922 of file op_graph.hpp.
Refcount definition for OpGraphsCollectionRef.
Definition at line 778 of file op_graph.hpp.
using OpNodeInfoConstRef = refcount<const OpNodeInfo> |
Definition at line 429 of file op_graph.hpp.
using OpNodeInfoRef = refcount<OpNodeInfo> |
Definition at line 428 of file op_graph.hpp.
CONSTREF_FORWARD_DECL | ( | BehavioralHelper | ) |
Autoheader include.
Superclasses include behavior include utility includes
CONSTREF_FORWARD_DECL | ( | hls | ) |
UINT_STRONG_TYPEDEF | ( | MemoryAddress | ) |