LLVM 24.0.0git
WindowScheduler.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "pipeliner"

Functions

static bool getMemInfo (const MachineInstr *MI, const Value *&MemOpValue, int64_t &MemOpOffset, SmallVectorImpl< const Value * > &UnderlyingObjs, AAMDNodes &AATags, bool &IsAllIdentified)
 Collect the underlying objects and alias metadata for the single memory operand of MI.
static bool hasLoopCarriedMemDep (const MachineInstr *SrcMI, const MachineInstr *DstMI, BatchAAResults &BAA, const MachineBasicBlock *LoopBB, const MachineRegisterInfo &MRI, const TargetInstrInfo *TII)
 Return true if there is a loop-carried order dependency from memory access SrcMI to DstMI in loop LoopBB.

Variables

static cl::opt< unsigned > WindowIILimit ("window-ii-limit", cl::desc("The upper limit of II in the window algorithm."), cl::Hidden, cl::init(1000))

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "pipeliner"

Definition at line 56 of file WindowScheduler.cpp.

Function Documentation

◆ getMemInfo()

bool getMemInfo ( const MachineInstr * MI,
const Value *& MemOpValue,
int64_t & MemOpOffset,
SmallVectorImpl< const Value * > & UnderlyingObjs,
AAMDNodes & AATags,
bool & IsAllIdentified )
static

Collect the underlying objects and alias metadata for the single memory operand of MI.

Returns false when MI does not have exactly one memory operand with a known IR value.

Definition at line 111 of file WindowScheduler.cpp.

References llvm::all_of(), llvm::MachineMemOperand::getAAInfo(), llvm::MachineMemOperand::getOffset(), llvm::getUnderlyingObjects(), llvm::MachineMemOperand::getValue(), llvm::isIdentifiedObject(), and MI.

Referenced by hasLoopCarriedMemDep().

◆ hasLoopCarriedMemDep()

bool hasLoopCarriedMemDep ( const MachineInstr * SrcMI,
const MachineInstr * DstMI,
BatchAAResults & BAA,
const MachineBasicBlock * LoopBB,
const MachineRegisterInfo & MRI,
const TargetInstrInfo * TII )
static

Return true if there is a loop-carried order dependency from memory access SrcMI to DstMI in loop LoopBB.

Definition at line 130 of file WindowScheduler.cpp.

References llvm::MemoryLocation::getBeforeOrAfter(), getMemInfo(), llvm::MachineInstr::hasOneMemOperand(), llvm::is_contained(), llvm::BatchAAResults::isNoAlias(), llvm::mayOverlapInLaterIter(), MRI, llvm::none_of(), and TII.

Variable Documentation

◆ WindowIILimit

cl::opt< unsigned > WindowIILimit("window-ii-limit", cl::desc("The upper limit of II in the window algorithm."), cl::Hidden, cl::init(1000)) ( "window-ii-limit" ,
cl::desc("The upper limit of II in the window algorithm.") ,
cl::Hidden ,
cl::init(1000)  )
static