OpenASIP 2.2
|
#include <Graph.hh>
Public Types | |
typedef std::set< GraphNode *, typename GraphNode::Comparator > | NodeSet |
typedef std::set< GraphEdge *, typename GraphEdge::Comparator > | EdgeSet |
typedef GraphNode | Node |
Node type of this graph (possibly, a base class). | |
typedef GraphEdge | Edge |
Edge type of this graph (possibly, a base class). | |
Public Member Functions | |
GraphBase () | |
virtual | ~GraphBase () |
virtual int | nodeCount () const =0 |
virtual int | edgeCount () const =0 |
virtual Node & | node (const int index) const =0 |
virtual Edge & | edge (const int index) const =0 |
virtual int | outDegree (const Node &node) const =0 |
virtual int | inDegree (const Node &node) const =0 |
virtual Edge & | outEdge (const Node &node, const int index) const =0 |
virtual Edge & | inEdge (const Node &node, const int index) const =0 |
virtual EdgeSet | outEdges (const Node &node) const =0 |
virtual EdgeSet | inEdges (const Node &node) const =0 |
virtual Node & | tailNode (const Edge &edge) const =0 |
virtual Node & | headNode (const Edge &edge) const =0 |
virtual bool | hasEdge (const Node &nTail, const Node &nHead) const =0 |
virtual EdgeSet | connectingEdges (const Node &nTail, const Node &nHead) const =0 |
virtual TCEString | dotString () const |
virtual void | writeToDotFile (const TCEString &fileName) const |
virtual void | addNode (Node &node)=0 |
virtual void | removeNode (Node &node)=0 |
virtual void | removeEdge (Edge &e)=0 |
virtual void | connectNodes (const Node &nTail, const Node &nHead, Edge &e)=0 |
virtual void | disconnectNodes (const Node &nTail, const Node &nHead)=0 |
virtual const TCEString & | name () const =0 |
Protected Member Functions | |
virtual bool | hasNode (const Node &) const =0 |
Graph base interface shared by all clients within the project.
Templated interface with node and edge types as parameters. If an implementation of this interface deals with multiple types of nodes, all types must share a common base type. Ditto for edges.
typedef std::set<GraphEdge*, typename GraphEdge::Comparator > GraphBase< GraphNode, GraphEdge >::EdgeSet |
typedef std::set<GraphNode*, typename GraphNode::Comparator > GraphBase< GraphNode, GraphEdge >::NodeSet |
|
inline |
Implemented in BoostGraph< GraphNode, GraphEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >.
|
pure virtual |
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >.
Reimplemented in MachineInstrDDG, and DataDependenceGraph.
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< MoveNode, DataDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, and BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< MoveNode, DataDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, and BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >.
|
protectedpure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< MoveNode, DataDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, and BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< MoveNode, DataDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, and BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< MoveNode, DataDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, and BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >.
Implemented in BoostGraph< GraphNode, GraphEdge >.
|
virtual |
Referenced by ResourceConstraintAnalyzer::analyze(), LoopAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), BUMoveNodeSelector::BUMoveNodeSelector(), BUBasicBlockScheduler::bypassNode(), BUMoveNodeSelector::candidates(), BFOptimization::checkPrologDDG(), llvm::LLVMTCEIRBuilder::compileOptimized(), ProgramDependenceGraph::computeRelations(), DataDependenceGraphBuilder::constructIndividualBB(), ControlFlowGraph::copyToLLVMMachineFunction(), ControlFlowGraph::copyToProcedure(), CriticalPathBBMoveNodeSelector::CriticalPathBBMoveNodeSelector(), CriticalPathBBMoveNodeSelector::CriticalPathBBMoveNodeSelector(), BasicBlockScheduler::ddgSnapshot(), BasicBlockPass::ddgSnapshot(), MoveNodeDuplicator::dumpDDG(), BUBasicBlockScheduler::finalizeSchedule(), BUBasicBlockScheduler::findBypassDestinations(), SimpleIfConverter::handleControlFlowGraph(), BF2Scheduler::handleDDG(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BF2Scheduler::handleLoopDDG(), BF2Scheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), BUBasicBlockScheduler::handleLoopDDG(), BBSchedulerController::handleProcedure(), BUMoveNodeSelector::initializeReadylist(), DataDependenceGraph::mergeAndKeepAllowed(), CriticalPathBBMoveNodeSelector::notifyScheduled(), BFLateBypassGuard::operator()(), BFPushMoveUp::operator()(), BFScheduleBU::operator()(), BFPostpassBypass::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), ControlFlowGraph::optimizeBBOrdering(), ProgramDependenceGraph::processRegion(), DataDependenceGraphBuilder::processTriggerPO(), DataDependenceGraph::removeRAWEdges(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), ControlFlowGraph::reverseGuardOnOutEdges(), BF2Scheduler::revertBBLiveRangeBookkeepingForDestination(), BF2Scheduler::revertBBLiveRangeBookkeepingForSource(), InstructionPatternAnalyzer::runOnMachineFunction(), ControlFlowGraph::sanitize(), DataDependenceGraph::sanityCheck(), BF2Scheduler::scheduleDDG(), BF2ScheduleFront::scheduleFrontFromMove(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BUBasicBlockScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), BasicBlockScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), BasicBlockScheduler::scheduleRRMove(), BUBasicBlockScheduler::scheduleRRMove(), BUBasicBlockScheduler::scheduleRRTempMoves(), SimpleIfConverter::successors(), BUBasicBlockScheduler::undoBypass(), BFLateBypass::undoOnlyMe(), BFUnscheduleFromBody::unscheduleOriginal(), BFUnscheduleMove::unscheduleOriginal(), OperationDAGDialog::updateDAG(), and llvm::LLVMTCEIRBuilder::writeMachineFunction().