LLVM  8.0.1
Macros | Functions | Variables
ScheduleDAGFast.cpp File Reference
#include "InstrEmitter.h"
#include "ScheduleDAGSDNodes.h"
#include "SDNodeDbgValue.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/SchedulerRegistry.h"
#include "llvm/CodeGen/SelectionDAGISel.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/InlineAsm.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for ScheduleDAGFast.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "pre-RA-sched"
 

Functions

 STATISTIC (NumUnfolds, "Number of nodes unfolded")
 
 STATISTIC (NumDups, "Number of duplicated nodes")
 
 STATISTIC (NumPRCopies, "Number of physical copies")
 
static MVT getPhysicalRegisterVT (SDNode *N, unsigned Reg, const TargetInstrInfo *TII)
 getPhysicalRegisterVT - Returns the ValueType of the physical register definition of the specified node. More...
 
static bool CheckForLiveRegDef (SUnit *SU, unsigned Reg, std::vector< SUnit *> &LiveRegDefs, SmallSet< unsigned, 4 > &RegAdded, SmallVectorImpl< unsigned > &LRegs, const TargetRegisterInfo *TRI)
 CheckForLiveRegDef - Return true and update live register vector if the specified register def of the specified SUnit clobbers any "live" registers. More...
 
static SDNodefindGluedUser (SDNode *N)
 findGluedUser - Find the representative use of a glue value by walking the use chain. More...
 

Variables

static RegisterScheduler fastDAGScheduler ("fast", "Fast suboptimal list scheduling", createFastDAGScheduler)
 
static RegisterScheduler linearizeDAGScheduler ("linearize", "Linearize DAG, no scheduling", createDAGLinearizer)
 

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "pre-RA-sched"

Definition at line 31 of file ScheduleDAGFast.cpp.

Function Documentation

◆ CheckForLiveRegDef()

static bool CheckForLiveRegDef ( SUnit SU,
unsigned  Reg,
std::vector< SUnit *> &  LiveRegDefs,
SmallSet< unsigned, 4 > &  RegAdded,
SmallVectorImpl< unsigned > &  LRegs,
const TargetRegisterInfo TRI 
)
static

CheckForLiveRegDef - Return true and update live register vector if the specified register def of the specified SUnit clobbers any "live" registers.

Definition at line 447 of file ScheduleDAGFast.cpp.

References llvm::SDep::getReg(), llvm::SDep::getSUnit(), llvm::SmallSet< T, N, C >::insert(), llvm::SDep::isAssignedRegDep(), llvm::MCRegAliasIterator::isValid(), llvm::SUnit::Preds, llvm::SmallVectorTemplateBase< T, bool >::push_back(), and TRI.

◆ findGluedUser()

static SDNode* findGluedUser ( SDNode N)
static

findGluedUser - Find the representative use of a glue value by walking the use chain.

Definition at line 709 of file ScheduleDAGFast.cpp.

References llvm::dbgs(), llvm::SDNode::getGluedUser(), LLVM_DEBUG, and N.

◆ getPhysicalRegisterVT()

static MVT getPhysicalRegisterVT ( SDNode N,
unsigned  Reg,
const TargetInstrInfo TII 
)
static

getPhysicalRegisterVT - Returns the ValueType of the physical register definition of the specified node.

FIXME: Move to SelectionDAG?

Definition at line 426 of file ScheduleDAGFast.cpp.

References assert(), llvm::ISD::CopyFromReg, llvm::MCInstrInfo::get(), llvm::MCInstrDesc::getImplicitDefs(), llvm::SDNode::getMachineOpcode(), llvm::MCInstrDesc::getNumDefs(), llvm::SDNode::getOpcode(), llvm::SDNode::getSimpleValueType(), and llvm::MCInstrDesc::ImplicitDefs.

◆ STATISTIC() [1/3]

STATISTIC ( NumUnfolds  ,
"Number of nodes unfolded"   
)

◆ STATISTIC() [2/3]

STATISTIC ( NumDups  ,
"Number of duplicated nodes  
)

◆ STATISTIC() [3/3]

STATISTIC ( NumPRCopies  ,
"Number of physical copies  
)

Variable Documentation

◆ fastDAGScheduler

RegisterScheduler fastDAGScheduler("fast", "Fast suboptimal list scheduling", createFastDAGScheduler)
static

◆ linearizeDAGScheduler

RegisterScheduler linearizeDAGScheduler("linearize", "Linearize DAG, no scheduling", createDAGLinearizer)
static