LLVM API Documentation
#include "llvm/CodeGen/ScheduleDAG.h"
#include "llvm/CodeGen/SelectionDAG.h"
#include "llvm/Target/TargetMachine.h"
#include "llvm/Target/TargetInstrInfo.h"
#include "llvm/Support/Debug.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 |
typedef std::vector< T >::iterator | Iter |
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 | |
NodeGroup * | Next |
NIVector | Members |
NodeInfo * | Dominator |
unsigned | Latency |
int | Pending |
int | Pending |
SDNode * | Node |
InstrStage * | StageBegin |
InstrStage * | StageEnd |
unsigned | Latency |
bool | IsCall |
bool | IsLoad |
bool | IsStore |
unsigned | Slot |
NodeGroup * | Group |
unsigned | Preorder |
NodeInfo * | NI |
NIIterator | NGI |
NIIterator | NGE |
NodeInfo * | NI |
NodeGroupIterator | GI |
SDNode::op_iterator | OI |
SDNode::op_iterator | OE |
T | Bits |
std::vector< T > | Tally |
bool | NoSched |
bool | NoItins |
ResourceTally< unsigned > | Tally |
unsigned | NSlots |
static const unsigned | NotFound = ~0U |
unsigned | NodeCount |
std::map< SDNode *, NodeInfo * > | Map |
bool | HasGroups |
NodeInfo * | Info |
NIVector | Ordering |
NodeGroup * | HeadNG |
NodeGroup * | TailNG |
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.
Definition at line 268 of file ScheduleDAGSimple.cpp.
typedef std::vector<NodeInfoPtr>::iterator NIIterator [static] |
Definition at line 30 of file ScheduleDAGSimple.cpp.
typedef std::vector<NodeInfoPtr> NIVector [static] |
Definition at line 29 of file ScheduleDAGSimple.cpp.
typedef NodeInfo* NodeInfoPtr [static] |
Definition at line 27 of file ScheduleDAGSimple.cpp.
anonymous enum |
Special case itineraries.
Definition at line 479 of file ScheduleDAGSimple.cpp.
CountInternalUses - Returns the number of edges between the two nodes.
Definition at line 541 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 669 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 676 of file ScheduleDAGSimple.cpp.
References A, and llvm::MVT::Flag.
Definition at line 236 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(), and llvm::PPCTargetLowering::LowerOperation().
InstrStage CallStage = { CallLatency, RSBranch } [static] |
Definition at line 487 of file ScheduleDAGSimple.cpp.
Definition at line 41 of file ScheduleDAGSimple.cpp.
InstrStage FloatStage = { 3, RSFloat } [static] |
Definition at line 491 of file ScheduleDAGSimple.cpp.
NodeGroupIterator GI |
Definition at line 189 of file ScheduleDAGSimple.cpp.
Referenced by llvm::DSGraph::computeCalleeCallerMapping(), EliminateUsesOfECGlobals(), llvm::ReachabilityCloner::getClonedNH(), getSymbols(), llvm::DSGraph::mergeInGraph(), and llvm::EquivClassGraphs::runOnModule().
NodeGroup* Group |
Definition at line 96 of file ScheduleDAGSimple.cpp.
bool HasGroups |
Definition at line 401 of file ScheduleDAGSimple.cpp.
NodeGroup* HeadNG |
Definition at line 404 of file ScheduleDAGSimple.cpp.
Definition at line 402 of file ScheduleDAGSimple.cpp.
Referenced by llvm::InlineAsm::ParseConstraints().
InstrStage IntStage = { 2, RSInteger } [static] |
Definition at line 490 of file ScheduleDAGSimple.cpp.
bool IsCall |
Definition at line 92 of file ScheduleDAGSimple.cpp.
bool IsLoad |
Definition at line 93 of file ScheduleDAGSimple.cpp.
bool IsStore |
Definition at line 94 of file ScheduleDAGSimple.cpp.
unsigned Latency |
Definition at line 91 of file ScheduleDAGSimple.cpp.
unsigned Latency |
Definition at line 42 of file ScheduleDAGSimple.cpp.
InstrStage LoadStage = { 5, RSLoadStore } [static] |
Definition at line 488 of file ScheduleDAGSimple.cpp.
Definition at line 400 of file ScheduleDAGSimple.cpp.
Referenced by llvm::TypeMap< ValType, TypeClass >::add(), llvm::TypeMap< ValType, TypeClass >::clear(), llvm::TypeMap< ValType, TypeClass >::get(), llvm::TypeMap< ValType, TypeClass >::print(), and llvm::TypeMap< ValType, TypeClass >::RefineAbstractType().
Definition at line 40 of file ScheduleDAGSimple.cpp.
NodeGroup* Next |
Definition at line 38 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 147 of file ScheduleDAGSimple.cpp.
Definition at line 146 of file ScheduleDAGSimple.cpp.
Definition at line 188 of file ScheduleDAGSimple.cpp.
Definition at line 145 of file ScheduleDAGSimple.cpp.
Referenced by llvm::DSGraph::AssertGraphOK(), printCollection(), llvm::RecordSchedule(), llvm::DSGraph::removeDeadNodes(), llvm::DSGraph::removeTriviallyDeadNodes(), SimplifyEqualityComparisonWithOnlyPredecessor(), and llvm::DSGraph::~DSGraph().
Definition at line 88 of file ScheduleDAGSimple.cpp.
unsigned NodeCount |
Definition at line 399 of file ScheduleDAGSimple.cpp.
bool NoItins |
Definition at line 394 of file ScheduleDAGSimple.cpp.
bool NoSched |
Definition at line 393 of file ScheduleDAGSimple.cpp.
const unsigned NotFound = ~0U [static] |
Definition at line 397 of file ScheduleDAGSimple.cpp.
unsigned NSlots |
Definition at line 396 of file ScheduleDAGSimple.cpp.
Definition at line 191 of file ScheduleDAGSimple.cpp.
Referenced by llvm::MSScheduleSB::constructKernel(), llvm::DecomposeArrayRef(), LinkFunctionBody(), RecursiveDelete(), and llvm::FindUsedTypes::runOnModule().
Definition at line 190 of file ScheduleDAGSimple.cpp.
Referenced by ConvertOperandToType(), llvm::DecomposeArrayRef(), llvm::SlotCalculator::getPlane(), LinkFunctionBody(), OperandConvertibleToType(), OptimizeGEPExpression(), RecursiveDelete(), llvm::FindUsedTypes::runOnModule(), llvm::SelectionDAGLowering::visitGetElementPtr(), and WriteConstantInt().
Definition at line 403 of file ScheduleDAGSimple.cpp.
int Pending |
Definition at line 85 of file ScheduleDAGSimple.cpp.
int Pending |
Definition at line 43 of file ScheduleDAGSimple.cpp.
unsigned Preorder |
Definition at line 98 of file ScheduleDAGSimple.cpp.
unsigned Slot |
Definition at line 95 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 89 of file ScheduleDAGSimple.cpp.
Definition at line 90 of file ScheduleDAGSimple.cpp.
InstrStage StoreStage = { 2, RSLoadStore } [static] |
Definition at line 489 of file ScheduleDAGSimple.cpp.
NodeGroup * TailNG |
Definition at line 404 of file ScheduleDAGSimple.cpp.
ResourceTally<unsigned> Tally |
Definition at line 395 of file ScheduleDAGSimple.cpp.
Definition at line 267 of file ScheduleDAGSimple.cpp.