LLVM 20.0.0git
Macros | Functions | Variables
ScheduleDAGFast.cpp File Reference
#include "InstrEmitter.h"
#include "SDNodeDbgValue.h"
#include "ScheduleDAGSDNodes.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/InlineAsm.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"

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.
 
static bool CheckForLiveRegDef (SUnit *SU, unsigned Reg, std::vector< SUnit * > &LiveRegDefs, SmallSet< unsigned, 4 > &RegAdded, SmallVectorImpl< unsigned > &LRegs, const TargetRegisterInfo *TRI, const SDNode *Node=nullptr)
 CheckForLiveRegDef - Return true and update live register vector if the specified register def of the specified SUnit clobbers any "live" registers.
 
static SDNodefindGluedUser (SDNode *N)
 findGluedUser - Find the representative use of a glue value by walking the use chain.
 

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 28 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,
const SDNode Node = nullptr 
)
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 439 of file ScheduleDAGFast.cpp.

References getNode(), llvm::SmallSet< T, N, C >::insert(), llvm::MCRegAliasIterator::isValid(), 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 719 of file ScheduleDAGFast.cpp.

References 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 417 of file ScheduleDAGFast.cpp.

References assert(), llvm::ISD::CopyFromReg, llvm::MCInstrDesc::getNumDefs(), llvm::MCInstrDesc::implicit_defs(), N, and TII.

◆ STATISTIC() [1/3]

STATISTIC ( NumDups  ,
"Number of duplicated nodes"   
)

◆ STATISTIC() [2/3]

STATISTIC ( NumPRCopies  ,
"Number of physical copies"   
)

◆ STATISTIC() [3/3]

STATISTIC ( NumUnfolds  ,
"Number of nodes unfolded"   
)

Variable Documentation

◆ fastDAGScheduler

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

◆ linearizeDAGScheduler

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