OpenASIP
2.0
|
#include <BoostGraph.hh>
Classes | |
class | GraphHashFunctions |
struct | PathLengthHelper |
struct | RemovedEdgeDatum |
Public Types | |
typedef std::set< GraphNode *, typename GraphNode::Comparator > | NodeSet |
typedef std::set< GraphEdge *, typename GraphEdge::Comparator > | EdgeSet |
typedef GraphNode | Node |
The (base) node type managed by this graph. More... | |
typedef GraphEdge | Edge |
The (base) edge type managed by this graph. More... | |
Public Types inherited from GraphBase< GraphNode, GraphEdge > | |
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 | |
BoostGraph (bool allowLoopEdges=true) | |
BoostGraph (const TCEString &name, bool allowLoopEdges=true) | |
BoostGraph (const BoostGraph &other, bool allowLoopEdges=true) | |
~BoostGraph () | |
int | nodeCount () const |
int | edgeCount () const |
Node & | node (const int index) const |
Node & | node (const int index, bool cacheResult) const |
virtual Edge & | edge (const int index) const |
virtual void | addNode (Node &node) |
virtual Edge & | outEdge (const Node &node, const int index) const |
virtual Edge & | inEdge (const Node &node, const int index) const |
virtual EdgeSet | outEdges (const Node &node) const |
virtual EdgeSet | inEdges (const Node &node) const |
virtual EdgeSet | rootGraphOutEdges (const Node &node) const |
virtual EdgeSet | rootGraphInEdges (const Node &node) const |
virtual Edge & | rootGraphInEdge (const Node &node, const int index) const |
virtual Edge & | rootGraphOutEdge (const Node &node, const int index) const |
virtual int | rootGraphInDegree (const Node &node) const |
virtual int | rootGraphOutDegree (const Node &node) const |
virtual int | outDegree (const Node &node) const |
virtual int | inDegree (const Node &node) const |
virtual Node & | tailNode (const Edge &edge) const |
virtual Node & | headNode (const Edge &edge) const |
virtual void | connectNodes (const Node &nTail, const Node &nHead, Edge &e) |
virtual void | disconnectNodes (const Node &nTail, const Node &nHead) |
virtual void | moveInEdges (const Node &source, const Node &destination) |
virtual void | moveOutEdges (const Node &source, const Node &destination) |
virtual void | moveInEdge (const Node &source, const Node &destination, Edge &edge, const Node *tail=NULL, bool childs=false) |
virtual void | moveOutEdge (const Node &source, const Node &destination, Edge &edge, const Node *head=NULL, bool childs=false) |
virtual void | copyInEdge (const Node &destination, Edge &edge, const Node *tail=NULL) |
virtual void | copyOutEdge (const Node &destination, Edge &edge, const Node *head=NULL) |
virtual void | removeNode (Node &node) |
virtual void | removeEdge (Edge &e) |
virtual void | dropNode (Node &node) |
virtual void | dropEdge (Edge &edge) |
virtual bool | hasEdge (const Node &nTail, const Node &nHead) const |
virtual NodeSet | rootNodes () const |
useful utility functions More... | |
virtual NodeSet | sinkNodes () const |
virtual NodeSet | successors (const Node &node, bool ignoreBackEdges=false, bool ignoreForwardEdges=false) const |
virtual NodeSet | predecessors (const Node &node, bool ignoreBackEdges=false, bool ignoreForwardEdges=false) const |
int | maxPathLength (const GraphNode &node) const |
int | maxSinkDistance (const GraphNode &node) const |
int | maxSourceDistance (const GraphNode &node) const |
bool | isInCriticalPath (const GraphNode &node) const |
int | height () const |
void | findAllPaths () const |
void | detachSubgraph (BoostGraph &subGraph) |
BoostGraph * | parentGraph () |
BoostGraph * | rootGraph () |
const BoostGraph * | rootGraph () const |
bool | hasNode (const Node &) const |
virtual const TCEString & | name () const |
void | setName (const TCEString &newName) |
bool | hasPath (GraphNode &src, const GraphNode &dest) const |
void | restoreNodeFromParent (GraphNode &node) |
bool | detectIllegalCycles () const |
EdgeSet | connectingEdges (const Node &nTail, const Node &nHead) const |
Public Member Functions inherited from GraphBase< GraphNode, GraphEdge > | |
GraphBase () | |
virtual | ~GraphBase () |
virtual TCEString | dotString () const |
virtual void | writeToDotFile (const TCEString &fileName) const |
Protected Types | |
typedef std::set< RemovedEdgeDatum > | RemovedEdgeMap |
typedef boost::adjacency_list< boost::listS, boost::vecS, boost::bidirectionalS, Node *, Edge * > | Graph |
Internal graph type, providing actual graph-like operations. This type definition relies on bundled properties of boost library, which need the host compiler to support partial template specialisation. More... | |
typedef boost::graph_traits< Graph > | GraphTraits |
Traits characterising the internal graph type. More... | |
typedef GraphTraits::out_edge_iterator | OutEdgeIter |
Output edge iterator type. More... | |
typedef GraphTraits::in_edge_iterator | InEdgeIter |
Input edge iterator type. More... | |
typedef GraphTraits::edge_iterator | EdgeIter |
Iterator type for the list of all edges in the graph. More... | |
typedef GraphTraits::vertex_iterator | NodeIter |
Iterator type for the list of all nodes in the graph. More... | |
typedef GraphTraits::edge_descriptor | EdgeDescriptor |
Type with which edges of the graph are seen internally. More... | |
typedef GraphTraits::vertex_descriptor | NodeDescriptor |
Type with which nodes of the graph are seen internally. More... | |
typedef hash_map< const Edge *, EdgeDescriptor, GraphHashFunctions > | EdgeDescMap |
typedef hash_map< const Node *, NodeDescriptor, GraphHashFunctions > | NodeDescMap |
typedef std::vector< std::vector< int > > | PathCache |
Protected Member Functions | |
void | restoreRemovedEdges (RemovedEdgeMap removedEdges) |
EdgeDescriptor | descriptor (const Edge &e) const |
EdgeDescriptor | edgeDescriptor (const NodeDescriptor &tailNode, const Edge &e) const |
EdgeDescriptor | edgeDescriptor (const Edge &e, const NodeDescriptor &headNode) const |
NodeDescriptor | descriptor (const Node &n) const |
bool | hasEdge (const Node &nTail, const Node &nHead, const Edge &edge) const |
bool | hasEdge (const Edge &edge, const Node *nTail=NULL, const Node *nHead=NULL) const |
EdgeDescriptor | connectingEdge (const Node &nTail, const Node &nHead) const |
Node & | tailNode (const Edge &edge, const NodeDescriptor &headNode) const |
Node & | headNode (const Edge &edge, const NodeDescriptor &tailNode) const |
void | replaceNodeWithLastNode (GraphNode &dest) |
void | calculatePathLengths () const |
void | calculatePathLengthsFast () const |
void | calculateSinkDistance (const GraphNode &node, int len, bool looping=false) const |
void | calculateSourceDistances (const GraphNode *startNode=NULL, int startingLength=0, bool looping=false) const |
void | calculatePathLengthsOnConnect (const GraphNode &nTail, const GraphNode &nHead, GraphEdge &e) |
void | sinkDistDecreased (const GraphNode &n) const |
void | sourceDistDecreased (const GraphNode &n) const |
virtual int | edgeWeight (GraphEdge &e, const GraphNode &n) const |
void | clearDescriptorCache (EdgeSet edges) |
virtual void | removeNode (Node &node, BoostGraph *modifierGraph) |
virtual void | removeEdge (Edge &e, const GraphNode *tailNode, const GraphNode *headNode, BoostGraph *modifierGraph=NULL) |
virtual void | connectNodes (const Node &nTail, const Node &nHead, Edge &e, GraphBase< GraphNode, GraphEdge > *modifier, bool creatingSG=false) |
void | moveInEdges (const Node &source, const Node &destination, BoostGraph *modifierGraph) |
virtual void | moveOutEdges (const Node &source, const Node &destination, BoostGraph *modifierGraph) |
void | constructSubGraph (BoostGraph &subGraph, NodeSet &nodes) |
Protected Attributes | |
std::map< const GraphNode *, int, typename GraphNode::Comparator > | sourceDistances_ |
std::map< const GraphNode *, int, typename GraphNode::Comparator > | sinkDistances_ |
std::map< const GraphNode *, int, typename GraphNode::Comparator > | loopingSourceDistances_ |
std::map< const GraphNode *, int, typename GraphNode::Comparator > | loopingSinkDistances_ |
int | height_ |
Graph | graph_ |
The internal graph structure. More... | |
EdgeDescMap | edgeDescriptors_ |
NodeDescMap | nodeDescriptors_ |
BoostGraph< GraphNode, GraphEdge > * | parentGraph_ |
std::vector< BoostGraph< GraphNode, GraphEdge > * > | childGraphs_ |
TCEString | name_ |
int | sgCounter_ |
std::set< Edge * > | ownedEdges_ |
bool | allowLoopEdges_ |
PathCache * | pathCache_ |
Private Member Functions | |
BoostGraph & | operator= (const BoostGraph &) |
Assignment forbidden. More... | |
Graph-based program representation.
Boost::graph based implementation.
Definition at line 83 of file BoostGraph.hh.
typedef GraphEdge BoostGraph< GraphNode, GraphEdge >::Edge |
The (base) edge type managed by this graph.
Definition at line 92 of file BoostGraph.hh.
|
protected |
Definition at line 336 of file BoostGraph.hh.
|
protected |
Type with which edges of the graph are seen internally.
Definition at line 262 of file BoostGraph.hh.
|
protected |
Iterator type for the list of all edges in the graph.
Definition at line 257 of file BoostGraph.hh.
typedef std::set<GraphEdge*, typename GraphEdge::Comparator > BoostGraph< GraphNode, GraphEdge >::EdgeSet |
Definition at line 87 of file BoostGraph.hh.
|
protected |
Internal graph type, providing actual graph-like operations. This type definition relies on bundled properties of boost library, which need the host compiler to support partial template specialisation.
Definition at line 247 of file BoostGraph.hh.
|
protected |
Traits characterising the internal graph type.
Definition at line 250 of file BoostGraph.hh.
|
protected |
Input edge iterator type.
Definition at line 255 of file BoostGraph.hh.
typedef GraphNode BoostGraph< GraphNode, GraphEdge >::Node |
The (base) node type managed by this graph.
Definition at line 90 of file BoostGraph.hh.
|
protected |
Definition at line 338 of file BoostGraph.hh.
|
protected |
Type with which nodes of the graph are seen internally.
Definition at line 264 of file BoostGraph.hh.
|
protected |
Iterator type for the list of all nodes in the graph.
Definition at line 259 of file BoostGraph.hh.
typedef std::set<GraphNode*, typename GraphNode::Comparator > BoostGraph< GraphNode, GraphEdge >::NodeSet |
Definition at line 86 of file BoostGraph.hh.
|
protected |
Output edge iterator type.
Definition at line 253 of file BoostGraph.hh.
|
protected |
Definition at line 387 of file BoostGraph.hh.
|
protected |
Definition at line 236 of file BoostGraph.hh.
BoostGraph< GraphNode, GraphEdge >::BoostGraph | ( | bool | allowLoopEdges = true | ) |
BoostGraph< GraphNode, GraphEdge >::BoostGraph | ( | const TCEString & | name, |
bool | allowLoopEdges = true |
||
) |
BoostGraph< GraphNode, GraphEdge >::BoostGraph | ( | const BoostGraph< GraphNode, GraphEdge > & | other, |
bool | allowLoopEdges = true |
||
) |
BoostGraph< GraphNode, GraphEdge >::~BoostGraph | ( | ) |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Reimplemented in DataDependenceGraph.
Referenced by LoopPrologAndEpilogBuilder::addEpilogIntoCfg(), DataDependenceGraph::addNode(), LoopPrologAndEpilogBuilder::addPrologIntoCfg(), llvm::LLVMTCEIRBuilder::buildTCECFG(), OperationDAGBuilder::createOperationNode(), TDGen::createTrivialDAG(), OperationDAGBuilder::finalize(), OperationDAGBuilder::getBinding(), OperationDAGBuilder::getConstantBinding(), ProgramDependenceGraph::processEntry(), ProgramDependenceGraph::processLoopClose(), ProgramDependenceGraph::processPredicate(), and ProgramDependenceGraph::processRegion().
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by ProgramDependenceGraph::addLeafEdges(), Peel2BBLoops::updateCFG(), and BFMergeAndKeepUser::updateEdges().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addEpilogIntoCfg(), ProgramDependenceGraph::addLeafEdges(), LoopPrologAndEpilogBuilder::addPrologIntoCfg(), LLVMTCEDataDependenceGraphBuilder::buildLocalDDG(), llvm::LLVMTCEIRBuilder::buildTCECFG(), OperationDAGBuilder::connectOperandToNode(), RegisterCopyAdder::createAntidepsForReg(), ControlDependenceGraph::createPostDominanceTree(), TDGen::createTrivialDAG(), OperationDAGBuilder::finalize(), RegisterCopyAdder::fixDDGEdgesInTempReg(), RegisterCopyAdder::fixDDGEdgesInTempRegChain(), RegisterCopyAdder::fixDDGEdgesInTempRegChainImmediate(), DataDependenceGraph::guardConverted(), DataDependenceGraph::mergeAndKeepUser(), BFConnectNodes::operator()(), ProgramDependenceGraph::processEntry(), ProgramDependenceGraph::processLoopEntry(), ProgramDependenceGraph::processPredicate(), ProgramDependenceGraph::processRegion(), BFRenameLiveRange::renameLiveRange(), RegisterRenamer::renameLiveRange(), BFCopyRegWithOp::splitMove(), BUBasicBlockScheduler::tryToOptimizeWaw(), BasicBlockScheduler::tryToOptimizeWaw(), BFRemoveEdge::undoOnlyMe(), Peel2BBLoops::updateCFG(), and SimpleIfConverter::updateCfg().
|
protectedvirtual |
|
protected |
|
protected |
|
protected |
void BoostGraph< GraphNode, GraphEdge >::detachSubgraph | ( | BoostGraph< GraphNode, GraphEdge > & | subGraph | ) |
bool BoostGraph< GraphNode, GraphEdge >::detectIllegalCycles | ( | ) | const |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by BFCopyRegWithOp::undoSplit(), Peel2BBLoops::updateCFG(), and SimpleIfConverter::updateCfg().
|
virtual |
Referenced by DataDependenceGraph::trueDependenceGraph().
|
virtual |
Referenced by BUBasicBlockScheduler::finalizeSchedule(), BF2Scheduler::handleLoopDDG(), BFDRELate::operator()(), BFDREEarly::operator()(), BFDropPreShared::operator()(), BFPostpassDRE::operator()(), BFKillNode::operator()(), BFPostpassLoopDRE::operator()(), BFDRELoop::operator()(), BFShareOperandWithScheduled::operator()(), BFShareOperandLate::operator()(), CycleLookBackSoftwareBypasser::removeDeadResults(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), BFRemoveLoopChecksAndJump::removePoFromQueue(), and BF2Scheduler::scheduleDDG().
|
virtual |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by ResourceConstraintAnalyzer::dumpGraphWithStats(), and ProgramDependenceGraph::ProgramDependenceGraph().
|
protected |
|
protected |
|
protectedvirtual |
Reimplemented in DataDependenceGraph.
void BoostGraph< GraphNode, GraphEdge >::findAllPaths | ( | ) | const |
Referenced by VirtRegIndependenceGraph::VirtRegIndependenceGraph().
|
protected |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
|
protected |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by OperationDAGBuilder::connectOperandToNode(), MoveNodeDuplicator::disposeMoveNode(), MoveNodeDuplicator::duplicateMoveNode(), BF2Scheduler::handleLoopDDG(), MoveNodeGroup::isAlive(), ExecutionPipelineBroker::isLoopBypass(), ExecutionPipelineResource::isLoopBypass(), BUMoveNodeSelector::isReadyToBeScheduled(), BUMoveNodeSelector::mightBeReady(), CycleLookBackSoftwareBypasser::removeDeadResults(), BF2Scheduler::scheduleDDG(), BUBasicBlockScheduler::scheduleOperandWrites(), RegisterRenamer::updateAntiEdgesFromLRTo(), and MoveNodeGroup::writesJumpGuard().
bool BoostGraph< GraphNode, GraphEdge >::hasPath | ( | GraphNode & | src, |
const GraphNode & | dest | ||
) | const |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addEpilogIntoCfg(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), BFEarlyBypasser::bypassSourceLatestCycle(), TDGen::canBeImmediate(), SimpleIfConverter::canConvert(), PreOptimizer::checkGuardReversalAllowed(), BFOptimization::checkPrologDDG(), TDGen::constantNodeString(), ControlDependenceGraph::createPostDominanceTree(), ControlDependenceGraph::detectControlDependencies(), SimpleIfConverter::detectDiamond(), SimpleIfConverter::detectTriangleViaFt(), SimpleIfConverter::detectTriangleViaJump(), ResourceConstraintAnalyzer::dumpGraphWithStats(), TDGen::emulatingOpNodeLLVMName(), OperationDAGSelector::findDags(), TDGen::immediateOperandNameForEmulatedOperation(), PreOptimizer::inverseGuardsOfHeads(), DataDependenceGraph::mergeAndKeepSource(), DataDependenceGraph::mergeAndKeepUser(), OperationDAGBehavior::OperationDAGBehavior(), BFRemoveLoopChecksAndJump::operator()(), BFPushAntidepsDown::operator()(), BFRemoveGuardsFromSuccs::operator()(), ProgramDependenceGraph::ProgramDependenceGraph(), LiveRangeData::registersAlive(), ProgramDependenceGraph::removeGuardedJump(), BFRegCopyAfter::splitMove(), BFRegCopyBefore::splitMove(), FUGen::subOpConnection(), SimpleIfConverter::successors(), Peel2BBLoops::testIf2BBLoop(), PreOptimizer::tryToOptimizeAddressReg(), SimpleIfConverter::updateCfg(), BFMergeAndKeepUser::updateEdges(), OperationDAGConverter::writeNode(), and MoveNodeGroup::writesJumpGuard().
|
protected |
int BoostGraph< GraphNode, GraphEdge >::height | ( | ) | const |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addPrologIntoCfg(), TDGen::canBeImmediate(), BFRemoveLoopChecksAndJump::checkAliveMove(), BFRemoveLoopChecksAndJump::checkAlivePO(), TDGen::constantNodeString(), TDGen::dagNodeToString(), SimpleIfConverter::detectDiamond(), SimpleIfConverter::detectTriangleViaFt(), SimpleIfConverter::detectTriangleViaJump(), TDGen::emulatingOpNodeLLVMName(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationNodeToString(), BFMergeAndKeepUser::operator()(), ProgramDependenceGraph::ProgramDependenceGraph(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), BFRemoveLoopChecksAndJump::removePoFromQueue(), Peel2BBLoops::testIf2BBLoop(), TDGen::writeEmulationPattern(), and OperationDAGConverter::writeNode().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addPrologIntoCfg(), BFRemoveLoopChecksAndJump::checkAliveMove(), BFRemoveLoopChecksAndJump::checkAlivePO(), TDGen::dagNodeToString(), TDGen::emulatingOpNodeLLVMName(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationNodeToString(), BFMergeAndKeepUser::operator()(), ProgramDependenceGraph::ProgramDependenceGraph(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), BFRemoveLoopChecksAndJump::removePoFromQueue(), BFCopyRegWithOp::splitMove(), Peel2BBLoops::testIf2BBLoop(), BFCopyRegWithOp::undoSplit(), TDGen::writeEmulationPattern(), and OperationDAGConverter::writeNode().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by CycleLookBackSoftwareBypasser::bypassNode(), PreOptimizer::checkGuardReversalAllowed(), BFOptimization::checkPrologDDG(), BF2Scheduler::findBypassEdge(), RegisterCopyAdder::fixDDGEdgesInTempReg(), RegisterCopyAdder::fixDDGEdgesInTempRegChain(), RegisterCopyAdder::fixDDGEdgesInTempRegChainImmediate(), ExecutionPipelineResource::isLoopBypass(), ProGeTools::maxLatencyToNode(), Automagic::maxLatencyToNode(), BFPushDepsUp::operator()(), BFRemoveGuard::operator()(), BFRemoveGuardFromSucc::operator()(), BasicBlockScheduler::scheduleInputOperandTempMoves(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BFRegCopyAfter::splitMove(), BFRegCopyBefore::splitMove(), Peel2BBLoops::testIf2BBLoop(), PreOptimizer::tryToOptimizeAddressReg(), BUBasicBlockScheduler::tryToOptimizeWaw(), and BasicBlockScheduler::tryToOptimizeWaw().
|
inline |
Definition at line 179 of file BoostGraph.hh.
int BoostGraph< GraphNode, GraphEdge >::maxPathLength | ( | const GraphNode & | node | ) | const |
int BoostGraph< GraphNode, GraphEdge >::maxSinkDistance | ( | const GraphNode & | node | ) | const |
int BoostGraph< GraphNode, GraphEdge >::maxSourceDistance | ( | const GraphNode & | node | ) | const |
Referenced by BUMoveNodeSelector::candidates(), ResourceConstraintAnalyzer::dumpGraphWithStats(), BF2ScheduleFront::getMoveNodeFromFrontBU(), BoostGraph< MoveNode, DataDependenceEdge >::isInCriticalPath(), MoveNodeGroup::maxSourceDistance(), and ResourceConstraintAnalyzer::optimalScheduleResourceUsage().
|
virtual |
Referenced by LoopPrologAndEpilogBuilder::addEpilogIntoCfg(), LoopPrologAndEpilogBuilder::addPrologIntoCfg(), RegisterCopyAdder::fixDDGEdgesInTempReg(), RegisterCopyAdder::fixDDGEdgesInTempRegChain(), RegisterCopyAdder::fixDDGEdgesInTempRegChainImmediate(), BFCopyRegWithOp::splitMove(), and BFCopyRegWithOp::undoSplit().
|
virtual |
|
protected |
|
virtual |
|
protectedvirtual |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopAnalyzer::analyze(), DataDependenceGraphBuilder::build(), llvm::LLVMTCEIRBuilder::compileOptimized(), DataDependenceGraphBuilder::constructIndividualBB(), DataDependenceGraphBuilder::createRegisterDeps(), BasicBlockScheduler::ddgSnapshot(), BBSchedulerController::executeDDGPass(), BBSchedulerController::handleBBNode(), SimpleIfConverter::handleControlFlowGraph(), BF2Scheduler::handleDDG(), BF2Scheduler::handleLoopDDG(), BBSchedulerController::handleProcedure(), FalseAliasAnalyzer::isEnabled(), BF2Scheduler::scheduleDDG(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), BasicBlockScheduler::scheduleRRMove(), BUBasicBlockScheduler::scheduleRRMove(), and DataDependenceGraphBuilder::searchRegisterDeaths().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by ResourceConstraintAnalyzer::analyzeRegisterAntideps(), LoopPrologAndEpilogBuilder::build(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), OperationDAGBehavior::canBeSimulated(), ProGeTools::canGenerateFromDAG(), Automagic::canGenerateFromDAG(), PreOptimizer::cfgAllowsJumpReversal(), DataDependenceGraphBuilder::clearUnneededBookkeeping(), ProcedurePass::copyCfgToProcedure(), OperationDAGSelector::countUnknownOperations(), OperationDAGConverter::createOsalCode(), ControlDependenceGraph::createPostDominanceTree(), OperationDAGConverter::createSimulationCode(), DataDependenceGraph::createSubgraph(), ControlDependenceGraph::detectControlDependencies(), ResourceConstraintAnalyzer::dumpGraphWithStats(), ControlFlowGraphPass::executeBasicBlockPass(), CopyingDelaySlotFiller::fillDelaySlots(), CompiledSimCodeGenerator::findBasicBlocks(), OperationDAGSelector::findDags(), BF2Scheduler::findJump(), DataDependenceGraphBuilder::findStaticRegisters(), BBSchedulerController::handleCFGDDG(), Peel2BBLoops::handleControlFlowGraph(), CallsToJumps::handleControlFlowGraph(), ScheduleEstimator::handleControlFlowGraph(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), BF2Scheduler::handleLoopDDG(), DataDependenceGraphBuilder::initializeBBStates(), RegisterRenamer::initializeFreeRegisters(), BoostGraph< MoveNode, DataDependenceEdge >::isInCriticalPath(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationDAGCanBeMatched(), BFRemoveLoopChecksAndJump::operator()(), BFPostpassBypasser::operator()(), BoostGraph< GraphNode, GraphEdge >::GraphHashFunctions::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), ProgramDependenceGraph::ProgramDependenceGraph(), LiveRangeData::registersAlive(), SimpleIfConverter::searchCandidate(), and BF2Scheduler::unreservePreallocatedFUs().
Node& BoostGraph< GraphNode, GraphEdge >::node | ( | const int | index, |
bool | cacheResult | ||
) | const |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by ResourceConstraintAnalyzer::analyzeRegisterAntideps(), LoopPrologAndEpilogBuilder::build(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), llvm::LLVMTCEIRBuilder::buildTCECFG(), SoftwareBypasser::bypass(), OperationDAGBehavior::canBeSimulated(), BUMoveNodeSelector::candidates(), CriticalPathBBMoveNodeSelector::candidates(), Automagic::canGenerateFromDAG(), ProGeTools::canGenerateFromDAG(), PreOptimizer::cfgAllowsJumpReversal(), DataDependenceGraphBuilder::clearUnneededBookkeeping(), ProcedurePass::copyCfgToProcedure(), OperationDAGSelector::countUnknownOperations(), OperationDAGConverter::createOsalCode(), ControlDependenceGraph::createPostDominanceTree(), OperationDAGConverter::createSimulationCode(), DataDependenceGraph::createSubgraph(), ControlDependenceGraph::detectControlDependencies(), ProgramDependenceGraph::disassemble(), ResourceConstraintAnalyzer::dumpGraphWithStats(), ControlFlowGraphPass::executeBasicBlockPass(), CopyingDelaySlotFiller::fillDelaySlots(), CompiledSimCodeGenerator::findBasicBlocks(), OperationDAGSelector::findDags(), BF2Scheduler::findJump(), DataDependenceGraphBuilder::findStaticRegisters(), BBSchedulerController::handleBBNode(), BBSchedulerController::handleCFGDDG(), ControlDependenceGraphPass::handleControlDependenceGraph(), Peel2BBLoops::handleControlFlowGraph(), CallsToJumps::handleControlFlowGraph(), ScheduleEstimator::handleControlFlowGraph(), DDGPass::handleDDG(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), BF2Scheduler::handleLoopDDG(), BBSchedulerController::handleProcedure(), DataDependenceGraphBuilder::initializeBBStates(), RegisterRenamer::initializeFreeRegisters(), CriticalPathBBMoveNodeSelector::isReadyToBeScheduled(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationDAGCanBeMatched(), BFRemoveLoopChecksAndJump::operator()(), BFPostpassBypasser::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), ProgramDependenceGraph::ProgramDependenceGraph(), LiveRangeData::registersAlive(), SoftwareBypasser::removeBypass(), SoftwareBypasser::removeDeadResults(), BF2Scheduler::scheduleDDG(), BasicBlockScheduler::scheduleMove(), SimpleIfConverter::searchCandidate(), OperationDAGSelector::OperationDAGList::smallestNodeCount(), and BF2Scheduler::unreservePreallocatedFUs().
|
private |
Assignment forbidden.
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addEpilogIntoCfg(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), TDGen::canBeImmediate(), PreOptimizer::cfgAllowsJumpReversal(), TDGen::constantNodeString(), ControlDependenceGraph::createPostDominanceTree(), TDGen::dagNodeToString(), ControlDependenceGraph::detectControlDependencies(), SimpleIfConverter::detectDiamond(), SimpleIfConverter::detectTriangleViaFt(), SimpleIfConverter::detectTriangleViaJump(), TDGen::emulatingOpNodeLLVMName(), OperationDAGBehavior::OperationDAGBehavior(), BFRemoveLoopChecksAndJump::operator()(), ProgramDependenceGraph::removeGuardedJump(), SimpleIfConverter::searchCandidate(), Peel2BBLoops::testIf2BBLoop(), DataDependenceGraph::trueDependenceGraph(), and OperationDAGConverter::writeNode().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addEpilogIntoCfg(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), TDGen::canBeImmediate(), PreOptimizer::cfgAllowsJumpReversal(), TDGen::constantNodeString(), ControlDependenceGraph::createPostDominanceTree(), ControlDependenceGraph::detectControlDependencies(), SimpleIfConverter::detectDiamond(), SimpleIfConverter::detectTriangleViaFt(), SimpleIfConverter::detectTriangleViaJump(), TDGen::emulatingOpNodeLLVMName(), OperationDAGBehavior::OperationDAGBehavior(), BFRemoveLoopChecksAndJump::operator()(), ProgramDependenceGraph::removeGuardedJump(), BFCopyRegWithOp::splitMove(), SimpleIfConverter::successors(), Peel2BBLoops::testIf2BBLoop(), DataDependenceGraph::trueDependenceGraph(), BFCopyRegWithOp::undoSplit(), and OperationDAGConverter::writeNode().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by ProgramDependenceGraph::addLeafEdges(), BFEarlyBypasser::bypassSourceLatestCycle(), SimpleIfConverter::canConvert(), BFOptimization::checkPrologDDG(), SimpleIfConverter::detectDiamond(), BFDRELoop::dreAllowed(), BFPostpassLoopDRE::dreAllowed(), OperationDAGSelector::findDags(), RegisterCopyAdder::fixDDGEdgesInTempReg(), RegisterCopyAdder::fixDDGEdgesInTempRegChain(), RegisterCopyAdder::fixDDGEdgesInTempRegChainImmediate(), TDGen::immediateOperandNameForEmulatedOperation(), BFPushAntidepsDown::operator()(), BFRemoveGuardsFromSuccs::operator()(), BFRemoveGuard::operator()(), BFRemoveGuardFromSucc::operator()(), LiveRangeData::registersAlive(), BFRegCopyAfter::splitMove(), BFRegCopyBefore::splitMove(), Peel2BBLoops::testIf2BBLoop(), PreOptimizer::tryToOptimizeAddressReg(), PreOptimizer::tryToRemoveGuardInversingOp(), SimpleIfConverter::updateCfg(), and MoveNodeGroup::writesJumpGuard().
BoostGraph* BoostGraph< GraphNode, GraphEdge >::parentGraph | ( | ) |
Referenced by BF2Scheduler::handleLoopDDG().
|
virtual |
Referenced by TDGen::constantNodeString(), BUBasicBlockScheduler::finalizeSchedule(), ResourceConstraintAnalyzer::findResourceConstrainedParent(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), BUMoveNodeSelector::notifyScheduled(), BFRenameLiveRange::notifySelector(), BFEarlyBypass::operator()(), BFDRELate::operator()(), BFDREEarly::operator()(), BFLateBypass::operator()(), BUBasicBlockScheduler::precedingTempMove(), RegisterRenamer::renameLiveRange(), TDGen::subPattern(), and DataDependenceGraphBuilder::updatePreceedingRegistersUsedAfter().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by ControlDependenceGraph::createPostDominanceTree(), BFRemoveEdge::operator()(), BUBasicBlockScheduler::tryToOptimizeWaw(), BasicBlockScheduler::tryToOptimizeWaw(), BFRenameLiveRange::undoNewAntiDeps(), BFConnectNodes::undoOnlyMe(), BFKillNode::undoOnlyMe(), and SimpleIfConverter::updateCfg().
|
protectedvirtual |
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Reimplemented in DataDependenceGraph.
Referenced by CycleLookBackSoftwareBypasser::clearCaches(), BUBasicBlockScheduler::clearRemovedNodes(), BF2Scheduler::finalizeSchedule(), and DataDependenceGraph::removeNode().
|
protectedvirtual |
|
protected |
void BoostGraph< GraphNode, GraphEdge >::restoreNodeFromParent | ( | GraphNode & | node | ) |
|
protected |
BoostGraph* BoostGraph< GraphNode, GraphEdge >::rootGraph | ( | ) |
Referenced by LoopPrologAndEpilogBuilder::build(), CycleLookBackSoftwareBypasser::bypassNode(), CycleLookBackSoftwareBypasser::clearCaches(), BUBasicBlockScheduler::clearRemovedNodes(), BBSchedulerController::executeDDGPass(), BUBasicBlockScheduler::finalizeSchedule(), BF2Scheduler::finalizeSchedule(), RegisterCopyAdder::fixDDGEdgesInTempReg(), RegisterCopyAdder::fixDDGEdgesInTempRegChain(), RegisterCopyAdder::fixDDGEdgesInTempRegChainImmediate(), BFRemoveLoopChecksAndJump::operator()(), BFRemoveEdge::operator()(), BFConnectNodes::operator()(), CycleLookBackSoftwareBypasser::removeDeadResults(), RegisterRenamer::renameLiveRange(), BFOptimization::rootDDG(), BFCopyRegWithOp::splitMove(), BFRegCopyAfter::splitMove(), BFRegCopyBefore::splitMove(), BFRemoveEdge::undoOnlyMe(), BFConnectNodes::undoOnlyMe(), BFCopyRegWithOp::undoSplit(), and BFMergeAndKeepUser::updateEdges().
const BoostGraph* BoostGraph< GraphNode, GraphEdge >::rootGraph | ( | ) | const |
|
virtual |
Referenced by BFMergeAndKeepUser::updateEdges().
|
virtual |
Referenced by BFMergeAndKeepUser::updateEdges().
|
virtual |
|
virtual |
Referenced by BFMergeAndKeepUser::updateEdges().
|
virtual |
Referenced by BFMergeAndKeepUser::updateEdges().
|
virtual |
|
virtual |
useful utility functions
Referenced by TDGen::immediateOperandNameForEmulatedOperation(), and CriticalPathBBMoveNodeSelector::initializeReadylist().
|
inline |
Definition at line 195 of file BoostGraph.hh.
|
protected |
|
virtual |
|
protected |
|
virtual |
Referenced by BF2Scheduler::hasUnscheduledSuccessors(), CriticalPathBBMoveNodeSelector::notifyScheduled(), BFRenameLiveRange::notifySelector(), BFRescheduleSuccessorsClose::operator()(), DataDependenceGraphBuilder::queueFirstBB(), CycleLookBackSoftwareBypasser::removeDeadResults(), RegisterRenamer::renameLiveRange(), DataDependenceGraphBuilder::setSucceedingPredeps(), BasicBlockScheduler::succeedingTempMove(), and SimpleIfConverter::successors().
|
virtual |
Implements GraphBase< GraphNode, GraphEdge >.
Referenced by LoopPrologAndEpilogBuilder::addPrologIntoCfg(), CycleLookBackSoftwareBypasser::bypassNode(), BFOptimization::checkPrologDDG(), TDGen::dagNodeToString(), ResourceConstraintAnalyzer::dumpGraphWithStats(), TDGen::emulatingOpNodeLLVMName(), DataDependenceGraph::findLoopIndexInit(), MemoryAliasAnalyzer::findTwoPartAddressOperands(), DataDependenceGraph::guardConverted(), ProGeTools::maxLatencyToNode(), Automagic::maxLatencyToNode(), DataDependenceGraph::mergeAndKeepUser(), OperationDAGBehavior::OperationDAGBehavior(), TDGen::operationNodeToString(), BFEarlyBypasser::operator()(), BFPushDepsUp::operator()(), ProgramDependenceGraph::ProgramDependenceGraph(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), BFRemoveLoopChecksAndJump::removePoFromQueue(), BasicBlockScheduler::scheduleInputOperandTempMoves(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BFRegCopyAfter::splitMove(), BFRegCopyBefore::splitMove(), FUGen::subOpConnection(), Peel2BBLoops::testIf2BBLoop(), BFPostpassBypasser::tryBypassNode(), PreOptimizer::tryToOptimizeAddressReg(), BUBasicBlockScheduler::tryToOptimizeWaw(), BasicBlockScheduler::tryToOptimizeWaw(), BFMergeAndKeepUser::updateEdges(), TDGen::writeEmulationPattern(), and OperationDAGConverter::writeNode().
|
protected |
|
protected |
Definition at line 384 of file BoostGraph.hh.
|
protected |
Definition at line 378 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 340 of file BoostGraph.hh.
|
protected |
The internal graph structure.
Definition at line 331 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 328 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 326 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 324 of file BoostGraph.hh.
|
protected |
Definition at line 380 of file BoostGraph.hh.
Referenced by BoostGraph< MoveNode, DataDependenceEdge >::setName().
|
mutableprotected |
Definition at line 341 of file BoostGraph.hh.
|
protected |
Definition at line 383 of file BoostGraph.hh.
|
protected |
Definition at line 377 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 388 of file BoostGraph.hh.
|
protected |
Definition at line 381 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 320 of file BoostGraph.hh.
|
mutableprotected |
Definition at line 318 of file BoostGraph.hh.