LLVM API Documentation
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/Visibility.h"
#include <algorithm>
#include <iostream>
Include dependency graph for ScheduleDAGSimple.cpp:
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "sched" |
Typedefs | |
typedef NodeInfo * | NodeInfoPtr |
typedef std::vector< NodeInfoPtr > | NIVector |
typedef std::vector< NodeInfoPtr >::iterator | NIIterator |
Enumerations | |
enum | { CallLatency = 40, RSInteger = 0xC0000000, RSFloat = 0x30000000, RSLoadStore = 0x0C000000, RSBranch = 0x02000000 } |
Functions | |
static unsigned | CountInternalUses (NodeInfo *D, NodeInfo *U) |
static bool | isFlagDefiner (SDNode *A) |
isFlagDefiner - Returns true if the node defines a flag result. | |
static bool | isFlagUser (SDNode *A) |
llvm::ScheduleDAG * | llvm::createSimpleDAGScheduler (bool NoItins, SelectionDAG &DAG, MachineBasicBlock *BB) |
llvm::ScheduleDAG * | llvm::createBFS_DAGScheduler (SelectionDAG &DAG, MachineBasicBlock *BB) |
Variables | |
static InstrStage | CallStage = { CallLatency, RSBranch } |
static InstrStage | LoadStage = { 5, RSLoadStore } |
static InstrStage | StoreStage = { 2, RSLoadStore } |
static InstrStage | IntStage = { 2, RSInteger } |
static InstrStage | FloatStage = { 3, RSFloat } |
#define DEBUG_TYPE "sched" |
Definition at line 16 of file ScheduleDAGSimple.cpp.
typedef std::vector<NodeInfoPtr>::iterator NIIterator [static] |
Definition at line 32 of file ScheduleDAGSimple.cpp.
typedef std::vector<NodeInfoPtr> NIVector [static] |
Definition at line 31 of file ScheduleDAGSimple.cpp.
typedef NodeInfo* NodeInfoPtr [static] |
Definition at line 29 of file ScheduleDAGSimple.cpp.
anonymous enum |
Special case itineraries.
Definition at line 481 of file ScheduleDAGSimple.cpp.
CountInternalUses - Returns the number of edges between the two nodes.
Definition at line 543 of file ScheduleDAGSimple.cpp.
References D, M, Op, U, and llvm::Use::Val.
static bool isFlagDefiner | ( | SDNode * | A | ) | [static] |
isFlagDefiner - Returns true if the node defines a flag result.
Definition at line 671 of file ScheduleDAGSimple.cpp.
References A, and llvm::MVT::Flag.
static bool isFlagUser | ( | SDNode * | A | ) | [static] |
isFlagUser - Returns true if the node uses a flag result.
Definition at line 678 of file ScheduleDAGSimple.cpp.
References A, and llvm::MVT::Flag.
Definition at line 238 of file ScheduleDAGSimple.cpp.
Referenced by llvm::cl::bits_storage< DataType, bool >::addValue(), llvm::SubtargetFeatures::getBits(), llvm::cl::bits_storage< DataType, bool >::getBits(), llvm::ConstantSDNode::getSignExtended(), llvm::cl::bits_storage< DataType, bool >::isSet(), LowerFP_TO_SINT(), and LowerSINT_TO_FP().
InstrStage CallStage = { CallLatency, RSBranch } [static] |
Definition at line 489 of file ScheduleDAGSimple.cpp.
Definition at line 43 of file ScheduleDAGSimple.cpp.
InstrStage FloatStage = { 3, RSFloat } [static] |
Definition at line 493 of file ScheduleDAGSimple.cpp.
NodeGroupIterator GI |
Definition at line 191 of file ScheduleDAGSimple.cpp.
Referenced by AddGlobalToNode(), llvm::DSGraph::computeCalleeCallerMapping(), EliminateUsesOfECGlobals(), llvm::ReachabilityCloner::getClonedNH(), getSymbols(), llvm::DSGraph::mergeInGraph(), and llvm::EquivClassGraphs::runOnModule().
NodeGroup* Group |
Definition at line 98 of file ScheduleDAGSimple.cpp.
bool HasGroups |
Definition at line 403 of file ScheduleDAGSimple.cpp.
NodeGroup* HeadNG |
Definition at line 406 of file ScheduleDAGSimple.cpp.
Definition at line 404 of file ScheduleDAGSimple.cpp.
Referenced by llvm::InlineAsm::ParseConstraints().
InstrStage IntStage = { 2, RSInteger } [static] |
Definition at line 492 of file ScheduleDAGSimple.cpp.
bool IsCall |
Definition at line 94 of file ScheduleDAGSimple.cpp.
bool IsLoad |
Definition at line 95 of file ScheduleDAGSimple.cpp.
bool IsStore |
Definition at line 96 of file ScheduleDAGSimple.cpp.
unsigned Latency |
Definition at line 93 of file ScheduleDAGSimple.cpp.
unsigned Latency |
Definition at line 44 of file ScheduleDAGSimple.cpp.
InstrStage LoadStage = { 5, RSLoadStore } [static] |
Definition at line 490 of file ScheduleDAGSimple.cpp.
Definition at line 402 of file ScheduleDAGSimple.cpp.
Referenced by llvm::TypeMap< ValType, TypeClass >::add(), llvm::TypeMap< ValType, TypeClass >::clear(), llvm::TypeMap< ValType, TypeClass >::get(), llvm::ValueMap< ValType, TypeClass, ConstantClass, HasLargeKey >::getOrCreate(), llvm::ValueMap< ValType, TypeClass, ConstantClass, HasLargeKey >::InsertOrGetItem(), llvm::ValueMap< ValType, TypeClass, ConstantClass, HasLargeKey >::map_end(), llvm::ValueMap< ValType, TypeClass, ConstantClass, HasLargeKey >::MoveConstantToNewSlot(), llvm::TypeMap< ValType, TypeClass >::print(), llvm::TypeMap< ValType, TypeClass >::RefineAbstractType(), and llvm::ValueMap< ValType, TypeClass, ConstantClass, HasLargeKey >::remove().
Definition at line 42 of file ScheduleDAGSimple.cpp.
NodeGroup* Next |
Definition at line 40 of file ScheduleDAGSimple.cpp.
Referenced by llvm::ConstantRange::ConstantRange(), llvm::Instruction::getNext(), llvm::GlobalVariable::getNext(), llvm::Function::getNext(), llvm::BasicBlock::getNext(), llvm::Argument::getNext(), llvm::Annotation::getNext(), llvm::ConstantRange::getSingleElement(), llvm::df_iterator< llvm::Inverse< T >, SetTy, External >::operator++(), llvm::SDNode::SDNode(), llvm::ilist_traits< SDNode >::setNext(), llvm::ilist_traits< DSNode >::setNext(), and llvm::Annotable::~Annotable().
Definition at line 149 of file ScheduleDAGSimple.cpp.
Definition at line 148 of file ScheduleDAGSimple.cpp.
Definition at line 190 of file ScheduleDAGSimple.cpp.
Definition at line 147 of file ScheduleDAGSimple.cpp.
Referenced by llvm::DSGraph::AssertGraphOK(), llvm::ScheduleDAG::BuildSchedUnits(), printCollection(), llvm::DSGraph::removeDeadNodes(), llvm::DSGraph::removeTriviallyDeadNodes(), SimplifyEqualityComparisonWithOnlyPredecessor(), and llvm::DSGraph::~DSGraph().
Definition at line 90 of file ScheduleDAGSimple.cpp.
Referenced by llvm::DSNodeHandle::addEdgeTo(), llvm::DominanceFrontierBase::addToFrontier(), CountOperands(), CountResults(), llvm::DominatorTreeBase::createNewNode(), llvm::PPCHazardRecognizer970::EmitInstruction(), llvm::ScheduleDAG::EmitNode(), FindCallEndFromCallStart(), FindCallStartFromCall(), FindCallStartFromCallEnd(), llvm::DOTGraphTraits< const Function * >::getEdgeSourceLabel(), llvm::PPCHazardRecognizer970::getHazardType(), llvm::DSNodeIterator< NodeTy >::getNode(), llvm::DOTGraphTraits< const DSGraph * >::getNodeLabel(), llvm::DOTGraphTraits< const MachineFunction * >::getNodeLabel(), llvm::DOTGraphTraits< const Function * >::getNodeLabel(), llvm::simplify_type< const SCEVHandle >::getSimplifiedValue(), llvm::ScheduleDAG::isPassiveNode(), llvm::DSNodeHandle::mergeWith(), llvm::EquivalenceClasses< ElemTy >::member_iterator::operator *(), llvm::DSNodeIterator< NodeTy >::operator *(), llvm::EquivalenceClasses< ElemTy >::member_iterator::operator!=(), llvm::EquivalenceClasses< ElemTy >::member_iterator::operator++(), operator<<(), llvm::DSNodeIterator< NodeTy >::operator=(), llvm::EquivalenceClasses< ElemTy >::member_iterator::operator==(), llvm::DominanceFrontierBase::removeFromFrontier(), llvm::DSGraph::removeTriviallyDeadNodes(), llvm::PostDominanceFrontier::runOnFunction(), llvm::ETForestBase::setImmediateDominator(), and llvm::SplitCriticalEdge().
unsigned NodeCount |
Definition at line 401 of file ScheduleDAGSimple.cpp.
bool NoItins |
Definition at line 396 of file ScheduleDAGSimple.cpp.
bool NoSched |
Definition at line 395 of file ScheduleDAGSimple.cpp.
const unsigned NotFound = ~0U [static] |
Definition at line 399 of file ScheduleDAGSimple.cpp.
unsigned NSlots |
Definition at line 398 of file ScheduleDAGSimple.cpp.
Definition at line 193 of file ScheduleDAGSimple.cpp.
Referenced by LinkFunctionBody(), RecursiveDelete(), and llvm::FindUsedTypes::runOnModule().
Definition at line 192 of file ScheduleDAGSimple.cpp.
Referenced by ConvertOperandToType(), llvm::SlotCalculator::getPlane(), LinkFunctionBody(), OperandConvertibleToType(), OptimizeGEPExpression(), RecursiveDelete(), llvm::FindUsedTypes::runOnModule(), llvm::SelectionDAGLowering::visitGetElementPtr(), and WriteConstantInt().
Definition at line 405 of file ScheduleDAGSimple.cpp.
int Pending |
Definition at line 87 of file ScheduleDAGSimple.cpp.
int Pending |
Definition at line 45 of file ScheduleDAGSimple.cpp.
unsigned Preorder |
Definition at line 100 of file ScheduleDAGSimple.cpp.
unsigned Slot |
Definition at line 97 of file ScheduleDAGSimple.cpp.
Referenced by calcTypeName(), llvm::DemoteRegToStack(), llvm::DIDeserializer::Deserialize(), llvm::MachineDebugInfo::getOrCreateScope(), llvm::DISerializer::getString(), getTypeDescription(), llvm::DISerializer::Serialize(), and WriteAsOperandInternal().
Definition at line 91 of file ScheduleDAGSimple.cpp.
Definition at line 92 of file ScheduleDAGSimple.cpp.
InstrStage StoreStage = { 2, RSLoadStore } [static] |
Definition at line 491 of file ScheduleDAGSimple.cpp.
NodeGroup * TailNG |
Definition at line 406 of file ScheduleDAGSimple.cpp.
ResourceTally<unsigned> Tally |
Definition at line 397 of file ScheduleDAGSimple.cpp.
Definition at line 269 of file ScheduleDAGSimple.cpp.