OpenASIP
2.0
|
#include <MoveNode.hh>
Private Member Functions | |
MoveNode (const MoveNode &) | |
Copying forbidden. Use copy() for a deep copy. More... | |
MoveNode & | operator= (const MoveNode &) |
Assignment forbidden. More... | |
Private Attributes | |
const std::shared_ptr< TTAProgram::Move > | move_ |
Pointer to Move this node represents, Node itself do not change move. More... | |
const std::shared_ptr< TTAProgram::Immediate > | immediate_ |
Pointer to Immediate this node represents, Node itself do not change move. More... | |
std::vector< ProgramOperationPtr > | dstOps_ |
ProgramOperationPtr | srcOp_ |
ProgramOperationPtr | guardOp_ |
int | cycle_ |
Cycle in which the node is placed. Each cycle uniquely identifies an instruction slot within the current scheduling scope. More... | |
bool | placed_ |
True when the node placed (is given a cycle in program). More... | |
bool | finalized_ |
The movenode cannot be unscheduled anymore, fixed in place. More... | |
bool | isInFrontier_ |
This is in scheduling frontier(used in Bubblefish scheduler) More... | |
Node of the program representation.
A MoveNode represents one move of a TTA program.
Definition at line 65 of file MoveNode.hh.
|
explicit |
Constructor.
Creates a new node with a smart pointer to the given Move.
newmove | the Move this node refers to. |
Definition at line 75 of file MoveNode.cc.
|
explicit |
Constructor.
Creates a new node with a smart pointer to the given immediate.
imm | the long immediate this node refers to. |
Definition at line 87 of file MoveNode.cc.
|
virtual |
Destructor.
Deletes the owned Move instance. Does not unregister this movenode from ProgramOperations.
Definition at line 110 of file MoveNode.cc.
References destinationOperation(), destinationOperationCount(), guardOperation(), isDestinationOperation(), isGuardOperation(), isSourceOperation(), ProgramOperation::removeGuardOutputNode(), ProgramOperation::removeInputNode(), ProgramOperation::removeOutputNode(), and sourceOperation().
MoveNode::MoveNode | ( | ) |
Node can be entry node.
Constructor.
Creates a new node to be entry node.
Definition at line 99 of file MoveNode.cc.
Referenced by copy().
void MoveNode::addDestinationOperationPtr | ( | ProgramOperationPtr | po | ) |
Set a destination of MoveNode to ProgramOperation
po | Program operation that is destination of MoveNode |
Definition at line 533 of file MoveNode.cc.
References dstOps_.
Referenced by Peel2BBLoops::appendBB(), SimpleIfConverter::appendBB(), MoveNodeGroupBuilder::build(), copy(), TTAProgram::CodeGenerator::createBreakOperation(), TTAProgram::CodeGenerator::createForLoopBufferInit(), llvm::LLVMTCEIRBuilder::createMoveNode(), TTAProgram::CodeGenerator::createWhileLoopBufferInit(), MoveNodeDuplicator::duplicateMoveNode(), CopyingDelaySlotFiller::getMoveNode(), DataDependenceGraph::mergeAndKeepSource(), BFShareOperand::operator()(), DataDependenceGraphBuilder::processOperand(), DataDependenceGraphBuilder::processTriggerPO(), BFCopyRegWithOp::splitMove(), and BFShareOperand::undoOnlyMe().
void MoveNode::clearDestinationOperation | ( | ) |
Unsets destination operation.
Does not ask the ProgramOperation to remove this MoveNode from it's input moves.
Definition at line 730 of file MoveNode.cc.
References dstOps_.
Referenced by DataDependenceGraph::removeNode().
MoveNode * MoveNode::copy | ( | ) |
Creates a deep copy of MoveNode.
Sets the source and destination operation of the copy to the same as original. Does not copy the cycle.
Definition at line 135 of file MoveNode.cc.
References addDestinationOperationPtr(), ProgramOperation::addInputNode(), ProgramOperation::addOutputNode(), destinationOperation(), destinationOperationCount(), destinationOperationPtr(), immediate_, isDestinationOperation(), isSourceOperation(), move_, MoveNode(), setSourceOperationPtr(), sourceOperation(), and sourceOperationPtr().
Referenced by LoopPrologAndEpilogBuilder::build().
int MoveNode::cycle | ( | ) | const |
Returns the cycle (index) assigned to the node.
InvalidData | if the node is not placed. |
Definition at line 421 of file MoveNode.cc.
References __func__, cycle_, isPlaced(), and toString().
Referenced by ResourceConstraintAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeMoveNode(), SimpleBrokerDirector::assign(), LoopPrologAndEpilogBuilder::build(), CycleLookBackSoftwareBypasser::bypass(), CycleLookBackSoftwareBypasser::bypassNode(), BUBasicBlockScheduler::bypassNode(), BFEarlyBypasser::bypassSourceLatestCycle(), SimpleBrokerDirector::canAssign(), ExecutionPipelineResource::canAssignSource(), CopyingDelaySlotFiller::checkIncomingDeps(), ExecutionPipelineResource::checkOperandAllowed(), BFOptimization::checkPrologDDG(), DataDependenceGraph::createRegisterAntiDependenciesBetweenNodes(), ResourceConstraintAnalyzer::dumpGraphWithStats(), DataDependenceGraph::earliestCycle(), ExecutionPipelineBroker::earliestFromDestination(), ExecutionPipelineBroker::earliestFromSource(), earliestResultReadCycle(), ExecutionPipelineResource::exclusiveMoves(), CopyingDelaySlotFiller::fillDelaySlots(), DataDependenceGraph::findLimitingAntidependenceDestination(), DataDependenceGraph::findLimitingAntidependenceSource(), DataDependenceGraph::firstRegisterCycle(), DataDependenceGraph::firstScheduledRegisterKill(), DataDependenceGraph::firstScheduledRegisterRead(), DataDependenceGraph::firstScheduledRegisterReads(), DataDependenceGraph::firstScheduledRegisterWrite(), DataDependenceGraph::firstScheduledRegisterWrites(), BasicBlockScheduler::handleRemovedResultMoves(), IUResource::immediateValue(), IUResource::immediateWriteCycle(), BFOptimization::jumpGuardAvailableCycle(), DataDependenceGraph::largestCycle(), DataDependenceGraph::lastGuardDefMove(), DataDependenceGraph::lastRegisterCycle(), DataDependenceGraph::lastScheduledRegisterGuardReads(), DataDependenceGraph::lastScheduledRegisterKill(), DataDependenceGraph::lastScheduledRegisterRead(), DataDependenceGraph::lastScheduledRegisterReads(), DataDependenceGraph::lastScheduledRegisterWrites(), DataDependenceGraph::latestCycle(), ExecutionPipelineBroker::latestFromDestination(), ExecutionPipelineBroker::latestFromSource(), latestTriggerWriteCycle(), ExecutionPipelineResource::latestTriggerWriteCycle(), DataDependenceGraph::movesAtCycle(), ExecutionPipelineResource::operandOverwritten(), ExecutionPipelineResource::operandSharePreventsTriggerForScheduledResult(), ExecutionPipelineResource::operandsOverwritten(), ExecutionPipelineResource::operandTooLate(), BFLateBypassGuard::operator()(), BFEarlyBypasser::operator()(), BFShareOperandsLate::operator()(), BFLateBypasses::operator()(), BFPostpassBypass::operator()(), BFPushAntidepsDown::operator()(), BFPushDepsUp::operator()(), BFRemoveGuardsFromSuccs::operator()(), BFRescheduleResultClose::operator()(), BFShareOperandWithScheduled::operator()(), BFPushMoveUp::operator()(), BFLateBypass::operator()(), BFRescheduleResultsClose::operator()(), BFPushMoveUp2::operator()(), BFRemoveGuardFromSucc::operator()(), BFShareOperandLate::operator()(), BUBasicBlockScheduler::ltstr::operator()(), ExecutionPipelineResource::otherTriggerBeforeMyTrigger(), BF2ScheduleFront::prefResultCycle(), LiveRangeData::registersAlive(), ExecutionPipelineResource::resultReadyCycle(), BasicBlockScheduler::scheduleInputOperandTempMoves(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleOperand(), SequentialScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReadTempMoves(), BasicBlockScheduler::scheduleResultReadTempMoves(), BasicBlockScheduler::scheduleRRTempMoves(), BUBasicBlockScheduler::scheduleRRTempMoves(), AssignmentPlan::setRequest(), DataDependenceGraph::smallestCycle(), ExecutionPipelineResource::testTriggerResult(), toString(), ExecutionPipelineResource::triggerTooEarly(), CopyingDelaySlotFiller::tryToAssignNodes(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp(), BasicBlockScheduler::tryToDelayOperands(), BasicBlockScheduler::tryToOptimizeWaw(), OutputFUBroker::unassign(), InputPSocketBroker::unassign(), OutputPSocketBroker::unassign(), IUResource::unassign(), ITemplateBroker::unassign(), InputFUBroker::unassign(), IUBroker::unassign(), SimpleBrokerDirector::unassign(), BusBroker::unassign(), BFOptimization::unassign(), ExecutionPipelineResource::unassignSource(), BFShareOperandLate::undoOnlyMe(), BFUnscheduleMove::unscheduleOriginal(), BFUnscheduleFromBody::unscheduleOriginal(), and DataDependenceGraph::writeToXMLFile().
ProgramOperation& MoveNode::destinationOperation | ( | unsigned int | index = 0 | ) | const |
Referenced by InputFUBroker::allAvailableResources(), BF2ScheduleFront::allNodesOfSameOperation(), ResourceConstraintAnalyzer::analyzeMoveNode(), Peel2BBLoops::appendBB(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), ExecutionPipelineResource::assignDestination(), MachineConnectivityCheck::busConnectedToAnyFU(), BusResource::canAssign(), BFOptimization::canAssign(), ExecutionPipelineResource::canAssignDestination(), BFOptimization::canBeSpeculated(), DataDependenceGraphBuilder::checkAndCreateMemDep(), PreOptimizer::checkGuardReversalAllowed(), ExecutionPipelineResource::checkOperandAllowed(), CopyingDelaySlotFiller::collectMoves(), copy(), dotString(), DataDependenceGraph::dotString(), ResourceConstraintAnalyzer::dumpGraphWithStats(), MoveNodeDuplicator::duplicateMove(), MoveNodeDuplicator::duplicateMoveNode(), DataDependenceGraph::earliestCycle(), ExecutionPipelineBroker::earliestFromDestination(), FUBroker::findDstFUOfMove(), BF2ScheduleFront::findInducingBypassSource(), MachineConnectivityCheck::findPossibleDestinationPorts(), BF2Scheduler::getDstUnit(), CopyingDelaySlotFiller::getMove(), BFOptimization::getSisterTrigger(), DataDependenceGraphBuilder::hasEarlierMemWriteToSameAddressWithSameGuard(), BFOptimization::immCountPreventsScheduling(), inSameOperation(), PreOptimizer::inverseGuardsOfHeads(), ExecutionPipelineResource::isDestOpOfMN(), isLastUnscheduledMoveOfDstOp(), ExecutionPipelineBroker::isMoveTrigger(), BF2Scheduler::isTrigger(), DataDependenceGraphBuilder::isTriggering(), DataDependenceGraph::latestCycle(), ExecutionPipelineBroker::latestFromDestination(), latestTriggerWriteCycle(), ExecutionPipelineResource::latestTriggerWriteCycle(), DataDependenceGraphBuilder::memoryCategory(), BUMoveNodeSelector::mightBeReady(), CriticalPathBBMoveNodeSelector::mightBeReady(), DataDependenceGraph::moveFUDependenciesToTrigger(), ExecutionPipelineResource::operandAllowedAtCycle(), ExecutionPipelineResource::operandOverwritten(), ExecutionPipelineResource::operandPort(), ExecutionPipelineResource::operandSharePreventsTriggerForScheduledResult(), ExecutionPipelineResource::operandsOverwritten(), ExecutionPipelineResource::operandTooLate(), BFRemoveLoopChecksAndJump::operator()(), BFPushMoveUp::operator()(), BFShareOperands::operator()(), BFScheduleBU::operator()(), BFShareOperandLate::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), ExecutionPipelineResource::otherTriggerBeforeMyTrigger(), BF2Scheduler::preAllocateFunctionUnits(), DataDependenceGraph::predecessorsReady(), DataDependenceGraphBuilder::processMemWrite(), DataDependenceGraph::removeNode(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), BFShareOperandLate::revert(), BFOptimization::RFReadPortCountPreventsScheduling(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), SequentialScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), SequentialScheduler::scheduleOperation(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), DataDependenceGraph::successorsReady(), ExecutionPipelineResource::testTriggerResult(), ExecutionPipelineResource::triggerTooEarly(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfDestOps(), ExecutionPipelineResource::unassignDestination(), BFLateBypass::undoOnlyMe(), BFUnscheduleMove::unscheduleOriginal(), BFUnscheduleFromBody::unscheduleOriginal(), DataDependenceGraph::writeToXMLFile(), and ~MoveNode().
|
inline |
Referenced by BF2ScheduleFront::allNodesOfSameOperation(), ExecutionPipelineResource::assignDestination(), BFSwapOperands::BFSwapOperands(), BusResource::canAssign(), ExecutionPipelineResource::checkOperandAllowed(), copy(), MoveNodeDuplicator::duplicateMoveNode(), ExecutionPipelineBroker::earliestFromDestination(), FUBroker::findDstFUOfMove(), BF2ScheduleFront::findInducingBypassSource(), CopyingDelaySlotFiller::getMoveNode(), inSameOperation(), ExecutionPipelineResource::isDestOpOfMN(), isLastUnscheduledMoveOfDstOp(), ExecutionPipelineBroker::isMoveTrigger(), ExecutionPipelineBroker::latestFromDestination(), BUMoveNodeSelector::mightBeReady(), ExecutionPipelineResource::operandOverwritten(), ExecutionPipelineResource::operandSharePreventsTriggerForScheduledResult(), ExecutionPipelineResource::operandTooLate(), BFRemoveLoopChecksAndJump::operator()(), BFShareOperand::operator()(), ExecutionPipelineResource::otherTriggerBeforeMyTrigger(), DataDependenceGraph::removeNode(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfDestOps(), BF2ScheduleFront::tryToScheduleMoveOuter(), ExecutionPipelineResource::unassignDestination(), BFLateBypass::undoOnlyMe(), and ~MoveNode().
ProgramOperationPtr MoveNode::destinationOperationPtr | ( | unsigned int | index = 0 | ) | const |
Referenced by BFSwapOperands::BFSwapOperands(), copy(), DataDependenceGraph::createSubgraph(), MoveNodeDuplicator::duplicateMoveNode(), CopyingDelaySlotFiller::getMoveNode(), DataDependenceGraph::mergeAndKeepSource(), BFRemoveLoopChecksAndJump::operator()(), BFDropPreShared::operator()(), BFShareOperand::operator()(), BFRemoveLoopChecksAndJump::queueAliveMove(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), and BFRemoveLoopChecksAndJump::removePoFromQueue().
|
virtual |
Returns Dot representation of the node.
Prints the disassembly of the move and sets the color of the node to red in case it's scheduled.
Reimplemented from GraphNode.
Definition at line 602 of file MoveNode.cc.
References destinationOperation(), GraphNode::dotString(), isFinalized(), isInFrontier_, isOperationMove(), isScheduled(), isSourceOperation(), ProgramOperation::poId(), and sourceOperation().
Referenced by DataDependenceGraph::dotString(), and ResourceConstraintAnalyzer::dumpGraphWithStats().
int MoveNode::earliestResultReadCycle | ( | ) | const |
Returns the cycle the given result move can be scheduled earliest, taking in the account the latency of the operation.
In case the trigger move has not been scheduled yet, returns INT_MAX.
IllegalObject | if this MoveNode is not a result read. |
Definition at line 652 of file MoveNode.cc.
References __func__, abortWithError, cycle(), TTAProgram::Move::destination(), Exception::errorMessageStack(), TTAProgram::Terminal::functionUnit(), guardOperation(), isGuardOperation(), isScheduled(), isSourceOperation(), TTAMachine::HWOperation::latency(), move(), move_, Operation::name(), TTAMachine::FunctionUnit::operation(), ProgramOperation::operation(), ProgramOperation::outputIndexOfMove(), sourceOperation(), and ProgramOperation::triggeringMove().
Referenced by ExecutionPipelineResource::canAssignSource(), ExecutionPipelineBroker::earliestFromSource(), ExecutionPipelineBroker::latestFromSource(), BasicBlockScheduler::scheduleMove(), and SequentialScheduler::scheduleResultReads().
void MoveNode::finalize | ( | ) |
int MoveNode::guardLatency | ( | ) | const |
Returns the total guard latency of the guard of given move, or 0 if the move is unconditional.
Definition at line 779 of file MoveNode.cc.
References isMove(), and move_.
Referenced by SimpleBrokerDirector::assign(), CycleLookBackSoftwareBypasser::bypass(), CycleLookBackSoftwareBypasser::bypassNode(), CopyingDelaySlotFiller::checkIncomingDeps(), CopyingDelaySlotFiller::collectMoves(), DataDependenceGraph::earliestCycle(), DataDependenceGraph::edgeLatency(), DataDependenceGraph::edgeWeight(), CopyingDelaySlotFiller::fillDelaySlots(), DataDependenceGraph::latestCycle(), BFLateBypassGuard::operator()(), BFPushAntidepsDown::operator()(), BFRemoveGuardsFromSuccs::operator()(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BasicBlockScheduler::tryToOptimizeWaw(), and SimpleBrokerDirector::unassign().
ProgramOperation & MoveNode::guardOperation | ( | ) | const |
Returns the instance of operation in the program whose output is the guard of this node.
InvalidData | if the given node does not read an operation output. |
Definition at line 479 of file MoveNode.cc.
References guardOperationPtr().
Referenced by OutputFUBroker::allAvailableResources(), BF2ScheduleFront::allNodesOfSameOperation(), OutputFUBroker::assign(), ExecutionPipelineResource::assignSource(), ExecutionPipelineResource::canAssignSource(), MoveNodeDuplicator::duplicateMoveNode(), earliestResultReadCycle(), MachineConnectivityCheck::findPossibleDestinationPorts(), OutputFUBroker::isAlreadyAssigned(), ExecutionPipelineBroker::latestFromSource(), ExecutionPipelineResource::nextResultCycle(), ExecutionPipelineResource::testTriggerResult(), OutputFUBroker::unassign(), ExecutionPipelineResource::unassignSource(), and ~MoveNode().
ProgramOperationPtr MoveNode::guardOperationPtr | ( | ) | const |
Definition at line 484 of file MoveNode.cc.
References __func__, guardOp_, isGuardOperation(), and toString().
Referenced by CopyingDelaySlotFiller::collectMoves(), MoveNodeDuplicator::duplicateMoveNode(), CopyingDelaySlotFiller::getMoveNode(), guardOperation(), CopyingDelaySlotFiller::tryToAssignNodes(), and CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp().
const TTAProgram::Immediate & MoveNode::immediate | ( | ) |
Definition at line 838 of file MoveNode.cc.
References immediate_.
Referenced by ITemplateBroker::assign(), ITemplateBroker::isAlreadyAssigned(), and ITemplateBroker::unassign().
const TTAProgram::Immediate& MoveNode::immediate | ( | ) | const |
std::shared_ptr< TTAProgram::Immediate > MoveNode::immediatePtr | ( | ) |
Definition at line 846 of file MoveNode.cc.
References immediate_.
Referenced by ITemplateBroker::allAvailableResources(), ITemplateBroker::assign(), and ITemplateBroker::unassign().
std::shared_ptr<const TTAProgram::Immediate> MoveNode::immediatePtr | ( | ) | const |
bool MoveNode::inSameOperation | ( | const MoveNode & | other | ) | const |
Returns true if this MoveNode is in the same ProgramOperation as the given MoveNode.
Definition at line 306 of file MoveNode.cc.
References destinationOperation(), destinationOperationCount(), isRegisterMove(), isSourceOperation(), and sourceOperation().
Referenced by DataDependenceGraph::earliestCycle(), DataDependenceGraph::edgeLatency(), DataDependenceGraph::latestCycle(), BUMoveNodeSelector::notifyScheduled(), and CriticalPathBBMoveNodeSelector::notifyScheduled().
bool MoveNode::isAssigned | ( | ) | const |
Tells whether the node is fully assigned.
A node is fully assigned when all the resources of the target processor necessary to carry out the transport it specifies are assigned to it.
Machine found is NOT UniversalMachine - we are happy
Definition at line 367 of file MoveNode.cc.
References immediate_, TTAProgram::Instruction::instructionTemplate(), isDestinationOperation(), isDestinationVariable(), isSourceImmediateRegister(), isSourceOperation(), isSourceVariable(), and move_.
Referenced by ProgramOperation::areInputsAssigned(), ProgramOperation::areOutputsAssigned(), ProgramOperation::isAnyInputAssigned(), ProgramOperation::isAnyNodeAssigned(), ProgramOperation::isAnyOutputAssigned(), ProgramOperation::isAssigned(), isScheduled(), and DataDependenceEdge::latencySt().
bool MoveNode::isBypass | ( | ) | const |
Tells whether the node is a `‘software bypass’' - both its source and its destination belong to operations.
Definition at line 280 of file MoveNode.cc.
References isDestinationOperation(), and isSourceOperation().
Referenced by CycleLookBackSoftwareBypasser::bypass(), and ResourceConstraintAnalyzer::dumpGraphWithStats().
|
inline |
Referenced by InputFUBroker::allAvailableResources(), CopyingDelaySlotFiller::allowedToSpeculate(), ResourceConstraintAnalyzer::analyzeMoveNode(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), ExecutionPipelineResource::assignDestination(), CycleLookBackSoftwareBypasser::bypass(), CycleLookBackSoftwareBypasser::bypassNode(), BFOptimization::canAssign(), ExecutionPipelineResource::canAssignDestination(), BFOptimization::canBeSpeculated(), PreOptimizer::checkGuardReversalAllowed(), CopyingDelaySlotFiller::collectMoves(), copy(), DataDependenceGraph::createSubgraph(), DataDependenceGraph::dotString(), ResourceConstraintAnalyzer::dumpGraphWithStats(), MoveNodeDuplicator::duplicateMove(), MoveNodeDuplicator::duplicateMoveNode(), DataDependenceGraph::earliestCycle(), ExecutionPipelineBroker::earliestFromDestination(), MachineConnectivityCheck::findPossibleDestinationPorts(), BF2Scheduler::getDstUnit(), CopyingDelaySlotFiller::getMove(), CopyingDelaySlotFiller::getMoveNode(), CopyingDelaySlotFiller::getProgramOperationPtr(), BFOptimization::getSisterTrigger(), BFOptimization::hasAmbiguousResources(), BFOptimization::immCountPreventsScheduling(), BUMoveNodeSelector::initializeReadylist(), CriticalPathBBMoveNodeSelector::initializeReadylist(), isAssigned(), isBypass(), ExecutionPipelineBroker::isMoveTrigger(), isOperationMove(), isRegisterMove(), DataDependenceGraph::latestCycle(), latestTriggerWriteCycle(), ExecutionPipelineResource::latestTriggerWriteCycle(), DataDependenceGraphBuilder::memoryCategory(), DataDependenceGraph::mergeAndKeepSource(), CriticalPathBBMoveNodeSelector::mightBeReady(), DataDependenceGraph::moveFUDependenciesToTrigger(), ExecutionPipelineResource::operandAllowedAtCycle(), ExecutionPipelineResource::operandPort(), BFRemoveLoopChecksAndJump::operator()(), BFPostpassBypass::operator()(), BFPushMoveUp::operator()(), BFScheduleBU::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), DataDependenceGraph::predecessorsReady(), BF2ScheduleFront::prefResultCycle(), BFRemoveLoopChecksAndJump::queueAliveMove(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), DataDependenceGraph::removeNode(), BFRemoveLoopChecksAndJump::removePoFromQueue(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), BFOptimization::RFReadPortCountPreventsScheduling(), SequentialScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), SequentialScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), BFOptimization::setPrologDstFUAnno(), DataDependenceGraph::successorsReady(), CopyingDelaySlotFiller::tryToAssignNodes(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp(), BasicBlockScheduler::tryToDelayOperands(), ExecutionPipelineResource::unassignDestination(), BFUnscheduleMove::unscheduleOriginal(), BFUnscheduleFromBody::unscheduleOriginal(), DataDependenceGraph::writeToXMLFile(), and ~MoveNode().
bool MoveNode::isDestinationVariable | ( | ) | const |
Tells whether the node (move) writes a program variable or, if assigned, a GPR.
Definition at line 264 of file MoveNode.cc.
References move_.
Referenced by CycleLookBackSoftwareBypasser::bypassNode(), BUBasicBlockScheduler::bypassNode(), BUBasicBlockScheduler::finalizeSchedule(), isAssigned(), BF2Scheduler::isDestinationUniversalReg(), CriticalPathBBMoveNodeSelector::mightBeReady(), BFEarlyBypass::operator()(), BFScheduleTD::operator()(), BFRescheduleResultsClose::operator()(), BFScheduleBU::operator()(), and BF2ScheduleFront::tryToScheduleMoveOuter().
bool MoveNode::isFinalized | ( | ) | const |
Referenced by dotString(), and BF2ScheduleFront::requeueOtherMovesOfSameOp().
bool MoveNode::isGuardOperation | ( | ) | const |
Tells whether the guard of the MoveNode (move) is a port guard from op.
Definition at line 181 of file MoveNode.cc.
References guardOp_, and move_.
Referenced by BF2ScheduleFront::allNodesOfSameOperation(), OutputFUBroker::assign(), ExecutionPipelineResource::canAssignSource(), MoveNodeDuplicator::duplicateMoveNode(), earliestResultReadCycle(), MachineConnectivityCheck::findPossibleDestinationPorts(), CopyingDelaySlotFiller::getMoveNode(), guardOperationPtr(), OutputFUBroker::isAlreadyAssigned(), BFOptimization::jumpGuardAvailableCycle(), ExecutionPipelineBroker::latestFromSource(), ExecutionPipelineResource::nextResultCycle(), BFLateBypass::operator()(), ExecutionPipelineResource::resultPort(), ExecutionPipelineResource::testTriggerResult(), CopyingDelaySlotFiller::tryToAssignNodes(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp(), OutputFUBroker::unassign(), and ~MoveNode().
|
inline |
Definition at line 143 of file MoveNode.hh.
References immediate_.
Referenced by ITemplateBroker::allAvailableResources(), ITemplateBroker::assign(), ITemplateBroker::isAlreadyAssigned(), and ITemplateBroker::unassign().
bool MoveNode::isInFrontier | ( | ) | const |
Referenced by BFEarlyBypasser::bypassSourceLatestCycle().
bool MoveNode::isLastUnscheduledMoveOfDstOp | ( | ) | const |
Definition at line 817 of file MoveNode.cc.
References destinationOperation(), destinationOperationCount(), ProgramOperation::inputMove(), ProgramOperation::inputMoveCount(), and isScheduled().
|
inline |
Referenced by DataDependenceGraph::addNode(), ITemplateBroker::allAvailableResources(), PRegionAliasAnalyzer::analyze(), SimpleBrokerDirector::assign(), IUResource::canAssign(), SimpleBrokerDirector::canAssign(), CopyingDelaySlotFiller::checkIncomingDeps(), DataDependenceGraph::createSubgraph(), DataDependenceGraph::dotString(), DataDependenceGraph::edgeWeight(), DataDependenceGraph::exclusingGuards(), ExecutionPipelineResource::exclusiveMoves(), BF2Scheduler::findJump(), ResourceConstraintAnalyzer::findResourceConstrainedParent(), ConstantAliasAnalyzer::getConstantAddress(), StackAliasAnalyzer::getStackOffset(), guardLatency(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), OutputFUBroker::isApplicable(), InputFUBroker::isApplicable(), InputPSocketBroker::isApplicable(), OutputPSocketBroker::isApplicable(), IUBroker::isApplicable(), BusBroker::isApplicable(), isSourceReg(), DataDependenceGraph::mergeAndKeepAllowed(), ProgramDependenceGraph::processRegion(), ProgramDependenceGraph::ProgramDependenceGraph(), DataDependenceGraph::removeNode(), RegisterRenamer::renameDestinationRegister(), RegisterRenamer::renameSourceRegister(), DataDependenceGraph::resultUsed(), DataDependenceGraph::sameGuards(), DataDependenceEdge::saveState(), ITemplateBroker::unassign(), SimpleBrokerDirector::unassign(), DataDependenceGraph::updateRegWrite(), MoveNodeGroup::writesJumpGuard(), and DataDependenceGraph::writeToXMLFile().
bool MoveNode::isOperationMove | ( | ) | const |
Tells whether the move belongs to an operation execution.
Definition at line 253 of file MoveNode.cc.
References isDestinationOperation(), and isSourceOperation().
Referenced by dotString(), DataDependenceGraph::dotString(), SequentialScheduler::handleBasicBlock(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), and BasicBlockScheduler::handleLoopDDG().
bool MoveNode::isPlaced | ( | ) | const |
Tells whether is placed in the program representation, that is, has a cycle assigned to it.
Definition at line 352 of file MoveNode.cc.
References placed_.
Referenced by SimpleBrokerDirector::assign(), SimpleBrokerDirector::canAssign(), ExecutionPipelineResource::canAssignSource(), ExecutionPipelineResource::checkOperandAllowed(), DataDependenceGraph::createRegisterAntiDependenciesBetweenNodes(), cycle(), DataDependenceGraph::earliestCycle(), ExecutionPipelineResource::exclusiveMoves(), DataDependenceGraph::findLimitingAntidependenceDestination(), DataDependenceGraph::findLimitingAntidependenceSource(), DataDependenceGraph::firstRegisterCycle(), DataDependenceGraph::firstScheduledRegisterKill(), DataDependenceGraph::firstScheduledRegisterRead(), DataDependenceGraph::firstScheduledRegisterReads(), DataDependenceGraph::firstScheduledRegisterWrite(), DataDependenceGraph::firstScheduledRegisterWrites(), isScheduled(), DataDependenceGraph::largestCycle(), DataDependenceGraph::lastRegisterCycle(), DataDependenceGraph::lastScheduledRegisterGuardReads(), DataDependenceGraph::lastScheduledRegisterKill(), DataDependenceGraph::lastScheduledRegisterRead(), DataDependenceGraph::lastScheduledRegisterReads(), DataDependenceGraph::lastScheduledRegisterWrites(), DataDependenceGraph::latestCycle(), ResourceConstraintAnalyzer::memoryBoundScheduleResourceUsage(), DataDependenceGraph::movesAtCycle(), ExecutionPipelineResource::operandAllowedAtCycle(), ExecutionPipelineResource::operandOverwritten(), ExecutionPipelineResource::operandsOverwritten(), ExecutionPipelineResource::operandTooLate(), DataDependenceGraph::otherSuccessorsScheduled(), DataDependenceGraph::predecessorsReady(), DataDependenceGraph::regRawSuccessorCount(), AssignmentPlan::resetAssignments(), ExecutionPipelineResource::resultReadyCycle(), DataDependenceGraph::scheduledMoves(), DataDependenceGraph::scheduledNodeCount(), AssignmentPlan::setRequest(), DataDependenceGraph::smallestCycle(), DataDependenceGraph::successorsReady(), ExecutionPipelineResource::testTriggerResult(), toString(), ExecutionPipelineResource::triggerTooEarly(), SimpleBrokerDirector::unassign(), BasicBlockScheduler::unschedule(), SequentialScheduler::unschedule(), DataDependenceGraph::unscheduledMoves(), and DataDependenceGraph::writeToXMLFile().
bool MoveNode::isRegisterMove | ( | ) | const |
Tells whether the node is a register move, thus not belong to any particular ProgramOperation.
It's either an immediate move to an register or a register to register copy.
Definition at line 294 of file MoveNode.cc.
References isDestinationOperation(), and isSourceOperation().
Referenced by inSameOperation().
bool MoveNode::isScheduled | ( | ) | const |
Tells whether the node is completely scheduled.
A node is completely scheduled only if it is assigned to a program cycle and the necessary resources of the target processor are assigned to it.
Definition at line 409 of file MoveNode.cc.
References isAssigned(), and isPlaced().
Referenced by BFSwapOperands::BFSwapOperands(), CycleLookBackSoftwareBypasser::bypass(), CycleLookBackSoftwareBypasser::bypassNode(), BUBasicBlockScheduler::bypassNode(), BFEarlyBypasser::bypassSourceLatestCycle(), SimpleBrokerDirector::canAssign(), CopyingDelaySlotFiller::checkIncomingDeps(), BFOptimization::checkPrologDDG(), BUBasicBlockScheduler::clearRemovedNodes(), MoveNodeDuplicator::disposeMoveNode(), dotString(), MoveNodeDuplicator::duplicateMove(), ExecutionPipelineBroker::earliestFromDestination(), ExecutionPipelineBroker::earliestFromSource(), earliestResultReadCycle(), BUBasicBlockScheduler::finalizeSchedule(), BF2Scheduler::finalizeSchedule(), BUBasicBlockScheduler::findBypassDestinations(), MachineConnectivityCheck::findPossibleDestinationPorts(), MachineConnectivityCheck::findPossibleSourcePorts(), BF2Scheduler::getDstUnit(), BF2ScheduleFront::getMoveNodeFromFrontBU(), BUBasicBlockScheduler::handleDDG(), BF2Scheduler::handleLoopDDG(), BasicBlockScheduler::handleRemovedResultMoves(), BFOptimization::immCountPreventsScheduling(), isLastUnscheduledMoveOfDstOp(), ExecutionPipelineBroker::isMoveTrigger(), BFOptimization::jumpGuardAvailableCycle(), ExecutionPipelineBroker::latestFromDestination(), ExecutionPipelineBroker::latestFromSource(), latestTriggerWriteCycle(), ExecutionPipelineResource::latestTriggerWriteCycle(), CopyingDelaySlotFiller::loseCopies(), BUMoveNodeSelector::mightBeReady(), CriticalPathBBMoveNodeSelector::mightBeReady(), BUMoveNodeSelector::notifyScheduled(), CriticalPathBBMoveNodeSelector::notifyScheduled(), ExecutionPipelineResource::operandSharePreventsTriggerForScheduledResult(), RegisterCopyAdder::operandsScheduled(), BFLateBypassGuard::operator()(), BFEarlyBypass::operator()(), BFDRELate::operator()(), BFEarlyBypasser::operator()(), BFLateBypasses::operator()(), BFPostpassBypass::operator()(), BFPushAntidepsDown::operator()(), BFPushDepsUp::operator()(), BFRemoveGuardsFromSuccs::operator()(), BFScheduleTD::operator()(), BFPushMoveUp::operator()(), BFRescheduleResultsClose::operator()(), BFPushMoveUp2::operator()(), BFScheduleBU::operator()(), ExecutionPipelineResource::otherTriggerBeforeMyTrigger(), BUBasicBlockScheduler::precedingTempMove(), BF2ScheduleFront::prefResultCycle(), LiveRangeData::registersAlive(), CycleLookBackSoftwareBypasser::removeBypass(), CycleLookBackSoftwareBypasser::removeDeadResults(), ExecutionPipelineResource::resultCausesTriggerBetweenOperandSharing(), RegisterCopyAdder::resultsScheduled(), BFOptimization::RFReadPortCountPreventsScheduling(), BF2Scheduler::scheduleDDG(), BasicBlockScheduler::scheduleInputOperandTempMoves(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), SequentialScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleOperand(), SequentialScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), SequentialScheduler::scheduleResultReads(), BasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReadTempMoves(), BasicBlockScheduler::scheduleResultReadTempMoves(), BasicBlockScheduler::scheduleRRTempMoves(), BUBasicBlockScheduler::scheduleRRTempMoves(), BasicBlockScheduler::succeedingTempMove(), toString(), CopyingDelaySlotFiller::tryToAssignNodes(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp(), BUBasicBlockScheduler::tryToOptimizeWaw(), BasicBlockScheduler::tryToOptimizeWaw(), BUBasicBlockScheduler::undoBypass(), BFRegCopy::undoDDG(), BFScheduleMove::undoOnlyMe(), BFDRELoop::undoOnlyMe(), BFRescheduleMove::undoOnlyMe(), BFScheduleTD::undoOnlyMe(), BFScheduleBU::undoOnlyMe(), BasicBlockScheduler::unschedule(), SequentialScheduler::unschedule(), and BUBasicBlockScheduler::unscheduleAllNodes().
bool MoveNode::isSourceConstant | ( | ) | const |
Tells whether the source of the node (move) is a program constant. If assigned, the constant is an in-line immediate.
Definition at line 238 of file MoveNode.cc.
References move_.
Referenced by RegisterCopyAdder::addConnectionRegisterCopiesImmediate(), OffsetAliasAnalyzer::analyze(), CycleLookBackSoftwareBypasser::bypassNode(), BusResource::canAssign(), MachineConnectivityCheck::canBypass(), MachineConnectivityCheck::canSourceWriteToAnyDestinationPort(), BF2Scheduler::countLoopInvariantValueUsages(), MemoryAliasAnalyzer::detectConstantScale(), ResourceConstraintAnalyzer::dumpGraphWithStats(), LoopAnalyzer::findEndCond(), LoopAnalyzer::findInitAndUpdate(), MachineConnectivityCheck::findPossibleSourcePorts(), StackAliasAnalyzer::getStackOffset(), BFOptimization::hasAmbiguousResources(), ProgramOperation::hasConstantOperand(), OutputPSocketBroker::isAlreadyAssigned(), OutputPSocketBroker::isApplicable(), IUBroker::isApplicable(), CriticalPathBBMoveNodeSelector::mightBeReady(), SequentialScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), MemoryAliasAnalyzer::searchLoopIndexBasedIncrement(), PreOptimizer::tryToPrecalcConstantAdd(), BUBasicBlockScheduler::tryToSwitchInputs(), BasicBlockScheduler::tryToSwitchInputs(), and ITemplateBroker::unassign().
bool MoveNode::isSourceImmediateRegister | ( | ) | const |
Tells whether the node (move) reads a Immediate Register
Definition at line 223 of file MoveNode.cc.
References move_.
Referenced by ITemplateBroker::assign(), SimpleBrokerDirector::assign(), BFOptimization::assignCopyToPrologEpilog(), BFOptimization::canAssign(), IUBroker::immediateValue(), IUBroker::immediateWriteCycle(), IUBroker::isApplicable(), isAssigned(), BFOptimization::rmEC(), BFOptimization::rmLC(), and SimpleBrokerDirector::unassign().
bool MoveNode::isSourceOperation | ( | ) | const |
Tells whether the source of the MoveNode (move) belongs to an operation.
Definition at line 168 of file MoveNode.cc.
Referenced by OutputFUBroker::allAvailableResources(), BF2ScheduleFront::allNodesOfSameOperation(), CopyingDelaySlotFiller::allowedToSpeculate(), LoopAnalyzer::analyze(), OffsetAliasAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeMoveNode(), OutputFUBroker::assign(), BFOptimization::assign(), ExecutionPipelineResource::assignSource(), CycleLookBackSoftwareBypasser::bypass(), CycleLookBackSoftwareBypasser::bypassNode(), BFEarlyBypasser::bypassSourceLatestCycle(), ExecutionPipelineResource::canAssignSource(), CopyingDelaySlotFiller::collectMoves(), copy(), TTAProgram::CodeGenerator::createForLoopBufferInit(), DataDependenceGraph::createSubgraph(), MemoryAliasAnalyzer::detectConstantScale(), dotString(), DataDependenceGraph::dotString(), MoveNodeDuplicator::duplicateMove(), MoveNodeDuplicator::duplicateMoveNode(), MoveNodeGroup::earliestCycle(), DataDependenceGraph::earliestCycle(), ExecutionPipelineBroker::earliestFromSource(), earliestResultReadCycle(), DataDependenceGraph::edgeLatency(), LoopAnalyzer::findEndCond(), MemoryAliasAnalyzer::findIncrement(), BF2ScheduleFront::findInducingBypassSource(), LoopAnalyzer::findInitAndUpdate(), DataDependenceGraph::findLoopIndexUpdate(), DataDependenceGraph::findLoopLimitAndIndex(), MachineConnectivityCheck::findPossibleDestinationPorts(), MachineConnectivityCheck::findPossibleSourcePorts(), ConstantAliasAnalyzer::getConstantAddress(), CopyingDelaySlotFiller::getMove(), CopyingDelaySlotFiller::getMoveNode(), CopyingDelaySlotFiller::getProgramOperationPtr(), StackAliasAnalyzer::getStackOffset(), BFOptimization::hasAmbiguousResources(), inSameOperation(), OffsetAliasAnalyzer::isAddressTraceable(), isAssigned(), isBypass(), isOperationMove(), isRegisterMove(), DataDependenceGraph::latestCycle(), ExecutionPipelineBroker::latestFromDestination(), ExecutionPipelineBroker::latestFromSource(), DataDependenceGraph::mergeAndKeepUser(), BUMoveNodeSelector::mightBeReady(), CriticalPathBBMoveNodeSelector::mightBeReady(), ExecutionPipelineResource::nextResultCycle(), BFLateBypassGuard::operator()(), BFLateBypasses::operator()(), BFUpdateMoveOnBypass::operator()(), BFPostpassBypass::operator()(), BFPushDepsUp::operator()(), BFScheduleTD::operator()(), BFPushMoveUp2::operator()(), BFScheduleExact::operator()(), BFScheduleBU::operator()(), ProgramOperation::outputIndexOfMove(), DataDependenceGraph::predecessorsReady(), BF2ScheduleFront::prefResultCycle(), BFRemoveLoopChecksAndJump::queueAliveMove(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), DataDependenceGraph::removeNode(), BFRemoveLoopChecksAndJump::removePoFromQueue(), ExecutionPipelineResource::resultCausesTriggerBetweenOperandSharing(), ExecutionPipelineResource::resultPort(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BasicBlockScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), SequentialScheduler::scheduleOperation(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), SequentialScheduler::scheduleResultReads(), BasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReads(), BFOptimization::setPrologSrcFUAnno(), sourceOperationPtr(), DataDependenceGraph::successorsReady(), ExecutionPipelineResource::testTriggerResult(), PreOptimizer::tryToRemoveEq(), LoopAnalyzer::tryTrackCommonAncestor(), ExecutionPipelineResource::unassignSource(), BFUpdateMoveOnBypass::undoOnlyMe(), DataDependenceGraph::unMergeUser(), BFUnscheduleMove::unscheduleOriginal(), BFUnscheduleFromBody::unscheduleOriginal(), and ~MoveNode().
bool MoveNode::isSourceRA | ( | ) | const |
Tells whether the node (move) reads the return address port. GPR.
Definition at line 210 of file MoveNode.cc.
References move_.
Referenced by DataDependenceGraph::mergeAndKeepUser(), and BFMergeAndKeepUser::updateEdges().
bool MoveNode::isSourceReg | ( | const std::string & | reg | ) | const |
Checks if the source of the movenode is the given reg.
This method assumes incoming reg name is in correct rf.number format, and does not check it, due performance reasons.
reg | register to check against source of the movenode |
Definition at line 798 of file MoveNode.cc.
References TTAProgram::Terminal::index(), isMove(), move(), TTAMachine::Component::name(), TTAProgram::Terminal::registerFile(), and TTAProgram::Move::source().
Referenced by StackAliasAnalyzer::getStackOffset(), and DataDependenceGraph::onlyRegisterRawAncestor().
bool MoveNode::isSourceVariable | ( | ) | const |
Tells whether the node (move) reads a program variable or, if assigned, a GPR.
Definition at line 196 of file MoveNode.cc.
References move_.
Referenced by CopyingDelaySlotFiller::allowedToSpeculate(), LoopAnalyzer::analyze(), BUBasicBlockScheduler::bypassNode(), BF2Scheduler::countLoopInvariantValueUsages(), MemoryAliasAnalyzer::detectConstantScale(), BUBasicBlockScheduler::finalizeSchedule(), LoopAnalyzer::findEndCond(), LoopAnalyzer::findInitAndUpdate(), DataDependenceGraph::findLoopIndexUpdate(), DataDependenceGraph::findLoopLimitAndIndex(), MachineConnectivityCheck::findPossibleSourcePorts(), ConstantAliasAnalyzer::getConstantAddress(), StackAliasAnalyzer::getStackOffset(), isAssigned(), BF2Scheduler::isSourceUniversalReg(), DataDependenceGraph::mergeAndKeepUser(), CriticalPathBBMoveNodeSelector::mightBeReady(), BFScheduleBU::operator()(), MemoryAliasAnalyzer::searchLoopIndexBasedIncrement(), PreOptimizer::tryToPrecalcConstantAdd(), DataDependenceGraph::unMergeUser(), and BFMergeAndKeepUser::updateEdges().
int MoveNode::latestTriggerWriteCycle | ( | ) | const |
Returns the lates cycle the given trigger move can be scheduled at, taking in the account the latency of the operation results.
In case the none of the result moves has been scheduled yet, returns INT_MAX.
IllegalObject | if this MoveNode is not a result read. |
Definition at line 698 of file MoveNode.cc.
References __func__, cycle(), destinationOperation(), TTAProgram::Terminal::functionUnit(), isDestinationOperation(), isScheduled(), TTAMachine::HWOperation::latency(), move(), Operation::name(), TTAMachine::FunctionUnit::operation(), ProgramOperation::operation(), TTAProgram::Terminal::operationIndex(), ProgramOperation::outputMove(), ProgramOperation::outputMoveCount(), and TTAProgram::Move::source().
Referenced by BUBasicBlockScheduler::scheduleMove(), and BUBasicBlockScheduler::scheduleOperandWrites().
TTAProgram::Move& MoveNode::move | ( | ) |
Referenced by RegisterCopyAdder::addCandidateSetAnnotations(), RegisterCopyAdder::addConnectionRegisterCopies(), RegisterCopyAdder::addConnectionRegisterCopiesImmediate(), ProgramOperation::addInputNode(), BFOptimization::addJumpGuardIfNeeded(), ProgramOperation::addNode(), DataDependenceGraph::addNode(), ProgramOperation::addOutputNode(), OutputFUBroker::allAvailableResources(), InputFUBroker::allAvailableResources(), IUBroker::allAvailableResources(), CopyingDelaySlotFiller::allowedToSpeculate(), LoopAnalyzer::analyze(), PRegionAliasAnalyzer::analyze(), OffsetAliasAnalyzer::analyze(), ResourceConstraintAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeMoveNode(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), annotateAllInputs(), annotateAllOutputs(), OutputPSocketResource::assign(), InputPSocketBroker::assign(), OutputPSocketBroker::assign(), IUResource::assign(), ITemplateBroker::assign(), SimpleBrokerDirector::assign(), IUBroker::assign(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), ExecutionPipelineResource::assignDestination(), BFSwapOperands::BFSwapOperands(), LoopPrologAndEpilogBuilder::build(), LLVMTCEDataDependenceGraphBuilder::buildLocalDDG(), MachineConnectivityCheck::busConnectedToAnyFU(), MachineConnectivityCheck::busConnectedToDestination(), CycleLookBackSoftwareBypasser::bypass(), CycleLookBackSoftwareBypasser::bypassNode(), InputPSocketResource::canAssign(), PSocketResource::canAssign(), OutputPSocketResource::canAssign(), BusResource::canAssign(), IUResource::canAssign(), SimpleBrokerDirector::canAssign(), BFOptimization::canAssign(), ExecutionPipelineResource::canAssignDestination(), ExecutionPipelineResource::canAssignSource(), MachineConnectivityCheck::canBypass(), MachineConnectivityCheck::canBypassOpToDst(), MachineConnectivityCheck::canSourceWriteToAnyDestinationPort(), BusBroker::canTransportImmediate(), DataDependenceGraphBuilder::checkAndCreateMemAntideps(), ExecutionPipelineResource::checkOperandAllowed(), CopyingDelaySlotFiller::collectMoves(), MachineConnectivityCheck::copyOpFUs(), RegisterCopyAdder::countAndAddConnectionRegisterCopiesToRR(), BF2Scheduler::countLoopInvariantValueUsages(), BFRegCopy::createAntidepsForReg(), RegisterCopyAdder::createAntidepsForReg(), TTAProgram::CodeGenerator::createBreakOperation(), TTAProgram::CodeGenerator::createForLoopBufferInit(), DataDependenceGraph::createRegisterAntiDependenciesBetweenNodes(), DataDependenceGraph::createSubgraph(), DataDependenceGraphBuilder::createTriggerDependencies(), BFOptimization::destinationFU(), DataDependenceGraph::destRenamed(), MemoryAliasAnalyzer::detectConstantScale(), MoveNodeDuplicator::disposeMoveNode(), DataDependenceGraph::dotString(), MoveNodeDuplicator::duplicateMoveNode(), ExecutionPipelineBroker::earliestFromDestination(), ExecutionPipelineBroker::earliestFromSource(), earliestResultReadCycle(), DataDependenceGraph::edgeWeight(), DataDependenceGraph::exclusingGuards(), ExecutionPipelineResource::exclusiveMoves(), BUBasicBlockScheduler::finalizeSchedule(), BUBasicBlockScheduler::findBypassDestinations(), FUBroker::findDstFUOfMove(), LoopAnalyzer::findEndCond(), RegisterRenamer::findGuardRegisters(), MemoryAliasAnalyzer::findIncrement(), LoopAnalyzer::findInitAndUpdate(), BF2Scheduler::findJump(), DataDependenceGraph::findLiveRange(), DataDependenceGraph::findLoopIndexUpdate(), DataDependenceGraph::findLoopLimitAndIndex(), MachineConnectivityCheck::findPossibleDestinationPorts(), MachineConnectivityCheck::findPossibleSourcePorts(), DataDependenceGraph::firstRegisterCycle(), DataDependenceGraph::firstScheduledRegisterKill(), DataDependenceGraph::firstScheduledRegisterRead(), DataDependenceGraph::firstScheduledRegisterReads(), DataDependenceGraph::firstScheduledRegisterWrite(), DataDependenceGraph::firstScheduledRegisterWrites(), ConstantAliasAnalyzer::getConstantAddress(), BF2Scheduler::getDstUnit(), CopyingDelaySlotFiller::getMoveNode(), BF2ScheduleFront::getPreferredLimits(), StackAliasAnalyzer::getStackOffset(), DataDependenceGraph::guardRenamed(), DataDependenceGraph::guardRestored(), DataDependenceGraph::guardsAllowBypass(), SequentialScheduler::handleBasicBlock(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BUBasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleLoopDDG(), BasicBlockScheduler::handleRemovedResultMoves(), BFOptimization::hasAmbiguousResources(), ProgramOperation::hasMoveNodeForMove(), BFOptimization::immCountPreventsScheduling(), IUResource::immediateValue(), IUResource::immediateWriteCycle(), RegisterRenamer::initializeFreeRegisters(), BUMoveNodeSelector::initializeReadylist(), CriticalPathBBMoveNodeSelector::initializeReadylist(), PreOptimizer::inverseGuardsOfHeads(), OffsetAliasAnalyzer::isAddressTraceable(), RegisterCopyAdder::isAllowedUnit(), OutputPSocketBroker::isAlreadyAssigned(), DataDependenceGraphBuilder::isAlwaysDifferentFU(), OutputPSocketBroker::isApplicable(), IUBroker::isApplicable(), BF2Scheduler::isDestinationUniversalReg(), ProgramOperation::isLegalFU(), ExecutionPipelineBroker::isMoveTrigger(), DataDependenceGraph::isNotAvoidable(), CriticalPathBBMoveNodeSelector::isReadyToBeScheduled(), isSourceReg(), BF2Scheduler::isSourceUniversalReg(), BF2Scheduler::isTrigger(), DataDependenceGraphBuilder::isTriggering(), BF2Scheduler::jumpGuard(), BFOptimization::jumpGuardAvailableCycle(), DataDependenceGraph::lastRegisterCycle(), DataDependenceGraph::lastScheduledRegisterGuardReads(), DataDependenceGraph::lastScheduledRegisterKill(), DataDependenceGraph::lastScheduledRegisterRead(), DataDependenceGraph::lastScheduledRegisterReads(), DataDependenceGraph::lastScheduledRegisterWrites(), DataDependenceEdge::latencySt(), ExecutionPipelineBroker::latestFromDestination(), ExecutionPipelineBroker::latestFromSource(), latestTriggerWriteCycle(), DataDependenceGraphBuilder::memoryCategory(), DataDependenceGraph::mergeAndKeepSource(), DataDependenceGraph::mergeAndKeepUser(), BUMoveNodeSelector::mightBeReady(), CriticalPathBBMoveNodeSelector::mightBeReady(), ProgramOperation::moveNode(), BF2Scheduler::mustBeTrigger(), ExecutionPipelineResource::operandAllowedAtCycle(), ExecutionPipelineResource::operandOverwritten(), ExecutionPipelineResource::operandPort(), ExecutionPipelineResource::operandSharePreventsTriggerForScheduledResult(), ExecutionPipelineResource::operandTooLate(), BFRemoveLoopChecksAndJump::operator()(), BFLateBypassGuard::operator()(), BFEarlyGuardBypass::operator()(), BFSchedulePreLoopShared::operator()(), BFDropPreShared::operator()(), BFShareOperandsLate::operator()(), BFRenameSource::operator()(), BFLateBypasses::operator()(), BFShareOperand::operator()(), BFTryRemoveGuard::operator()(), BFUpdateMoveOnBypass::operator()(), BFPostpassBypass::operator()(), BFRegCopy::operator()(), BFRescheduleResultClose::operator()(), BFRemoveGuardsFromSuccs::operator()(), BFShareOperandWithScheduled::operator()(), BFLateBypass::operator()(), BFScheduleTD::operator()(), BFShareOperands::operator()(), BFPushMoveUp::operator()(), BFPushAntidepDown::operator()(), BFRemoveGuard::operator()(), BFPushMoveUp2::operator()(), BFScheduleBU::operator()(), BFScheduleExact::operator()(), BFRemoveGuardFromSucc::operator()(), BFShareOperandLate::operator()(), RLBUPriorityCriticalPath::operator()(), ResourceConstraintAnalyzer::optimalScheduleResourceUsage(), ProgramOperation::outputIndexFromGuardOfMove(), ProgramOperation::outputIndexOfMove(), ExecutionPipelineResource::poConflictsWithInputPort(), BF2Scheduler::possibleTempRegRFs(), BF2Scheduler::preAllocateFunctionUnits(), BUBasicBlockScheduler::precedingTempMove(), BF2ScheduleFront::prefResultCycle(), DataDependenceGraphBuilder::processDestination(), DataDependenceGraphBuilder::processGuard(), DataDependenceGraphBuilder::processMemWrite(), DataDependenceGraphBuilder::processOperand(), ProgramDependenceGraph::processPredicate(), ProgramDependenceGraph::processRegion(), DataDependenceGraphBuilder::processRegWrite(), DataDependenceGraphBuilder::processResultRead(), DataDependenceGraphBuilder::processSource(), DataDependenceGraphBuilder::processTriggerMemoryAndFUStates(), DataDependenceGraphBuilder::processTriggerPO(), DataDependenceGraphBuilder::processTriggerRegistersAndOperations(), ProgramDependenceGraph::ProgramDependenceGraph(), CycleLookBackSoftwareBypasser::removeBypass(), CycleLookBackSoftwareBypasser::removeDeadResults(), ProgramDependenceGraph::removeGuardedJump(), ProgramOperation::removeInputNode(), DataDependenceGraph::removeNode(), ProgramOperation::removeOutputNode(), RegisterRenamer::renameDestinationRegister(), RegisterRenamer::renameLiveRange(), RegisterRenamer::renameSourceRegister(), AssignmentPlan::resetAssignments(), ExecutionPipelineResource::resourcesAllowTrigger(), ExecutionPipelineResource::resultAllowedAtCycle(), ExecutionPipelineResource::resultCausesTriggerBetweenOperandSharing(), ExecutionPipelineResource::resultPort(), DataDependenceGraph::resultUsed(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), BF2Scheduler::revertBBLiveRangeBookkeepingForDestination(), BF2Scheduler::revertBBLiveRangeBookkeepingForSource(), BFOptimization::RFReadPortCountPreventsScheduling(), BFOptimization::rmEC(), BFOptimization::rmLC(), DataDependenceGraph::rWawRawEdgesOutUncond(), DataDependenceGraph::sameGuards(), DataDependenceGraph::sanityCheck(), DataDependenceEdge::saveState(), BF2ScheduleFront::scheduleFrontFromMove(), BasicBlockScheduler::scheduleInputOperandTempMoves(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), SequentialScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleOperand(), SequentialScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), BasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReadTempMoves(), BasicBlockScheduler::scheduleResultReadTempMoves(), BUBasicBlockScheduler::scheduleRRMove(), BasicBlockScheduler::scheduleRRTempMoves(), BUBasicBlockScheduler::scheduleRRTempMoves(), MemoryAliasAnalyzer::searchLoopIndexBasedIncrement(), BFOptimization::setJumpGuard(), ProgramOperation::setOperation(), BFOptimization::setPrologDstFUAnno(), BFOptimization::setPrologSrcFUAnno(), BFOptimization::sourceFU(), DataDependenceGraph::sourceRenamed(), BFCopyRegWithOp::splitMove(), BFRegCopyAfter::splitMove(), BFRegCopyBefore::splitMove(), BasicBlockScheduler::succeedingTempMove(), ProgramOperation::switchInputs(), ExecutionPipelineResource::testTriggerResult(), ProgramOperation::triggeringMove(), ExecutionPipelineResource::triggerTooEarly(), CopyingDelaySlotFiller::tryToAssignNodes(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp(), BasicBlockScheduler::tryToDelayOperands(), PreOptimizer::tryToOptimizeAddressReg(), BUBasicBlockScheduler::tryToOptimizeWaw(), BasicBlockScheduler::tryToOptimizeWaw(), PreOptimizer::tryToPrecalcConstantAdd(), PreOptimizer::tryToRemoveEq(), PreOptimizer::tryToRemoveGuardInversingOp(), PreOptimizer::tryToRemoveXor(), BUBasicBlockScheduler::tryToSwitchInputs(), BasicBlockScheduler::tryToSwitchInputs(), LoopAnalyzer::tryTrackCommonAncestor(), OutputFUBroker::unassign(), IUResource::unassign(), ITemplateBroker::unassign(), SimpleBrokerDirector::unassign(), ExecutionPipelineResource::unassignDestination(), BUBasicBlockScheduler::undoBypass(), BFEarlyGuardBypass::undoOnlyMe(), BFLateBypassGuard::undoOnlyMe(), BFUpdateMoveOnBypass::undoOnlyMe(), BFRescheduleMove::undoOnlyMe(), BFScheduleTD::undoOnlyMe(), BFRemoveGuard::undoOnlyMe(), BFScheduleBU::undoOnlyMe(), BFRemoveGuardFromSucc::undoOnlyMe(), BFCopyRegWithOp::undoSplit(), BFRegCopyAfter::undoSplit(), BFRegCopyBefore::undoSplit(), DataDependenceGraph::unMergeUser(), BF2Scheduler::unreservePreallocatedFUs(), BasicBlockScheduler::unschedule(), SequentialScheduler::unschedule(), BFUnscheduleMove::unscheduleOriginal(), BFUnscheduleFromBody::unscheduleOriginal(), BFOptimization::unsetJumpGuard(), BFMergeAndKeepUser::updateEdges(), BFOptimization::usePrologMove(), MoveNodeGroup::writesJumpGuard(), and DataDependenceGraph::writeToXMLFile().
const TTAProgram::Move& MoveNode::move | ( | ) | const |
std::shared_ptr<TTAProgram::Move> MoveNode::movePtr | ( | ) |
std::shared_ptr<const TTAProgram::Move> MoveNode::movePtr | ( | ) | const |
void MoveNode::removeDestinationOperation | ( | const ProgramOperation * | ptr | ) |
Unsets destination operation.
Does not ask the ProgramOperation to remove this MoveNode from it's input moves.
Definition at line 741 of file MoveNode.cc.
References __func__, and dstOps_.
Referenced by BFShareOperand::operator()(), BFShareOperand::undoOnlyMe(), BFCopyRegWithOp::undoSplit(), and ProgramOperation::~ProgramOperation().
Scope & MoveNode::scope | ( | ) |
Returns the enclosing scheduling scope of the node.
TODO: Intentionally falsified code Class Scope does not exists so far in real
Definition at line 436 of file MoveNode.cc.
void MoveNode::setCycle | ( | const int | newcycle | ) |
Set cycle for a node, also sets placed_
newcycle | Cycle to which node is placed_ |
InvalidData | If node is already placed in cycle different from newcycle |
Definition at line 503 of file MoveNode.cc.
References __func__, cycle_, and placed_.
Referenced by LoopPrologAndEpilogBuilder::build(), SimpleBrokerDirector::canAssign(), ResourceConstraintAnalyzer::memoryBoundScheduleResourceUsage(), AssignmentPlan::setRequest(), and AssignmentPlan::tryCachedAssignment().
void MoveNode::setGuardOperationPtr | ( | ProgramOperationPtr | po | ) |
Set a guard src of MoveNode to ProgramOperation
po | Program operation that is source of MoveNode |
Definition at line 550 of file MoveNode.cc.
References guardOp_.
Referenced by CopyingDelaySlotFiller::collectMoves(), MoveNodeDuplicator::duplicateMoveNode(), CopyingDelaySlotFiller::getMoveNode(), and DataDependenceGraph::guardConverted().
void MoveNode::setIsInFrontier | ( | bool | inFrontier = true | ) |
Referenced by BF2ScheduleFront::requeueOtherMovesOfSameOp().
void MoveNode::setSourceOperationPtr | ( | ProgramOperationPtr | po | ) |
Set a source of MoveNode to ProgramOperation
po | Program operation that is source of MoveNode |
Definition at line 541 of file MoveNode.cc.
References srcOp_.
Referenced by Peel2BBLoops::appendBB(), SimpleIfConverter::appendBB(), MoveNodeGroupBuilder::build(), copy(), TTAProgram::CodeGenerator::createForLoopBufferInit(), llvm::LLVMTCEIRBuilder::createMoveNode(), MoveNodeDuplicator::duplicateMoveNode(), CopyingDelaySlotFiller::getMoveNode(), DataDependenceGraph::mergeAndKeepUser(), BFUpdateMoveOnBypass::operator()(), DataDependenceGraphBuilder::processResultRead(), and BFCopyRegWithOp::splitMove().
ProgramOperation & MoveNode::sourceOperation | ( | ) | const |
Returns the instance of operation in the program whose output is the source of this node.
InvalidData | if the given node does not read an operation output. |
Definition at line 453 of file MoveNode.cc.
References sourceOperationPtr().
Referenced by OutputFUBroker::allAvailableResources(), BF2ScheduleFront::allNodesOfSameOperation(), CopyingDelaySlotFiller::allowedToSpeculate(), LoopAnalyzer::analyze(), OffsetAliasAnalyzer::analyze(), ResourceConstraintAnalyzer::analyzeMoveNode(), BFOptimization::assign(), ExecutionPipelineResource::assignSource(), BFEarlyBypasser::bypassSourceLatestCycle(), ExecutionPipelineResource::canAssignSource(), copy(), MemoryAliasAnalyzer::detectConstantScale(), dotString(), DataDependenceGraph::dotString(), ResourceConstraintAnalyzer::dumpGraphWithStats(), MoveNodeDuplicator::duplicateMove(), MoveNodeDuplicator::duplicateMoveNode(), DataDependenceGraph::earliestCycle(), ExecutionPipelineBroker::earliestFromSource(), earliestResultReadCycle(), LoopAnalyzer::findEndCond(), MemoryAliasAnalyzer::findIncrement(), BF2ScheduleFront::findInducingBypassSource(), LoopAnalyzer::findInitAndUpdate(), DataDependenceGraph::findLoopIndexUpdate(), DataDependenceGraph::findLoopLimitAndIndex(), MachineConnectivityCheck::findPossibleDestinationPorts(), MachineConnectivityCheck::findPossibleSourcePorts(), CopyingDelaySlotFiller::getMove(), DataDependenceGraph::guardRestored(), inSameOperation(), OffsetAliasAnalyzer::isAddressTraceable(), DataDependenceGraph::latestCycle(), ExecutionPipelineBroker::latestFromDestination(), ExecutionPipelineBroker::latestFromSource(), BUMoveNodeSelector::mightBeReady(), CriticalPathBBMoveNodeSelector::mightBeReady(), ExecutionPipelineResource::nextResultCycle(), BFLateBypassGuard::operator()(), BFPushMoveUp2::operator()(), ProgramOperation::outputIndexOfMove(), DataDependenceGraph::predecessorsReady(), BF2ScheduleFront::prefResultCycle(), DataDependenceGraph::removeNode(), ExecutionPipelineResource::resultCausesTriggerBetweenOperandSharing(), ExecutionPipelineResource::resultPort(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleOperandWrites(), SequentialScheduler::scheduleOperation(), BasicBlockScheduler::scheduleOperation(), BUBasicBlockScheduler::scheduleOperation(), MemoryAliasAnalyzer::searchLoopIndexBasedIncrement(), DataDependenceGraph::successorsReady(), ExecutionPipelineResource::testTriggerResult(), PreOptimizer::tryToRemoveEq(), LoopAnalyzer::tryTrackCommonAncestor(), ExecutionPipelineResource::unassignSource(), BFUpdateMoveOnBypass::undoOnlyMe(), DataDependenceGraph::unMergeUser(), BFUnscheduleFromBody::unscheduleOriginal(), BFUnscheduleMove::unscheduleOriginal(), ~MoveNode(), and ProgramOperation::~ProgramOperation().
ProgramOperationPtr MoveNode::sourceOperationPtr | ( | ) | const |
Definition at line 458 of file MoveNode.cc.
References __func__, isSourceOperation(), srcOp_, and toString().
Referenced by copy(), DataDependenceGraph::createSubgraph(), MoveNodeDuplicator::duplicateMoveNode(), CopyingDelaySlotFiller::getMoveNode(), DataDependenceGraph::guardConverted(), DataDependenceGraph::mergeAndKeepUser(), BFEarlyGuardBypass::operator()(), BFUpdateMoveOnBypass::operator()(), BFRemoveLoopChecksAndJump::queueAliveMove(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), BFRemoveLoopChecksAndJump::removePoFromQueue(), and sourceOperation().
|
virtual |
Returns string with ID of the MoveNode.
Not yet used anywhere except printing graph in .dot file. Returns the disassembly of the move along with its id.
Reimplemented from GraphNode.
Definition at line 576 of file MoveNode.cc.
References cycle(), POMDisassembler::disassemble(), isPlaced(), isScheduled(), move_, GraphNode::nodeID(), and Conversion::toString().
Referenced by RegisterCopyAdder::addConnectionRegisterCopies(), RegisterCopyAdder::addConnectionRegisterCopiesImmediate(), RegisterCopyAdder::addRegisterCopies(), RegisterCopyAdder::addRegisterCopiesToRRMove(), OutputFUBroker::allAvailableResources(), ResourceConstraintAnalyzer::analyzeMoveNode(), ResourceConstraintAnalyzer::analyzeRegisterAntideps(), SimpleResourceManager::assign(), SimpleBrokerDirector::assign(), IUBroker::assign(), BFOptimization::assign(), BFOptimization::assignCopyToPrologEpilog(), ExecutionPipelineResource::assignDestination(), BFSwapOperands::BFSwapOperands(), LoopPrologAndEpilogBuilder::build(), MoveNodeGroupBuilder::build(), BUBasicBlockScheduler::bypassNode(), BFEarlyBypasser::bypassSourceLatestCycle(), SimpleResourceManager::canAssign(), SimpleBrokerDirector::canAssign(), BFOptimization::canAssign(), ExecutionPipelineResource::canAssignDestination(), ExecutionPipelineResource::canAssignSource(), BUMoveNodeSelector::candidates(), ExecutionPipelineResource::checkOperandAllowed(), BFOptimization::checkPrologDDG(), DataDependenceGraph::copyDepsOver(), RegisterCopyAdder::countAndAddConnectionRegisterCopiesToRR(), BF2Scheduler::countLoopInvariantValueUsages(), cycle(), MoveNodeDuplicator::disposeMoveNode(), DataDependenceGraph::dotString(), ResourceConstraintAnalyzer::dumpGraphWithStats(), MoveNodeGroup::earliestCycle(), SimpleResourceManager::earliestCycle(), BUBasicBlockScheduler::finalizeSchedule(), BF2Scheduler::finalizeSchedule(), LoopAnalyzer::findEndCond(), LoopAnalyzer::findInitAndUpdate(), MachineConnectivityCheck::findPossibleDestinationPorts(), DataDependenceGraph::getBasicBlockNode(), BF2Scheduler::getDstUnit(), BF2ScheduleFront::getMoveNodeFromFrontBU(), BF2ScheduleFront::getPreferredLimits(), guardOperationPtr(), SequentialScheduler::handleBasicBlock(), BBSchedulerController::handleBasicBlock(), BUBasicBlockScheduler::handleDDG(), BasicBlockScheduler::handleDDG(), BF2Scheduler::handleLoopDDG(), BasicBlockScheduler::handleRemovedResultMoves(), BUMoveNodeSelector::initializeReadylist(), BF2Scheduler::jumpGuard(), BFOptimization::jumpGuardAvailableCycle(), SimpleResourceManager::latestCycle(), ExecutionPipelineBroker::latestFromSource(), ResourceConstraintAnalyzer::memoryBoundScheduleResourceUsage(), DataDependenceGraphBuilder::memoryCategory(), DataDependenceGraph::mergeAndKeepAllowed(), ExecutionPipelineResource::operandAllowedAtCycle(), ExecutionPipelineResource::operandOverwritten(), BFLateBypassGuard::operator()(), BFSchedulePreLoopShared::operator()(), BFEarlyBypass::operator()(), BFDRELate::operator()(), BFEarlyBypasser::operator()(), BFShareOperandsLate::operator()(), BFDropPreShared::operator()(), BFLateBypasses::operator()(), BFShareOperand::operator()(), BFRemoveEdge::operator()(), BFPushAntidepsDown::operator()(), BFPostpassBypass::operator()(), BFPostpassLoopDRE::operator()(), BFPushDepsUp::operator()(), BFRemoveGuardsFromSuccs::operator()(), BFRescheduleResultClose::operator()(), BFDRELoop::operator()(), BFShareOperandWithScheduled::operator()(), BFLateBypass::operator()(), BFScheduleTD::operator()(), BFShareOperands::operator()(), BFPushMoveUp::operator()(), BFPushAntidepDown::operator()(), BFRemoveGuard::operator()(), BF2ScheduleFront::operator()(), BFPushMoveUp2::operator()(), BFScheduleExact::operator()(), BFScheduleBU::operator()(), BFRemoveGuardFromSucc::operator()(), BFShareOperandLate::operator()(), BF2Scheduler::possibleTempRegRFs(), BF2Scheduler::preAllocateFunctionUnits(), BF2ScheduleFront::prefResultCycle(), DataDependenceGraphBuilder::processDestination(), DataDependenceGraphBuilder::processGuard(), BFRemoveLoopChecksAndJump::queueAliveMove(), BFRemoveLoopChecksAndJump::removeMoveFromQueue(), DataDependenceGraph::removeRAWEdges(), RegisterRenamer::renameLiveRange(), ExecutionPipelineResource::resultAllowedAtCycle(), BFUnscheduleFromBody::returnOriginal(), BFUnscheduleMove::returnOriginal(), BFShareOperandLate::revert(), BF2Scheduler::revertBBLiveRangeBookkeepingForDestination(), BF2Scheduler::revertBBLiveRangeBookkeepingForSource(), BFOptimization::rmEC(), BFOptimization::rmLC(), DataDependenceGraph::sanityCheck(), BF2Scheduler::scheduleDDG(), BF2ScheduleFront::scheduleFrontFromMove(), BUBasicBlockScheduler::scheduleInputOperandTempMoves(), BF2ScheduleFront::scheduleMove(), SequentialScheduler::scheduleMove(), BasicBlockScheduler::scheduleMove(), BUBasicBlockScheduler::scheduleMove(), BasicBlockScheduler::scheduleOperandWrites(), BUBasicBlockScheduler::scheduleOperandWrites(), SequentialScheduler::scheduleResultReads(), BasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleResultReads(), BUBasicBlockScheduler::scheduleRRTempMoves(), BFOptimization::setJumpGuard(), BFOptimization::setPrologDstFUAnno(), BFOptimization::setPrologSrcFUAnno(), AssignmentPlan::setRequest(), sourceOperationPtr(), BFRegCopyAfter::splitMove(), ExecutionPipelineResource::testTriggerResult(), MoveNodeGroup::toString(), ProgramDependenceNode::toString(), ExecutionPipelineResource::triggerTooEarly(), BF2ScheduleFront::tryRevertEarlierBypass(), BF2ScheduleFront::tryToScheduleMoveOuter(), SimpleResourceManager::unassign(), IUBroker::unassign(), SimpleBrokerDirector::unassign(), BFOptimization::unassign(), BFOptimization::unassignCopyFromPrologEpilog(), ExecutionPipelineResource::unassignDestination(), BUBasicBlockScheduler::undoBypass(), BFRegCopy::undoDDG(), BFLateBypassGuard::undoOnlyMe(), BFSchedulePreLoopShared::undoOnlyMe(), BFDropPreShared::undoOnlyMe(), BFScheduleMove::undoOnlyMe(), BFRemoveEdge::undoOnlyMe(), BFShareOperand::undoOnlyMe(), BFPostpassBypass::undoOnlyMe(), BFRescheduleMove::undoOnlyMe(), BFLateBypass::undoOnlyMe(), BFScheduleTD::undoOnlyMe(), BFShareOperandWithScheduled::undoOnlyMe(), BFScheduleBU::undoOnlyMe(), BFRemoveGuardFromSucc::undoOnlyMe(), BFRegCopyAfter::undoSplit(), BasicBlockScheduler::unschedule(), SequentialScheduler::unschedule(), BFUnscheduleMove::unscheduleOriginal(), BFUnscheduleFromBody::unscheduleOriginal(), BFOptimization::unsetJumpGuard(), and DataDependenceGraph::writeToXMLFile().
int MoveNode::type | ( | ) |
Returns type of the MoveNode.
Not yet used anywhere and types not decided so current dummy implementation returns -1
Definition at line 563 of file MoveNode.cc.
void MoveNode::unsetCycle | ( | ) |
Unset cycle from nodes
InvalidData | If node is not placed |
Definition at line 519 of file MoveNode.cc.
References __func__, cycle_, and placed_.
Referenced by AssignmentPlan::resetAssignments(), and AssignmentPlan::tryCachedAssignment().
void MoveNode::unsetGuardOperation | ( | ) |
Unsets guard operation.
Does not ask the ProgramOperation to remove this MoveNode from it's output moves.
Definition at line 771 of file MoveNode.cc.
References guardOp_.
Referenced by DataDependenceGraph::guardRestored(), CopyingDelaySlotFiller::tryToAssignNodes(), CopyingDelaySlotFiller::tryToAssignOtherMovesOfOp(), and ProgramOperation::~ProgramOperation().
void MoveNode::unsetSourceOperation | ( | ) |
Unsets source operation.
Does not ask the ProgramOperation to remove this MoveNode from it's output moves.
Definition at line 760 of file MoveNode.cc.
References srcOp_.
Referenced by DataDependenceGraph::removeNode(), PreOptimizer::tryToPrecalcConstantAdd(), BFUpdateMoveOnBypass::undoOnlyMe(), BFCopyRegWithOp::undoSplit(), DataDependenceGraph::unMergeUser(), and ProgramOperation::~ProgramOperation().
|
private |
Cycle in which the node is placed. Each cycle uniquely identifies an instruction slot within the current scheduling scope.
Definition at line 168 of file MoveNode.hh.
Referenced by cycle(), setCycle(), and unsetCycle().
|
private |
Definition at line 160 of file MoveNode.hh.
Referenced by addDestinationOperationPtr(), clearDestinationOperation(), and removeDestinationOperation().
|
private |
The movenode cannot be unscheduled anymore, fixed in place.
Definition at line 174 of file MoveNode.hh.
|
private |
Definition at line 164 of file MoveNode.hh.
Referenced by guardOperationPtr(), isGuardOperation(), setGuardOperationPtr(), and unsetGuardOperation().
|
private |
Pointer to Immediate this node represents, Node itself do not change move.
Definition at line 158 of file MoveNode.hh.
Referenced by copy(), immediate(), immediatePtr(), isAssigned(), and isImmediate().
|
private |
This is in scheduling frontier(used in Bubblefish scheduler)
Definition at line 177 of file MoveNode.hh.
Referenced by dotString().
|
private |
Pointer to Move this node represents, Node itself do not change move.
Definition at line 155 of file MoveNode.hh.
Referenced by copy(), earliestResultReadCycle(), guardLatency(), isAssigned(), isDestinationVariable(), isGuardOperation(), isSourceConstant(), isSourceImmediateRegister(), isSourceOperation(), isSourceRA(), isSourceVariable(), and toString().
|
private |
True when the node placed (is given a cycle in program).
Definition at line 171 of file MoveNode.hh.
Referenced by isPlaced(), setCycle(), and unsetCycle().
|
private |
Definition at line 162 of file MoveNode.hh.
Referenced by isSourceOperation(), setSourceOperationPtr(), sourceOperationPtr(), and unsetSourceOperation().