|
| | LLVMTCEDataDependenceGraphBuilder (InterPassData &ipd) |
| |
| virtual | ~LLVMTCEDataDependenceGraphBuilder () |
| |
| virtual DataDependenceGraph * | buildFromCFG (ControlFlowGraph &cGraph, const UniversalMachine *um=NULL) |
| |
| virtual DataDependenceGraph * | buildFromBB (TTAProgram::BasicBlock &bb, const UniversalMachine *um=NULL) |
| |
| | 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) |
| |
|
| 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 |
| |
| bool | isTriggering (const MoveNode &mn) |
| |
| void | updatePreceedingRegistersUsedAfter (BBData &bbd, bool firstTime) |
| |
| bool | updateRegistersUsedInOrAfter (BBData &bbd) |
| |
| bool | updateRegistersAliveAfter (BBData &bbd) |
| |
| bool | updateMemAndFuAliveAfter (BBData &bbd) |
| |
| void | createMemAndFUstateDeps () |
| |
| void | createRegisterDeps () |
| |
| void | initializeBBStates () |
| |
| BasicBlockNode * | queueFirstBB () |
| |
| void | clearUnneededBookkeeping () |
| |
| void | clearUnneededBookkeeping (TTAProgram::BasicBlock &bb, bool aliveInformationNeeded=true) |
| |
| void | iterateBBs (ConstructionPhase phase) |
| |
| void | searchRegisterDeaths () |
| |
| void | iterateRegisterDeaths () |
| |
| void | setSucceedingPredeps (BBData &bbd, bool queueAll, ConstructionPhase phase) |
| |
| bool | appendUseMapSets (const MoveNodeUseMapSet &srcMap, MoveNodeUseMapSet &dstMap, bool addLoopProperty) |
| |
| void | setSucceedingPredepsForBB (TTAProgram::BasicBlock &processedBB, BasicBlockNode &successor, bool queueAll, bool loop, ConstructionPhase phase) |
| |
| void | updateBB (BBData &bbd, ConstructionPhase phase) |
| |
| void | constructIndividualBB (ConstructionPhase phase) |
| |
| void | constructIndividualFromInlineAsmBB (ConstructionPhase phase) |
| |
| void | constructIndividualBB (BBData &bbd, ConstructionPhase) |
| |
| void | constructBB (BasicBlockNodeSet &inputBlocks) |
| |
| void | createOperationEdges (ProgramOperationPtr po) |
| |
| void | processGuard (MoveNode &moveNode) |
| |
| void | processSource (MoveNode &moveNode) |
| |
| void | processResultRead (MoveNode &moveNode) |
| |
| void | processCall (MoveNode &mn) |
| |
| void | processReturn (MoveNode &moveNode) |
| |
| void | processEntryNode (MoveNode &mn) |
| |
| void | processDestination (class MoveNode &moveNode, ConstructionPhase phase) |
| |
| void | processRegUse (MoveNodeUse mn, const TCEString ®) |
| |
| void | updateMemUse (MoveNodeUse mnd, const TCEString &category) |
| |
| void | processRegWrite (MoveNodeUse mn, const TCEString ®) |
| |
| void | updateMemWrite (MoveNodeUse mnd, const TCEString &category) |
| |
| void | processTriggerPO (class MoveNode &moveNode, Operation &dop) |
| |
| void | processTriggerRegistersAndOperations (MoveNode &moveNode, Operation &dop) |
| |
| void | processTriggerMemoryAndFUStates (MoveNode &moveNode, Operation &dop) |
| |
| void | createTriggerDependencies (class MoveNode &moveNode, class Operation &dop) |
| |
| void | createSideEffectEdges (MoveNodeUseSet &prevMoves, const MoveNode &mn, Operation &dop) |
| |
| void | processMemWrite (MoveNodeUse mnd) |
| |
| void | processMemUse (MoveNodeUse mnd) |
| |
| void | processOperand (class MoveNode &moveNode, Operation &dop) |
| |
| MemoryAliasAnalyzer::AliasingResult | analyzeMemoryAlias (const ProgramOperation &pop1, const ProgramOperation &pop2, MoveNodeUse::BBRelation bbInfo) |
| |
| bool | isAddressTraceable (const ProgramOperation &pop) |
| |
| TCEString | memoryCategory (const MoveNodeUse &mnd) |
| |
| bool | checkAndCreateMemDep (MoveNodeUse prev, MoveNodeUse mnd, DataDependenceEdge::DependenceType depType) |
| |
| void | checkAndCreateMemAntideps (MoveNodeUse &mnd, std::set< MoveNodeUse > &prevNodes, DataDependenceEdge::DependenceType depType, bool traceable) |
| |
| bool | hasEarlierMemWriteToSameAddressWithSameGuard (MoveNodeUse &mnd, std::set< MoveNodeUse > &defines) |
| |
| std::set< MoveNodeUse > | earlierWritesWithSameGuard (MoveNodeUse &mnd, std::set< MoveNodeUse > &defines) |
| |
| bool | hasEarlierWriteWithSameGuard (MoveNodeUse &mnd, std::set< MoveNodeUse > &defines) |
| |
| void | createRegisterAntideps (const TCEString ®, MoveNodeUse &mnd, MoveNodeUseSet &predecessorNodes, DataDependenceEdge::DependenceType depType, bool guardedKillFound) |
| |
| void | changeState (BBData &bbd, BBState newState, bool priorize=false) |
| |
| bool | isAlwaysDifferentFU (const MoveNode *srcMN, const MoveNode *dstMN) |
| |
| void | findStaticRegisters (TTAProgram::CodeSnippet &cs, std::map< int, TCEString > ®isters) |
| | find special register data from old frontend code
|
| |
| void | findStaticRegisters (ControlFlowGraph &cfg, std::map< int, TCEString > ®isters) |
| |
| void | findStaticRegisters (TTAProgram::Instruction &ins, std::map< int, TCEString > ®isters) |
| |
| void | findStaticRegisters (const UniversalMachine &um, std::map< int, TCEString > ®isters) |
| |
| void | appendMoveNodeUse (const LiveRangeData::MoveNodeUseSet &src, LiveRangeData::MoveNodeUseSet &dst, bool setLoopProperty) |
| |
| 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.
|
| |
| InterPassData * | interPassData_ |
| |
| ControlFlowGraph * | cfg_ |
| |
| bool | rvIsParamReg_ |
| |
| const TTAMachine::Machine * | mach_ |
| |
| static const TCEString | RA_NAME = "RA" |
| |
LLVMTCEDataDependenceGraphBuilder class is repsonsible for building data dependence graphs with assistance from LLVM internal representation data.
Currently used to produce DDGs from the prebypassed sequential code input from the TTA-like LLVM backend.
Definition at line 49 of file LLVMTCEDataDependenceGraphBuilder.hh.