LLVM API Documentation

ScheduleDAGSimple.cpp File Reference

#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 NodeInfoNodeInfoPtr
typedef std::vector< NodeInfoPtrNIVector
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::ScheduleDAGllvm::createSimpleDAGScheduler (bool NoItins, SelectionDAG &DAG, MachineBasicBlock *BB)
llvm::ScheduleDAGllvm::createBFS_DAGScheduler (SelectionDAG &DAG, MachineBasicBlock *BB)

Variables

NodeGroup * Next
NIVector Members
NodeInfoDominator
unsigned Latency
int Pending
int Pending
SDNodeNode
InstrStageStageBegin
InstrStageStageEnd
unsigned Latency
bool IsCall
bool IsLoad
bool IsStore
unsigned Slot
NodeGroup * Group
unsigned Preorder
NodeInfoNI
NIIterator NGI
NIIterator NGE
NodeInfoNI
NodeGroupIterator GI
SDNode::op_iterator OI
SDNode::op_iterator OE
T Bits
std::vector< TTally
bool NoSched
bool NoItins
ResourceTally< unsigned > Tally
unsigned NSlots
static const unsigned NotFound = ~0U
unsigned NodeCount
std::map< SDNode *, NodeInfo * > Map
bool HasGroups
NodeInfoInfo
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 Documentation

#define DEBUG_TYPE   "sched"

Definition at line 16 of file ScheduleDAGSimple.cpp.


Typedef Documentation

typedef std::vector<T>::iterator Iter

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.


Enumeration Type Documentation

anonymous enum

Special case itineraries.

Enumerator:
CallLatency 
RSInteger 
RSFloat 
RSLoadStore 
RSBranch 

Definition at line 479 of file ScheduleDAGSimple.cpp.


Function Documentation

static unsigned CountInternalUses ( NodeInfo D,
NodeInfo U 
) [static]

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.


Variable Documentation

T Bits

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.

NodeInfo* Dominator

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.

NodeInfo* Info

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.

std::map<SDNode *, NodeInfo *> Map

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().

NIVector Members

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().

NIIterator NGE

Definition at line 147 of file ScheduleDAGSimple.cpp.

NIIterator NGI

Definition at line 146 of file ScheduleDAGSimple.cpp.

NodeInfo* NI

Definition at line 188 of file ScheduleDAGSimple.cpp.

NodeInfo* NI

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().

SDNode* Node

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.

SDNode::op_iterator OE

Definition at line 191 of file ScheduleDAGSimple.cpp.

Referenced by llvm::MSScheduleSB::constructKernel(), llvm::DecomposeArrayRef(), LinkFunctionBody(), RecursiveDelete(), and llvm::FindUsedTypes::runOnModule().

SDNode::op_iterator OI

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().

NIVector Ordering

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().

InstrStage* StageBegin

Definition at line 89 of file ScheduleDAGSimple.cpp.

InstrStage* StageEnd

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.

std::vector<T> Tally

Definition at line 267 of file ScheduleDAGSimple.cpp.