OpenASIP
2.0
|
#include <DataDependenceGraphBuilder.hh>
Classes | |
struct | BBData |
Public Member Functions | |
DataDependenceGraphBuilder () | |
DataDependenceGraphBuilder (InterPassData &ipd) | |
virtual | ~DataDependenceGraphBuilder () |
void | addAliasAnalyzer (MemoryAliasAnalyzer *analyzer) |
virtual DataDependenceGraph * | build (ControlFlowGraph &cGraph, DataDependenceGraph::AntidependenceLevel antidependenceLevel, const TTAMachine::Machine &mach, const UniversalMachine *um=NULL, bool createMemAndFUDeps=true, bool createDeathInformation=true, llvm::AliasAnalysis *AA=NULL) |
virtual DataDependenceGraph * | build (TTAProgram::BasicBlock &bb, DataDependenceGraph::AntidependenceLevel antidependenceLevel, const TTAMachine::Machine &mach, const TCEString &ddgname="small bb", const UniversalMachine *um=NULL, bool createMemAndFUDeps=true, llvm::AliasAnalysis *AA=NULL) |
Protected Types | |
enum | BBState { BB_UNREACHED = 0, BB_QUEUED, BB_READY, BB_STATES } |
enum | ConstructionPhase { REGISTERS_AND_PROGRAM_OPERATIONS = 0, MEMORY_AND_SIDE_EFFECTS } |
typedef ControlFlowGraph::NodeSet | BasicBlockNodeSet |
typedef DataDependenceGraph::NodeSet | MNodeSet |
typedef LiveRangeData::MoveNodeUseSet | MoveNodeUseSet |
typedef LiveRangeData::MoveNodeUseMapSet | MoveNodeUseMapSet |
typedef LiveRangeData::MoveNodeUseMap | MoveNodeUseMap |
typedef LiveRangeData::MoveNodeUseSetPair | MoveNodeUseSetPair |
typedef LiveRangeData::MoveNodeUsePair | MoveNodeUsePair |
typedef std::map< int, TCEString > | SpecialRegisters |
typedef std::vector< MemoryAliasAnalyzer * > | AliasAnalyzerVector |
typedef std::map< BasicBlockNode *, BBData * > | BBDataMap |
typedef std::list< BBData * > | BBDataList |
Protected Attributes | |
std::set< TCEString > | allParamRegs_ |
BBDataList | blocksByState_ [BB_STATES] |
BBDataMap | bbData_ |
BasicBlockNode * | currentBB_ |
BBData * | currentData_ |
DataDependenceGraph * | currentDDG_ |
AliasAnalyzerVector | aliasAnalyzers_ |
SpecialRegisters | specialRegisters_ |
contains stack pointer, RV and parameter registers. More... | |
InterPassData * | interPassData_ |
ControlFlowGraph * | cfg_ |
bool | rvIsParamReg_ |
const TTAMachine::Machine * | mach_ |
Static Protected Attributes | |
static const TCEString | RA_NAME = "RA" |
DataDependenceGraphBuilder class is responsible for building data dependence graphs.
Definition at line 70 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 112 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 102 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 144 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 143 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 103 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 107 of file DataDependenceGraphBuilder.hh.
Definition at line 106 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 109 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 105 of file DataDependenceGraphBuilder.hh.
Definition at line 108 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 111 of file DataDependenceGraphBuilder.hh.
|
protected |
Enumerator | |
---|---|
BB_UNREACHED | |
BB_QUEUED | Basic block we have not yet encountered. |
BB_READY | BB which is queued to be processed. |
BB_STATES | BB which is already processed and is not queued. |
Definition at line 114 of file DataDependenceGraphBuilder.hh.
|
protected |
Enumerator | |
---|---|
REGISTERS_AND_PROGRAM_OPERATIONS | |
MEMORY_AND_SIDE_EFFECTS |
Definition at line 120 of file DataDependenceGraphBuilder.hh.
POP_COMPILER_DIAGS DataDependenceGraphBuilder::DataDependenceGraphBuilder | ( | ) |
Constructor of Data Dependence graph builder.
This constructor does not take special registers from interpass data, so it must analyze them from the code annotations. Used with old frontend.
constant alias AA check aa between global variables.
Definition at line 118 of file DataDependenceGraphBuilder.cc.
References addAliasAnalyzer(), Application::cmdLineOptions(), and LLVMTCECmdLineOptions::disableLLVMAA().
DataDependenceGraphBuilder::DataDependenceGraphBuilder | ( | InterPassData & | ipd | ) |
Constructor of Data Dependence graph builder.
This constructor takes special registers from interpass data.
Definition at line 145 of file DataDependenceGraphBuilder.cc.
References addAliasAnalyzer(), allParamRegs_, Application::cmdLineOptions(), InterPassData::datum(), LLVMTCECmdLineOptions::disableLLVMAA(), InterPassData::hasDatum(), Application::logStream(), options, REG_FP, REG_IPARAM, REG_RV, REG_RV_HIGH, REG_SP, REG_VRV, rvIsParamReg_, specialRegisters_, Conversion::toString(), Application::VERBOSE_LEVEL_DEFAULT, and Application::verboseLevel().
|
virtual |
Destructor of DataDependenceGraphBuilder
Definition at line 283 of file DataDependenceGraphBuilder.cc.
References aliasAnalyzers_, and SequenceTools::deleteAllItems().
void DataDependenceGraphBuilder::addAliasAnalyzer | ( | MemoryAliasAnalyzer * | analyzer | ) |
Adds a memory alias analyzer to the DDG builder.
analyzer | object which will analyze memory accesses. |
Definition at line 293 of file DataDependenceGraphBuilder.cc.
References aliasAnalyzers_.
Referenced by DataDependenceGraphBuilder().
|
protected |
Gets the address-writing move of a move which is a trigger or operand to a memory operation.
If none found, return null
mn | moveNode whose address write move is being searched. |
MoveNode* DataDependenceGraphBuilder::addressMove(const MoveNode& mn) { if (mn.isDestinationOperation()) { return addressOperandMove(mn.destinationOperation()); } return NULL; } Delegates the call to all registered memory address alias analyzers.
Returns the first non-unknown result. If no alias analyzer can analyze these, returns ALIAS_UNKNOWN
Definition at line 1951 of file DataDependenceGraphBuilder.cc.
References MemoryAliasAnalyzer::ALIAS_UNKNOWN, aliasAnalyzers_, MemoryAliasAnalyzer::analyze(), and currentDDG_.
Referenced by checkAndCreateMemDep(), hasEarlierMemWriteToSameAddressWithSameGuard(), and updateMemAndFuAliveAfter().
|
protected |
|
protected |
|
virtual |
Builds a DDG from a CFG.
cfg | Control flow graph where the ddg is built from. |
antidependenceLevel | level of register antidependencies to create. |
um | universalmachine used for the code if registers unallocated. if null, assumed that registers allready allocated. |
createMemAndFUDeps | whether to create also memory and fu state(side effect) dependencies or only register deps. |
createDeathInformation | whether to search the last usage of all liveranges. This is needed for things like register renamer and threading. |
Definition at line 2120 of file DataDependenceGraphBuilder.cc.
References aliasAnalyzers_, allParamRegs_, cfg_, clearUnneededBookkeeping(), createMemAndFUstateDeps(), createRegisterDeps(), currentDDG_, Exception::errorMessageStack(), Exception::fileName(), findStaticRegisters(), Exception::lineNum(), Application::logStream(), mach_, BoostGraph< GraphNode, GraphEdge >::name(), searchRegisterDeaths(), LLVMAliasAnalyzer::setLLVMAA(), DataDependenceGraph::setMachine(), and specialRegisters_.
Referenced by BUMoveNodeSelector::BUMoveNodeSelector(), llvm::LLVMTCEIRBuilder::compileOptimized(), BasicBlockPass::createDDGFromBB(), BBSchedulerController::createDDGFromBB(), CriticalPathBBMoveNodeSelector::CriticalPathBBMoveNodeSelector(), PreOptimizer::handleControlFlowGraph(), BBSchedulerController::handleProcedure(), and ProgramGraph::ProgramGraph().
|
virtual |
Creates new Data Dependence Graph for the given basic block.
Client has to delete the graph when it is not anymore used.
bb | BasicBlockNode whose data dependence graph to build. |
registerAntidependenceLevel | which reg antidependencies to create |
createMemAndFUDeps | whether to create also memory and fu state(side effect) dependencies or only register deps. |
Definition at line 456 of file DataDependenceGraphBuilder.cc.
References aliasAnalyzers_, allParamRegs_, clearUnneededBookkeeping(), constructIndividualBB(), currentBB_, currentData_, currentDDG_, findStaticRegisters(), TTAProgram::BasicBlock::liveRangeData_, mach_, MEMORY_AND_SIDE_EFFECTS, REGISTERS_AND_PROGRAM_OPERATIONS, LLVMAliasAnalyzer::setLLVMAA(), DataDependenceGraph::setMachine(), and specialRegisters_.
|
protected |
Changes state of a basic block in processing. Move BBData into a diffefent list and changes the state data in BBData.
bbd | BBData of basic block whose state is being changed |
newState | the new state of the basic block. |
Definition at line 2217 of file DataDependenceGraphBuilder.cc.
References blocksByState_, ContainerTools::removeValueIfExists(), and DataDependenceGraphBuilder::BBData::state_.
Referenced by createMemAndFUstateDeps(), createRegisterDeps(), iterateBBs(), iterateRegisterDeaths(), queueFirstBB(), searchRegisterDeaths(), setSucceedingPredepsForBB(), and updatePreceedingRegistersUsedAfter().
|
protected |
Creates memory dependencies from set of nodes to given nodes.
Does not create if gaurds of aliasing dictate edge not needed. If both guard and aliasing indicate fully transitive case for some prev nodes, then remove these previous nodes from the bookkeeping.
Definition at line 1718 of file DataDependenceGraphBuilder.cc.
References checkAndCreateMemDep(), currentDDG_, TTAProgram::Move::isUnconditional(), MoveNodeUse::mn(), MoveNode::move(), and DataDependenceGraph::sameGuards().
Referenced by processMemWrite().
|
protected |
Compares a memory op against one previous memory ops and creates dependence if may alias.
prev | Previous Memory write movenode |
mn | Current memory write movenode |
depType | dependence type which to create. |
Definition at line 1841 of file DataDependenceGraphBuilder.cc.
References MemoryAliasAnalyzer::ALIAS_FALSE, MemoryAliasAnalyzer::ALIAS_PARTIAL, MemoryAliasAnalyzer::ALIAS_TRUE, MemoryAliasAnalyzer::ALIAS_UNKNOWN, analyzeMemoryAlias(), MoveNodeUse::bbRelation(), DataDependenceGraph::connectOrDeleteEdge(), currentDDG_, MoveNode::destinationOperation(), DataDependenceEdge::EDGE_MEMORY, DataDependenceGraph::exclusingGuards(), ProgramOperation::inputMove(), ProgramOperation::inputMoveCount(), isAlwaysDifferentFU(), Application::logStream(), MoveNodeUse::loop(), ProgramOperation::machineInstr(), MoveNodeUse::mn(), PRINT_VAR, MoveNodeUse::pseudo(), and ProgramOperation::toString().
Referenced by checkAndCreateMemAntideps(), processMemUse(), updateMemUse(), and updateMemWrite().
|
protected |
Clears bookkeeping which is only needed during ddg construction.
Definition at line 2251 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), cfg_, BasicBlockNode::isNormalBB(), BoostGraph< GraphNode, GraphEdge >::node(), and BoostGraph< GraphNode, GraphEdge >::nodeCount().
Referenced by build().
|
protected |
Clears bookkeeping which is only needed during ddg construction.
BB | containing basic blocks which contain the bookkeeping. |
interBBInformation | needed whether information about inter-bb- dependencies need to be left intact. |
Definition at line 899 of file DataDependenceGraphBuilder.cc.
References LiveRangeData::fuDepAfter_, LiveRangeData::fuDepReaches_, LiveRangeData::fuDeps_, TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memDefines_, LiveRangeData::memDefReaches_, LiveRangeData::memFirstDefines_, LiveRangeData::memFirstUses_, LiveRangeData::memLastUses_, LiveRangeData::memUseReaches_, LiveRangeData::regDefAfter_, LiveRangeData::regDefines_, LiveRangeData::regDefReaches_, LiveRangeData::regFirstDefines_, LiveRangeData::regFirstUses_, LiveRangeData::registersUsedAfter_, LiveRangeData::registersUsedInOrAfter_, LiveRangeData::regLastKills_, LiveRangeData::regLastUses_, LiveRangeData::regUseAfter_, and LiveRangeData::regUseReaches_.
|
protected |
|
protected |
Constructs a Data Dependence Graph for a single basic block.
Goes thru all moves in the basic block and analyzes their dependencies, creates their ProgramOperations, MoveNodes and Edges, and adds the nodes and edges to the graph. Also used inside implementation of multi-BB-DDG-code. BB being analyzed has to be already set in member variable currentBB_, and the graph created and set into member variable currentBB_.
bbd | basic block to constructs. |
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 531 of file DataDependenceGraphBuilder.cc.
References DataDependenceGraphBuilder::BBData::bblock_, constructIndividualBB(), constructIndividualFromInlineAsmBB(), currentBB_, currentData_, and BasicBlockNode::isScheduled().
|
protected |
Constructs a Data Dependence Graph for a single basic block.
Goes thru all moves in the basic block and analyzes their dependencies, creates their ProgramOperations, MoveNodes and Edges, and adds the nodes and edges to the graph. Also used inside implementation of multi-BB-DDG-code. BB being analyzed has to be already set in member variable currentBB_, and the graph created and set into member variable currentBB_.
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 560 of file DataDependenceGraphBuilder.cc.
References __func__, DataDependenceGraph::addNode(), BasicBlockNode::basicBlock(), cfg_, currentBB_, currentData_, currentDDG_, TTAProgram::Move::destination(), DataDependenceGraphBuilder::BBData::destPending_, TTAProgram::CodeSnippet::instructionAtIndex(), TTAProgram::CodeSnippet::instructionCount(), TTAProgram::Terminal::isFUPort(), TTAProgram::Move::isUnconditional(), TTAProgram::BasicBlock::liveRangeData_, TTAProgram::Instruction::moveCount(), TTAProgram::Instruction::movePtr(), BoostGraph< GraphNode, GraphEdge >::name(), DataDependenceGraph::nodeOfMove(), BasicBlockNode::originalEndAddress(), BasicBlockNode::originalStartAddress(), LiveRangeData::potentialRegKills_, processDestination(), processGuard(), processSource(), DataDependenceGraphBuilder::BBData::readPending_, REGISTERS_AND_PROGRAM_OPERATIONS, TTAProgram::Move::source(), Conversion::toString(), and GraphBase< GraphNode, GraphEdge >::writeToDotFile().
Referenced by build(), constructIndividualBB(), and iterateBBs().
|
protected |
Same as constructIndividualBB() but for already fully scheduled and inline asm BB.
@Note: currently, this does not really construct DDG - just creates dummy MoveNodes.
Definition at line 669 of file DataDependenceGraphBuilder.cc.
References DataDependenceGraph::addNode(), assert, BasicBlockNode::basicBlock(), currentBB_, currentDDG_, LiveRangeData::inlineAsmClobbers_, LiveRangeData::inlineAsmRegDefs_, LiveRangeData::inlineAsmRegUses_, SetTools::intersection(), BasicBlockNode::isScheduled(), TTAProgram::Instruction::moveCount(), TTAProgram::Instruction::movePtr(), TTAMachine::Component::name(), LiveRangeData::regDefines_, LiveRangeData::regFirstUses_, TTAMachine::RegisterGuard::registerFile(), TTAMachine::RegisterGuard::registerIndex(), REGISTERS_AND_PROGRAM_OPERATIONS, LiveRangeData::regKills_, Conversion::toString(), and DataDependenceGraph::updateRegUse().
Referenced by constructIndividualBB().
|
protected |
Does the second phase of ddg construction.
handles mem deps and fu state deps.
Definition at line 2312 of file DataDependenceGraphBuilder.cc.
References BB_QUEUED, BB_UNREACHED, bbData_, blocksByState_, changeState(), AssocTools::deleteAllValues(), initializeBBStates(), iterateBBs(), MEMORY_AND_SIDE_EFFECTS, and queueFirstBB().
Referenced by build().
|
protected |
Creates operand edges between input and output moves of a programoperation.
po | ProgramOperation whose egdes we are creating. |
Definition at line 1141 of file DataDependenceGraphBuilder.cc.
References DataDependenceGraph::connectOrDeleteEdge(), currentDDG_, DataDependenceEdge::DEP_UNKNOWN, DataDependenceEdge::EDGE_OPERATION, and Operation::name().
Referenced by LLVMTCEDataDependenceGraphBuilder::buildLocalDDG(), and processResultRead().
|
protected |
Creates register antidependencies from set of movenodeuses to one movenode.
mnd | Movenode which to creat those dependencies |
predecessorNodes | Nodes where to create dependencies from |
depType | whether to create WAR or WAW antidependencies |
guardedKillFound | if there is a write with same guard to the reg. |
Definition at line 1303 of file DataDependenceGraphBuilder.cc.
References assert, DataDependenceGraph::connectOrDeleteEdge(), currentDDG_, DataDependenceEdge::DEP_WAR, DataDependenceEdge::DEP_WAW, DataDependenceEdge::EDGE_RA, DataDependenceEdge::EDGE_REGISTER, DataDependenceGraph::exclusingGuards(), MoveNodeUse::mn(), MoveNodeUse::pseudo(), MoveNodeUse::ra(), and DataDependenceGraph::sameGuards().
Referenced by processRegWrite().
|
protected |
Does the first phase of ddg construction. handles register deps.
cfg | control flow graph containing the code. |
Definition at line 2268 of file DataDependenceGraphBuilder.cc.
References DataDependenceGraph::addNode(), BB_QUEUED, BB_UNREACHED, bbData_, blocksByState_, cfg_, changeState(), currentBB_, currentDDG_, AssocTools::deleteAllValues(), ControlFlowGraph::entryNode(), initializeBBStates(), iterateBBs(), Application::logStream(), BoostGraph< GraphNode, GraphEdge >::name(), processEntryNode(), queueFirstBB(), REGISTERS_AND_PROGRAM_OPERATIONS, Application::VERBOSE_LEVEL_DEFAULT, and Application::verboseLevel().
Referenced by build().
|
protected |
Definition at line 1646 of file DataDependenceGraphBuilder.cc.
References DataDependenceGraph::connectOrDeleteEdge(), currentDDG_, DataDependenceEdge::DEP_UNKNOWN, Operation::dependsOn(), DataDependenceEdge::EDGE_FUSTATE, DataDependenceGraph::exclusingGuards(), Operation::hasSideEffects(), isAlwaysDifferentFU(), and OperationPool::sharesState().
Referenced by createTriggerDependencies(), and updateBB().
|
protected |
Analyzes operation of a trigger write.
If memory read, calls processMemRead to manage memory read dependencies. Manages FU State dependencies between operations.
moveNode | mnData related to a move which triggers an operation |
dop | Operation being triggered |
Definition at line 1596 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), createSideEffectEdges(), currentBB_, LiveRangeData::fuDepReaches_, LiveRangeData::fuDeps_, Operation::hasSideEffects(), TTAProgram::Move::isUnconditional(), TTAProgram::BasicBlock::liveRangeData_, MoveNode::move(), processMemUse(), processMemWrite(), Operation::readsMemory(), OperationPool::sharesState(), and Operation::writesMemory().
Referenced by processTriggerMemoryAndFUStates().
|
protected |
Definition at line 1200 of file DataDependenceGraphBuilder.cc.
References currentDDG_, MoveNodeUse::guard(), MoveNodeUse::mn(), and DataDependenceGraph::sameGuards().
Referenced by processRegUse().
|
protected |
Initializes the static register table from register from UniversalMachine.
Needed for analysis of data dependencies of parameter registers, SP, RV etc.
um | UniversalMachine |
registers | map where to store those registers. |
Definition at line 421 of file DataDependenceGraphBuilder.cc.
References allParamRegs_, UniversalMachine::integerRegisterFile(), TTAMachine::BaseRegisterFile::port(), REG_SP, and DisassemblyRegister::registerName().
|
protected |
Tries to find annotations which tell the static registers from a program.
Used only with the old gcc frontend.
cfg | cfg where to search the annotations. |
Definition at line 324 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), findStaticRegisters(), BasicBlockNode::isNormalBB(), BoostGraph< GraphNode, GraphEdge >::node(), and BoostGraph< GraphNode, GraphEdge >::nodeCount().
|
protected |
find special register data from old frontend code
Tries to find annotations which tell the static registers from a program.
Used only with the old gcc frontend.
cs | codesnippet where to search the annotations. |
Definition at line 306 of file DataDependenceGraphBuilder.cc.
References TTAProgram::CodeSnippet::instructionAtIndex(), and TTAProgram::CodeSnippet::instructionCount().
Referenced by build(), and findStaticRegisters().
|
protected |
Tries to find annotations which tell the static registers from a program.
Used only with the old gcc frontend.
ins | instruction where to search the annotations. |
Definition at line 344 of file DataDependenceGraphBuilder.cc.
References __func__, allParamRegs_, TTAProgram::AnnotatedInstructionElement::annotation(), TTAProgram::AnnotatedInstructionElement::annotationCount(), TTAProgram::Move::destination(), TTAProgram::ProgramAnnotation::id(), TTAProgram::Instruction::move(), TTAProgram::Instruction::moveCount(), REG_IPARAM, REG_RV, REG_SP, DisassemblyRegister::registerName(), TTAProgram::Move::source(), TTAProgram::ProgramAnnotation::stringValue(), and Conversion::toInt().
|
protected |
Checks if there is an earlier write to same address or with same guard.
mnd | the current node dictating guard and mem address to check. |
defines | set of earlier writes to check for the write. |
Definition at line 1688 of file DataDependenceGraphBuilder.cc.
References MemoryAliasAnalyzer::ALIAS_TRUE, analyzeMemoryAlias(), currentDDG_, MoveNode::destinationOperation(), isAddressTraceable(), MoveNodeUse::mn(), and DataDependenceGraph::sameGuards().
Referenced by processMemUse(), and processMemWrite().
|
protected |
Checks whether there is a previous alive write with same guard than given node.
The origin of the guard value is tracked from DDG, not only plain guard is done.
mnd | MoveNode containing the guard. |
defines | set of earlier writes which to check. |
Definition at line 1183 of file DataDependenceGraphBuilder.cc.
References currentDDG_, MoveNodeUse::guard(), MoveNodeUse::mn(), and DataDependenceGraph::sameGuards().
Referenced by processRegWrite().
|
protected |
Initializes states of all BB's to unreached
Definition at line 2191 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), BB_UNREACHED, bbData_, blocksByState_, cfg_, BasicBlockNode::isNormalBB(), TTAProgram::BasicBlock::liveRangeData_, BoostGraph< GraphNode, GraphEdge >::node(), and BoostGraph< GraphNode, GraphEdge >::nodeCount().
Referenced by createMemAndFUstateDeps(), createRegisterDeps(), and searchRegisterDeaths().
|
protected |
Can some analyzer say something about this address?
mn | Movenode containing memory address write. |
Definition at line 1974 of file DataDependenceGraphBuilder.cc.
References aliasAnalyzers_, and currentDDG_.
Referenced by hasEarlierMemWriteToSameAddressWithSameGuard(), and processMemWrite().
|
protected |
Check if operations are assigned to differnt FU
Operations forced to different FUs are independent since the operation state is per FU. Check if the moves have forced set of FUs and if the sets overlap.
srcMN | MoveNode first node for dependency check |
dstMN | MoveNode for which dependency needs to be checked |
Definition at line 2994 of file DataDependenceGraphBuilder.cc.
References TTAProgram::ProgramAnnotation::ANN_ALLOWED_UNIT_DST, TTAProgram::AnnotatedInstructionElement::annotation(), TTAProgram::AnnotatedInstructionElement::hasAnnotation(), TTAProgram::AnnotatedInstructionElement::hasAnnotations(), MoveNode::move(), and TTAProgram::ProgramAnnotation::stringValue().
Referenced by checkAndCreateMemDep(), and createSideEffectEdges().
|
protected |
Definition at line 810 of file DataDependenceGraphBuilder.cc.
References __func__, TTAProgram::Move::destination(), MoveNode::destinationOperation(), mach_, MoveNode::move(), Operation::name(), ProgramOperation::operation(), TTAProgram::Terminal::operationIndex(), and MachineInfo::triggerIndex().
Referenced by processDestination().
|
protected |
Iterates over basic blocks as long as there is some BB to process.
Handles a BB, updates the live value lists of its successors. If incoming live values of a BB change, it's scheduled for reprocessing.
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 2345 of file DataDependenceGraphBuilder.cc.
References BB_QUEUED, BB_READY, blocksByState_, changeState(), DataDependenceGraphBuilder::BBData::constructed_, constructIndividualBB(), REGISTERS_AND_PROGRAM_OPERATIONS, setSucceedingPredeps(), updateBB(), updateMemAndFuAliveAfter(), and updateRegistersAliveAfter().
Referenced by createMemAndFUstateDeps(), and createRegisterDeps().
|
protected |
Iterates thru all queued BB's and find register deaths from them.
Loops as long as something keeps changing.
Definition at line 2924 of file DataDependenceGraphBuilder.cc.
References BB_QUEUED, BB_READY, blocksByState_, changeState(), DataDependenceGraphBuilder::BBData::constructed_, updatePreceedingRegistersUsedAfter(), and updateRegistersUsedInOrAfter().
Referenced by searchRegisterDeaths().
|
protected |
Checks into which category this memory address belongs.
Memory accesses in different categories cannot alias, and there is separate bookkeeping for every category. Current implementation separates spills, different alias spaces, restrict keywords and opencl work items.
mnd | MoveNodeUse which transfers the address of the memory operation. |
@TODO: create some memorycategorizer interface for this analysis?
Definition at line 1999 of file DataDependenceGraphBuilder.cc.
References abortWithError, TTAProgram::ProgramAnnotation::ANN_CONSTANT_MEM, TTAProgram::ProgramAnnotation::ANN_STACKUSE_FP_SAVE, TTAProgram::ProgramAnnotation::ANN_STACKUSE_RA_SAVE, TTAProgram::ProgramAnnotation::ANN_STACKUSE_SPILL, TTAProgram::AnnotatedInstructionElement::annotation(), TTAProgram::AnnotatedInstructionElement::annotationCount(), Application::cmdLineOptions(), MoveNode::destinationOperation(), LLVMTCECmdLineOptions::disableAddressSpaceAA(), TTAProgram::AnnotatedInstructionElement::hasAnnotations(), TTAProgram::ProgramAnnotation::id(), ProgramOperation::inputMove(), ProgramOperation::inputMoveCount(), MoveNode::isDestinationOperation(), MoveNodeUse::mn(), MoveNode::move(), PRINT_VAR, TTAProgram::ProgramAnnotation::stringValue(), Conversion::toHexString(), and MoveNode::toString().
Referenced by processMemUse(), and processMemWrite().
|
protected |
Processes a call of a function.
Pseudo-reads from parameter registers and SP, writes to RV and RA.
mn | MoveNode containg the function call move. |
Definition at line 1532 of file DataDependenceGraphBuilder.cc.
References processRegUse(), processRegWrite(), RA_NAME, REG_IPARAM, REG_RV, REG_RV_HIGH, REG_SP, REG_VRV, rvIsParamReg_, and specialRegisters_.
Referenced by processTriggerRegistersAndOperations().
|
protected |
Analyzes destination of a move. Updates bookkeeping and handles WaW and WaR dependencies of the move.
Checks whether destination is operation or register and calls other functions to do the actual dependence checks etc.
moveNode | MoveNode whose destination is being processed. |
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 844 of file DataDependenceGraphBuilder.cc.
References __func__, Operation::affectedByCount(), Operation::affectsCount(), TTAProgram::Move::destination(), Operation::hasSideEffects(), TTAProgram::TerminalFUPort::hintOperation(), TTAProgram::Move::isControlFlowMove(), TTAProgram::Terminal::isFUPort(), TTAProgram::Terminal::isGPR(), TTAProgram::TerminalFUPort::isOpcodeSetting(), isTriggering(), MoveNode::move(), TTAProgram::Terminal::port(), processOperand(), processRegWrite(), processTriggerMemoryAndFUStates(), processTriggerRegistersAndOperations(), RA_NAME, DisassemblyRegister::registerName(), REGISTERS_AND_PROGRAM_OPERATIONS, MoveNode::toString(), and Operation::usesMemory().
Referenced by constructIndividualBB().
|
protected |
Processes the pseudo deps from entry node.
This procedure must be called when currentBB is the first real BB of the procedure.
Definition at line 2694 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), currentBB_, TTAProgram::BasicBlock::liveRangeData_, RA_NAME, REG_FP, REG_IPARAM, REG_RV, REG_SP, LiveRangeData::regDefReaches_, rvIsParamReg_, and specialRegisters_.
Referenced by createRegisterDeps().
|
protected |
Analyzes dependencies related to guard usage.
Finds the guard register used for the guard and the move Which writes the guard register, and creates a guard egde between them.
moveNode | MNData of move containing guarded move. |
Definition at line 760 of file DataDependenceGraphBuilder.cc.
References __func__, TTAProgram::MoveGuard::guard(), TTAProgram::Move::guard(), MoveNode::move(), TTAMachine::Component::name(), processRegUse(), TTAMachine::RegisterGuard::registerFile(), TTAMachine::RegisterGuard::registerIndex(), Conversion::toString(), and MoveNode::toString().
Referenced by constructIndividualBB().
|
protected |
Processes a memory read.
Creates dependence edges and updates bookkeeping.
mnd | MoveNodeUse of MoveNode being processed. |
Definition at line 1800 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), checkAndCreateMemDep(), currentBB_, DataDependenceEdge::DEP_RAW, hasEarlierMemWriteToSameAddressWithSameGuard(), TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memDefines_, LiveRangeData::memFirstUses_, LiveRangeData::memKills_, LiveRangeData::memLastUses_, memoryCategory(), and updateMemUse().
Referenced by createTriggerDependencies().
|
protected |
Updates memory operation bookkeeping and creates WaR and WaW memory dependencies.
moveNode | MoveNodeUse related to Move whose memory write to are processing. |
Definition at line 1744 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), checkAndCreateMemAntideps(), currentBB_, DataDependenceEdge::DEP_WAR, DataDependenceEdge::DEP_WAW, MoveNode::destinationOperation(), hasEarlierMemWriteToSameAddressWithSameGuard(), isAddressTraceable(), TTAProgram::Move::isUnconditional(), TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memDefines_, LiveRangeData::memFirstDefines_, LiveRangeData::memKills_, LiveRangeData::memLastKill_, LiveRangeData::memLastUses_, memoryCategory(), MoveNodeUse::mn(), MoveNode::move(), and updateMemWrite().
Referenced by createTriggerDependencies(), and processTriggerMemoryAndFUStates().
|
protected |
Analyzes operand writes.
Part of ProgramOperation creation.
moveNode | mnData related to a move which writes a parameter. |
dop | Operation whose parameter is being written. |
Definition at line 1062 of file DataDependenceGraphBuilder.cc.
References MoveNode::addDestinationOperationPtr(), assert, currentData_, TTAProgram::Move::destination(), DataDependenceGraphBuilder::BBData::destPending_, TTAProgram::TerminalFUPort::hasProgramOperation(), MoveNode::move(), and TTAProgram::TerminalFUPort::programOperation().
Referenced by processDestination().
|
protected |
Handles a usage of a register value.
The usage can be either register read or guard usage. Creates the incoming edges and handles bookkeping related to the register read.
mnd | Data about the register use |
reg | Register containing the value being used. |
Definition at line 1229 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), DataDependenceGraph::connectOrDeleteEdge(), currentBB_, currentDDG_, DataDependenceEdge::DEP_RAW, earlierWritesWithSameGuard(), DataDependenceEdge::EDGE_RA, DataDependenceEdge::EDGE_REGISTER, DataDependenceGraph::exclusingGuards(), MoveNodeUse::guard(), DataDependenceGraph::hasRegWaw(), TTAProgram::BasicBlock::liveRangeData_, MoveNodeUse::mn(), LiveRangeData::potentialRegKills_, MoveNodeUse::pseudo(), MoveNodeUse::ra(), LiveRangeData::regDefines_, LiveRangeData::regFirstUses_, LiveRangeData::regKills_, LiveRangeData::regLastUses_, and DataDependenceGraph::updateRegUse().
Referenced by processCall(), processGuard(), processReturn(), and processSource().
|
protected |
Analyzes a write to a register.
Creates dependence edges and updates bookkeeping.
mnd | MoveNodeUse containing MoveNode that writes a register |
reg | register being written by the given movenode. |
Definition at line 1369 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), createRegisterAntideps(), currentBB_, currentDDG_, DataDependenceEdge::DEP_WAR, DataDependenceEdge::DEP_WAW, DataDependenceGraph::exclusingGuards(), hasEarlierWriteWithSameGuard(), DataDependenceGraph::hasIntraBBRegisterAntidependencies(), DataDependenceGraph::hasSingleBBLoopRegisterAntidependencies(), TTAProgram::Move::isUnconditional(), TTAProgram::BasicBlock::liveRangeData_, MoveNodeUse::mn(), MoveNode::move(), LiveRangeData::potentialRegKills_, LiveRangeData::regDefines_, LiveRangeData::regFirstDefines_, LiveRangeData::regKills_, LiveRangeData::regLastKills_, LiveRangeData::regLastUses_, and DataDependenceGraph::updateRegWrite().
Referenced by processCall(), and processDestination().
|
protected |
Analyzes a source of a result read.
Handles program operation creation and operation dependence creation.
moveNode | MoveNode of the move being analyzed. |
Definition at line 1104 of file DataDependenceGraphBuilder.cc.
References __func__, DataDependenceGraph::addProgramOperation(), createOperationEdges(), currentData_, currentDDG_, MoveNode::move(), DataDependenceGraphBuilder::BBData::poReadsHandled_, DataDependenceGraphBuilder::BBData::readPending_, MoveNode::setSourceOperationPtr(), and TTAProgram::Move::toString().
Referenced by processSource().
|
protected |
Processes a return from a function.
Creates pseudo-read-deps to SP and RV registers.
moveNode | moveNode containg the return move. |
Definition at line 1486 of file DataDependenceGraphBuilder.cc.
References processRegUse(), REG_FP, REG_RV, REG_RV_HIGH, REG_SP, REG_VRV, and specialRegisters_.
Referenced by processSource().
|
protected |
Analysis a source of a move and processes it's dependencies, and if it's a result read then also participates in ProgramOperation creation.
moveNode | Movenode being analyzed. |
Definition at line 785 of file DataDependenceGraphBuilder.cc.
References TTAProgram::Terminal::isFUPort(), TTAProgram::Terminal::isGPR(), TTAProgram::Move::isReturn(), MoveNode::move(), TTAProgram::Terminal::port(), processRegUse(), processResultRead(), processReturn(), RA_NAME, DisassemblyRegister::registerName(), and TTAProgram::Move::source().
Referenced by constructIndividualBB().
|
protected |
Analyze write to a trigger of an operation.
Participates in ProgramOperation building. Calls createTriggerDependencies(moveNode, dop) to create the memory and fu state dependence egdes of the operation. Checks if operation is call and if it is, processes the call-related memory dependencies.
moveNode | mnData related to a move which triggers an operation |
dop | Operation being triggered |
Definition at line 1040 of file DataDependenceGraphBuilder.cc.
References createTriggerDependencies(), TTAProgram::Move::isFunctionCall(), MoveNode::move(), and processMemWrite().
Referenced by processDestination().
|
protected |
Handles ProgramOperation creation for a triggering move.
moveNode | triggering movenode. |
dop | operation which is being triggered by the movenode. |
Definition at line 948 of file DataDependenceGraphBuilder.cc.
References __func__, MoveNode::addDestinationOperationPtr(), DataDependenceGraph::addProgramOperation(), assert, currentData_, currentDDG_, TTAProgram::Move::destination(), DataDependenceGraphBuilder::BBData::destPending_, POMDisassembler::disassemble(), TTAProgram::TerminalFUPort::hasProgramOperation(), MoveNode::move(), Operation::name(), Operation::numberOfInputs(), Operation::numberOfOutputs(), DataDependenceGraphBuilder::BBData::poReadsHandled_, TTAProgram::TerminalFUPort::programOperation(), DataDependenceGraphBuilder::BBData::readPending_, and GraphBase< GraphNode, GraphEdge >::writeToDotFile().
Referenced by processTriggerRegistersAndOperations().
|
protected |
Analyze write to a trigger of an operation.
Participates in ProgramOperation building. Calls createTriggerDependencies(moveNode, dop) to create the register and operation dependence egdes of the operation. Checks if operation is call and if it is, processes the call-related register dependencies.
moveNode | mnData related to a move which triggers an operation |
dop | Operation being triggered |
Definition at line 1018 of file DataDependenceGraphBuilder.cc.
References TTAProgram::Move::isFunctionCall(), MoveNode::move(), processCall(), and processTriggerPO().
Referenced by processDestination().
|
protected |
Queues first basic block to be processed.
Definition at line 2238 of file DataDependenceGraphBuilder.cc.
References assert, BB_QUEUED, bbData_, cfg_, changeState(), ControlFlowGraph::entryNode(), and BoostGraph< GraphNode, GraphEdge >::successors().
Referenced by createMemAndFUstateDeps(), and createRegisterDeps().
|
protected |
Searches the last usages a registers.
This information is used for checking whether given register contains live value at given cycle.
Definition at line 2882 of file DataDependenceGraphBuilder.cc.
References BB_QUEUED, BB_UNREACHED, bbData_, blocksByState_, cfg_, changeState(), AssocTools::deleteAllValues(), initializeBBStates(), iterateRegisterDeaths(), Application::logStream(), BoostGraph< GraphNode, GraphEdge >::name(), BoostGraph< GraphNode, GraphEdge >::sinkNodes(), Application::VERBOSE_LEVEL_DEFAULT, and Application::verboseLevel().
Referenced by build().
|
protected |
Sets outgoing data from this BB to incoming data of successors.
Also queues them to be reprocessed if they are changed.
bbd | BBD whose successors will be updated. |
queueAll | If true, queues all successors even if they do not change. |
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 2424 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), DataDependenceGraphBuilder::BBData::bblock_, cfg_, setSucceedingPredepsForBB(), and BoostGraph< GraphNode, GraphEdge >::successors().
Referenced by iterateBBs().
|
protected |
Sets outgoing data from this BB to incoming data of one successor.
Also queues them to be reprocessed if they are changed.
bb | BB whose successor will be updated. |
successor | successor BB whose incoming data is being updated. |
queueAll | If true, queues all successors even if they do not change. |
loop | whether to add loop property to the copied bookkeeping, ie create edges with loop property. |
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 2460 of file DataDependenceGraphBuilder.cc.
References LiveRangeData::appendMoveNodeUse(), LiveRangeData::appendUseMapSets(), BasicBlockNode::basicBlock(), BB_QUEUED, bbData_, changeState(), currentDDG_, LiveRangeData::fuDepAfter_, LiveRangeData::fuDepReaches_, DataDependenceGraph::hasAllRegisterAntidependencies(), DataDependenceGraph::hasSingleBBLoopRegisterAntidependencies(), TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memDefAfter_, LiveRangeData::memDefReaches_, LiveRangeData::memUseAfter_, LiveRangeData::memUseReaches_, LiveRangeData::regDefAfter_, LiveRangeData::regDefReaches_, REGISTERS_AND_PROGRAM_OPERATIONS, LiveRangeData::regUseAfter_, and LiveRangeData::regUseReaches_.
Referenced by setSucceedingPredeps().
|
protected |
Reprocesses a basic block which has already once been processed.
Checks dependencies to first uses and definitions of registers, does not recreate edges inside the basic block.
bbd | BBData for basic block which is being reprocessed. |
phase | whether to handle register& operation deps or memory and side-effect dependencies. |
Definition at line 2743 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), DataDependenceGraphBuilder::BBData::bblock_, createSideEffectEdges(), currentBB_, currentData_, currentDDG_, LiveRangeData::fuDepReaches_, LiveRangeData::fuDeps_, DataDependenceGraph::hasSingleBBLoopRegisterAntidependencies(), TTAProgram::TerminalFUPort::hintOperation(), TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memFirstDefines_, LiveRangeData::memFirstUses_, LiveRangeData::regFirstDefines_, LiveRangeData::regFirstUses_, REGISTERS_AND_PROGRAM_OPERATIONS, updateMemUse(), updateMemWrite(), DataDependenceGraph::updateRegUse(), and DataDependenceGraph::updateRegWrite().
Referenced by iterateBBs().
|
protected |
Updates live mem access lists and fu state usages after a basic block has been processed.
Copies use and write definitions from the basic block and it's prodecessors to the after alive data structures.
bbd | BBData for bb being processed |
Definition at line 2592 of file DataDependenceGraphBuilder.cc.
References MemoryAliasAnalyzer::ALIAS_TRUE, analyzeMemoryAlias(), AssocTools::append(), LiveRangeData::appendUseMapSets(), BasicBlockNode::basicBlock(), DataDependenceGraphBuilder::BBData::bblock_, LiveRangeData::fuDepAfter_, LiveRangeData::fuDeps_, TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memDefAfter_, LiveRangeData::memDefines_, LiveRangeData::memDefReaches_, LiveRangeData::memKills_, LiveRangeData::memUseAfter_, and LiveRangeData::memUseReaches_.
Referenced by iterateBBs().
|
protected |
Checks memory read against uses and defs in incoming basic blocks. Creates the needed dependence edges.
mnd | MoveNodeUse of movenode being processed. |
category | which memory category this memory write belongs. |
Definition at line 2859 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), checkAndCreateMemDep(), currentBB_, DataDependenceEdge::DEP_RAW, TTAProgram::BasicBlock::liveRangeData_, and LiveRangeData::memDefReaches_.
Referenced by processMemUse(), and updateBB().
|
protected |
Checks memory write against uses and defs in incoming basic blocks. Creates the needed dependence edges.
mnd | MoveNodeUse of movenode being processed. |
category | which memory category this memory write belongs. |
Definition at line 2833 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), checkAndCreateMemDep(), currentBB_, DataDependenceEdge::DEP_WAR, DataDependenceEdge::DEP_WAW, TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::memDefReaches_, and LiveRangeData::memUseReaches_.
Referenced by processMemWrite(), and updateBB().
|
protected |
Updates bookkeeping used for calculating register deaths.
Marks registers used at or after some BB to it's predecessor BB's.
bbd | basic block to process. |
firstTime | whether this BB is analyzer for the first time. |
Definition at line 2390 of file DataDependenceGraphBuilder.cc.
References AssocTools::append(), BasicBlockNode::basicBlock(), BB_QUEUED, bbData_, DataDependenceGraphBuilder::BBData::bblock_, cfg_, changeState(), TTAProgram::BasicBlock::liveRangeData_, BoostGraph< GraphNode, GraphEdge >::predecessors(), LiveRangeData::registersUsedAfter_, LiveRangeData::registersUsedInOrAfter_, and DataDependenceGraphBuilder::BBData::state_.
Referenced by iterateRegisterDeaths().
|
protected |
Updates live register lists after a basic block has been processed.
Copies use and define definitions from the basic block and it's prodecessors to the after alive data structures.
bbd | BBData for bb being processed |
Definition at line 2519 of file DataDependenceGraphBuilder.cc.
References LiveRangeData::appendUseMapSets(), BasicBlockNode::basicBlock(), DataDependenceGraphBuilder::BBData::bblock_, currentDDG_, DataDependenceGraph::hasAllRegisterAntidependencies(), TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::regDefAfter_, LiveRangeData::regDefines_, LiveRangeData::regDefReaches_, LiveRangeData::regKills_, LiveRangeData::regLastUses_, LiveRangeData::regUseAfter_, and LiveRangeData::regUseReaches_.
Referenced by iterateBBs().
|
protected |
Updates bookkeeping about registers used in this or later BBs.
This is a helper function used by searchRegisterDeaths() method.
bbd | Data about one basicblock. |
Definition at line 2955 of file DataDependenceGraphBuilder.cc.
References BasicBlockNode::basicBlock(), DataDependenceGraphBuilder::BBData::bblock_, TTAProgram::BasicBlock::liveRangeData_, LiveRangeData::regFirstUses_, LiveRangeData::registersUsedAfter_, LiveRangeData::registersUsedInOrAfter_, and LiveRangeData::regKills_.
Referenced by iterateRegisterDeaths().
|
protected |
Definition at line 315 of file DataDependenceGraphBuilder.hh.
Referenced by addAliasAnalyzer(), analyzeMemoryAlias(), build(), isAddressTraceable(), and ~DataDependenceGraphBuilder().
|
protected |
Definition at line 100 of file DataDependenceGraphBuilder.hh.
Referenced by build(), LLVMTCEDataDependenceGraphBuilder::buildFromBB(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), DataDependenceGraphBuilder(), and findStaticRegisters().
|
protected |
Definition at line 311 of file DataDependenceGraphBuilder.hh.
Referenced by createMemAndFUstateDeps(), createRegisterDeps(), initializeBBStates(), queueFirstBB(), searchRegisterDeaths(), setSucceedingPredepsForBB(), and updatePreceedingRegistersUsedAfter().
|
protected |
Definition at line 309 of file DataDependenceGraphBuilder.hh.
Referenced by changeState(), createMemAndFUstateDeps(), createRegisterDeps(), initializeBBStates(), iterateBBs(), iterateRegisterDeaths(), and searchRegisterDeaths().
|
protected |
Definition at line 320 of file DataDependenceGraphBuilder.hh.
Referenced by build(), clearUnneededBookkeeping(), constructIndividualBB(), createRegisterDeps(), initializeBBStates(), queueFirstBB(), searchRegisterDeaths(), setSucceedingPredeps(), and updatePreceedingRegistersUsedAfter().
|
protected |
Definition at line 312 of file DataDependenceGraphBuilder.hh.
Referenced by build(), constructIndividualBB(), constructIndividualFromInlineAsmBB(), createRegisterDeps(), createTriggerDependencies(), processEntryNode(), processMemUse(), processMemWrite(), processRegUse(), processRegWrite(), updateBB(), updateMemUse(), and updateMemWrite().
|
protected |
Definition at line 313 of file DataDependenceGraphBuilder.hh.
Referenced by build(), constructIndividualBB(), processOperand(), processResultRead(), processTriggerPO(), and updateBB().
|
protected |
Definition at line 314 of file DataDependenceGraphBuilder.hh.
Referenced by analyzeMemoryAlias(), build(), LLVMTCEDataDependenceGraphBuilder::buildFromBB(), LLVMTCEDataDependenceGraphBuilder::buildFromCFG(), LLVMTCEDataDependenceGraphBuilder::buildLocalDDG(), checkAndCreateMemAntideps(), checkAndCreateMemDep(), constructIndividualBB(), constructIndividualFromInlineAsmBB(), createOperationEdges(), createRegisterAntideps(), createRegisterDeps(), createSideEffectEdges(), earlierWritesWithSameGuard(), hasEarlierMemWriteToSameAddressWithSameGuard(), hasEarlierWriteWithSameGuard(), isAddressTraceable(), processRegUse(), processRegWrite(), processResultRead(), processTriggerPO(), setSucceedingPredepsForBB(), updateBB(), and updateRegistersAliveAfter().
|
protected |
Definition at line 319 of file DataDependenceGraphBuilder.hh.
|
protected |
Definition at line 322 of file DataDependenceGraphBuilder.hh.
Referenced by build(), and isTriggering().
|
staticprotected |
Internal constant for the name of the return address port
Definition at line 318 of file DataDependenceGraphBuilder.hh.
Referenced by processCall(), processDestination(), processEntryNode(), and processSource().
|
protected |
Definition at line 321 of file DataDependenceGraphBuilder.hh.
Referenced by DataDependenceGraphBuilder(), processCall(), and processEntryNode().
|
protected |
contains stack pointer, RV and parameter registers.
Definition at line 317 of file DataDependenceGraphBuilder.hh.
Referenced by build(), DataDependenceGraphBuilder(), processCall(), processEntryNode(), and processReturn().