LLVM API Documentation

ScheduleDAGSimple.cpp File Reference

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

#define DEBUG_TYPE   "sched"

Definition at line 16 of file ScheduleDAGSimple.cpp.


Typedef Documentation

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.


Enumeration Type Documentation

anonymous enum

Special case itineraries.

Enumerator:
CallLatency 
RSInteger 
RSFloat 
RSLoadStore 
RSBranch 

Definition at line 481 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 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.


Variable Documentation

T Bits

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.

NodeInfo* Dominator

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.

NodeInfo* Info

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.

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

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

NIVector Members

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

NIIterator NGE

Definition at line 149 of file ScheduleDAGSimple.cpp.

NIIterator NGI

Definition at line 148 of file ScheduleDAGSimple.cpp.

NodeInfo* NI

Definition at line 190 of file ScheduleDAGSimple.cpp.

NodeInfo* NI

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

SDNode* Node

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.

SDNode::op_iterator OE

Definition at line 193 of file ScheduleDAGSimple.cpp.

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

SDNode::op_iterator OI

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

NIVector Ordering

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

InstrStage* StageBegin

Definition at line 91 of file ScheduleDAGSimple.cpp.

InstrStage* StageEnd

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.

std::vector<T> Tally

Definition at line 269 of file ScheduleDAGSimple.cpp.