OpenASIP
2.0
|
#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). More... | |
typedef GraphEdge | Edge |
Edge type of this graph (possibly, a base class). More... | |
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.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< MoveNode, DataDependenceEdge >, and DataDependenceGraph.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
virtual |
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
protectedpure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, BoostGraph< MoveNode, DataDependenceEdge >, and DataDependenceGraph.
|
pure virtual |
Implemented in BoostGraph< GraphNode, GraphEdge >, BoostGraph< ControlDependenceNode, ControlDependenceEdge >, BoostGraph< OperationDAGNode, OperationDAGEdge >, BoostGraph< MIDDGNode, MIDDGEdge >, BoostGraph< ProgramDependenceNode, ProgramDependenceEdge >, BoostGraph< BasicBlockNode, ControlFlowEdge >, and BoostGraph< MoveNode, DataDependenceEdge >.
|
virtual |
Referenced by LoopAnalyzer::analyze(), ResourceConstraintAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), BUMoveNodeSelector::BUMoveNodeSelector(), BUBasicBlockScheduler::bypassNode(), BUMoveNodeSelector::candidates(), BFOptimization::checkPrologDDG(), llvm::LLVMTCEIRBuilder::compileOptimized(), ProgramDependenceGraph::computeRelations(), DataDependenceGraphBuilder::constructIndividualBB(), CriticalPathBBMoveNodeSelector::CriticalPathBBMoveNodeSelector(), BasicBlockPass::ddgSnapshot(), BasicBlockScheduler::ddgSnapshot(), MoveNodeDuplicator::dumpDDG(), BUBasicBlockScheduler::finalizeSchedule(), BUBasicBlockScheduler::findBypassDestinations(), SimpleIfConverter::handleControlFlowGraph(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BF2Scheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), BF2Scheduler::handleLoopDDG(), BBSchedulerController::handleProcedure(), BUMoveNodeSelector::initializeReadylist(), CriticalPathBBMoveNodeSelector::notifyScheduled(), BFLateBypassGuard::operator()(), BFPostpassBypass::operator()(), BFPushMoveUp::operator()(), BFScheduleBU::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), DataDependenceGraphBuilder::processTriggerPO(), BFUnscheduleMove::returnOriginal(), BFUnscheduleFromBody::returnOriginal(), BF2Scheduler::revertBBLiveRangeBookkeepingForDestination(), BF2Scheduler::revertBBLiveRangeBookkeepingForSource(), InstructionPatternAnalyzer::runOnMachineFunction(), BF2Scheduler::scheduleDDG(), BF2ScheduleFront::scheduleFrontFromMove(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::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().