LLVM 22.0.0git
ScheduleDAGSDNodes.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "pre-RA-sched"

Functions

 STATISTIC (LoadsClustered, "Number of loads clustered together")
static void CheckForPhysRegDependency (SDNode *Def, SDNode *User, unsigned Op, const TargetRegisterInfo *TRI, const TargetInstrInfo *TII, const TargetLowering &TLI, MCRegister &PhysReg, int &Cost)
 CheckForPhysRegDependency - Check if the dependency between def and use of a specified operand is a physical register dependency.
static void CloneNodeWithValues (SDNode *N, SelectionDAG *DAG, ArrayRef< EVT > VTs, SDValue ExtraOper=SDValue())
static bool AddGlue (SDNode *N, SDValue Glue, bool AddGlue, SelectionDAG *DAG)
static void RemoveUnusedGlue (SDNode *N, SelectionDAG *DAG)
static void ProcessSDDbgValues (SDNode *N, SelectionDAG *DAG, InstrEmitter &Emitter, SmallVectorImpl< std::pair< unsigned, MachineInstr * > > &Orders, InstrEmitter::VRBaseMapType &VRBaseMap, unsigned Order)
 ProcessSDDbgValues - Process SDDbgValues associated with this node.
static void ProcessSourceNode (SDNode *N, SelectionDAG *DAG, InstrEmitter &Emitter, InstrEmitter::VRBaseMapType &VRBaseMap, SmallVectorImpl< std::pair< unsigned, MachineInstr * > > &Orders, SmallSet< Register, 8 > &Seen, MachineInstr *NewInsn)

Variables

static cl::opt< int > HighLatencyCycles ("sched-high-latency-cycles", cl::Hidden, cl::init(10), cl::desc("Roughly estimate the number of cycles that 'long latency' " "instructions take for targets with no itinerary"))

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "pre-RA-sched"

Definition at line 38 of file ScheduleDAGSDNodes.cpp.

Function Documentation

◆ AddGlue()

bool AddGlue ( SDNode * N,
SDValue Glue,
bool AddGlue,
SelectionDAG * DAG )
static

◆ CheckForPhysRegDependency()

void CheckForPhysRegDependency ( SDNode * Def,
SDNode * User,
unsigned Op,
const TargetRegisterInfo * TRI,
const TargetInstrInfo * TII,
const TargetLowering & TLI,
MCRegister & PhysReg,
int & Cost )
static

CheckForPhysRegDependency - Check if the dependency between def and use of a specified operand is a physical register dependency.

If so, returns the register and the cost of copying the register.

Definition at line 111 of file ScheduleDAGSDNodes.cpp.

References llvm::cast(), llvm::TargetLowering::checkForPhysRegDependency(), llvm::ISD::CopyFromReg, llvm::ISD::CopyToReg, llvm::TargetRegisterClass::getCopyCost(), llvm::User::getOperand(), II, Reg, TII, and TRI.

◆ CloneNodeWithValues()

◆ ProcessSDDbgValues()

void ProcessSDDbgValues ( SDNode * N,
SelectionDAG * DAG,
InstrEmitter & Emitter,
SmallVectorImpl< std::pair< unsigned, MachineInstr * > > & Orders,
InstrEmitter::VRBaseMapType & VRBaseMap,
unsigned Order )
static

ProcessSDDbgValues - Process SDDbgValues associated with this node.

Returns true if DV has any VReg operand locations which don't exist in VRBaseMap.

Definition at line 737 of file ScheduleDAGSDNodes.cpp.

References llvm::ScheduleDAGSDNodes::BB, llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::count(), llvm::ScheduleDAGSDNodes::DAG, Emitter, llvm::SelectionDAG::GetDbgValues(), llvm::MachineBasicBlock::insert(), N, and llvm::SDDbgOperand::SDNODE.

Referenced by ProcessSourceNode().

◆ ProcessSourceNode()

void ProcessSourceNode ( SDNode * N,
SelectionDAG * DAG,
InstrEmitter & Emitter,
InstrEmitter::VRBaseMapType & VRBaseMap,
SmallVectorImpl< std::pair< unsigned, MachineInstr * > > & Orders,
SmallSet< Register, 8 > & Seen,
MachineInstr * NewInsn )
static

◆ RemoveUnusedGlue()

void RemoveUnusedGlue ( SDNode * N,
SelectionDAG * DAG )
static

Definition at line 190 of file ScheduleDAGSDNodes.cpp.

References llvm::ArrayRef(), assert(), CloneNodeWithValues(), and N.

◆ STATISTIC()

STATISTIC ( LoadsClustered ,
"Number of loads clustered together"  )

Variable Documentation

◆ HighLatencyCycles

cl::opt< int > HighLatencyCycles("sched-high-latency-cycles", cl::Hidden, cl::init(10), cl::desc("Roughly estimate the number of cycles that 'long latency' " "instructions take for targets with no itinerary")) ( "sched-high-latency-cycles" ,
cl::Hidden ,
cl::init(10) ,
cl::desc("Roughly estimate the number of cycles that 'long latency' " "instructions take for targets with no itinerary")  )
static