|
LLVM 24.0.0git
|
#include "llvm/CodeGen/WindowScheduler.h"#include "llvm/ADT/Statistic.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/MemoryLocation.h"#include "llvm/Analysis/ValueTracking.h"#include "llvm/CodeGen/LiveIntervals.h"#include "llvm/CodeGen/MachineLoopInfo.h"#include "llvm/CodeGen/MachinePipeliner.h"#include "llvm/CodeGen/ModuloSchedule.h"#include "llvm/CodeGen/ScheduleDAGMutation.h"#include "llvm/CodeGen/TargetPassConfig.h"#include "llvm/Support/CommandLine.h"#include "llvm/Support/Debug.h"#include "llvm/Support/TimeProfiler.h"#include "llvm/Target/TargetMachine.h"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)) |
| #define DEBUG_TYPE "pipeliner" |
Definition at line 56 of file WindowScheduler.cpp.
|
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().
|
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.