|
LLVM 22.0.0git
|
The main class in the implementation of the target independent software pipeliner pass. More...
#include "llvm/CodeGen/MachinePipeliner.h"
Classes | |
| struct | LoopInfo |
| Cache the target analysis information about the loop. More... | |
Public Member Functions | |
| MachinePipeliner () | |
| bool | runOnMachineFunction (MachineFunction &MF) override |
| The "main" function for implementing Swing Modulo Scheduling. | |
| void | getAnalysisUsage (AnalysisUsage &AU) const override |
| getAnalysisUsage - Subclasses that override getAnalysisUsage must call this. | |
| Public Member Functions inherited from llvm::MachineFunctionPass | |
| bool | doInitialization (Module &) override |
| doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. | |
| Public Member Functions inherited from llvm::FunctionPass | |
| FunctionPass (char &pid) | |
| void | assignPassManager (PMStack &PMS, PassManagerType T) override |
| Find appropriate Function Pass Manager or Call Graph Pass Manager in the PM Stack and add self into that manager. | |
| PassManagerType | getPotentialPassManagerType () const override |
| Return what kind of Pass Manager can manage this pass. | |
| Public Member Functions inherited from llvm::Pass | |
| Pass (PassKind K, char &pid) | |
| Pass (const Pass &)=delete | |
| Pass & | operator= (const Pass &)=delete |
| virtual | ~Pass () |
| PassKind | getPassKind () const |
| virtual StringRef | getPassName () const |
| getPassName - Return a nice clean name for a pass. | |
| StringRef | getPassArgument () const |
| Return a nice clean name for a pass corresponding to that used to enable the pass in opt. | |
| AnalysisID | getPassID () const |
| getPassID - Return the PassID number that corresponds to this pass. | |
| virtual bool | doFinalization (Module &) |
| doFinalization - Virtual method overriden by subclasses to do any necessary clean up after all passes have run. | |
| virtual void | print (raw_ostream &OS, const Module *M) const |
| print - Print out the internal state of the pass. | |
| void | dump () const |
| virtual void | preparePassManager (PMStack &) |
| Check if available pass managers are suitable for this pass or not. | |
| void | setResolver (AnalysisResolver *AR) |
| AnalysisResolver * | getResolver () const |
| virtual void | releaseMemory () |
| releaseMemory() - This member can be implemented by a pass if it wants to be able to release its memory when it is no longer needed. | |
| virtual ImmutablePass * | getAsImmutablePass () |
| virtual PMDataManager * | getAsPMDataManager () |
| virtual void | verifyAnalysis () const |
| verifyAnalysis() - This member can be implemented by a analysis pass to check state of analysis information. | |
| virtual void | dumpPassStructure (unsigned Offset=0) |
| template<typename AnalysisType> | |
| AnalysisType * | getAnalysisIfAvailable () const |
| getAnalysisIfAvailable<AnalysisType>() - Subclasses use this function to get analysis information that might be around, for example to update it. | |
| bool | mustPreserveAnalysisID (char &AID) const |
| mustPreserveAnalysisID - This method serves the same function as getAnalysisIfAvailable, but works if you just have an AnalysisID. | |
| template<typename AnalysisType> | |
| AnalysisType & | getAnalysis () const |
| getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
| template<typename AnalysisType> | |
| AnalysisType & | getAnalysis (Function &F, bool *Changed=nullptr) |
| getAnalysis<AnalysisType>() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
| template<typename AnalysisType> | |
| AnalysisType & | getAnalysisID (AnalysisID PI) const |
| template<typename AnalysisType> | |
| AnalysisType & | getAnalysisID (AnalysisID PI, Function &F, bool *Changed=nullptr) |
Public Attributes | |
| MachineFunction * | MF = nullptr |
| MachineOptimizationRemarkEmitter * | ORE = nullptr |
| const MachineLoopInfo * | MLI = nullptr |
| const MachineDominatorTree * | MDT = nullptr |
| const InstrItineraryData * | InstrItins = nullptr |
| const TargetInstrInfo * | TII = nullptr |
| RegisterClassInfo | RegClassInfo |
| bool | disabledByPragma = false |
| unsigned | II_setByPragma = 0 |
| LoopInfo | LI |
Static Public Attributes | |
| static int | NumTries = 0 |
| static char | ID = 0 |
Additional Inherited Members | |
| Static Public Member Functions inherited from llvm::Pass | |
| static const PassInfo * | lookupPassInfo (const void *TI) |
| static const PassInfo * | lookupPassInfo (StringRef Arg) |
| static Pass * | createPass (AnalysisID ID) |
| Protected Member Functions inherited from llvm::MachineFunctionPass | |
| MachineFunctionPass (char &ID) | |
| virtual MachineFunctionProperties | getRequiredProperties () const |
| virtual MachineFunctionProperties | getSetProperties () const |
| virtual MachineFunctionProperties | getClearedProperties () const |
| Protected Member Functions inherited from llvm::FunctionPass | |
| bool | skipFunction (const Function &F) const |
| Optional passes call this function to check whether the pass should be skipped. | |
The main class in the implementation of the target independent software pipeliner pass.
Definition at line 69 of file MachinePipeliner.h.
|
inline |
Definition at line 99 of file MachinePipeliner.h.
References llvm::PassRegistry::getPassRegistry(), ID, llvm::initializeMachinePipelinerPass(), and llvm::MachineFunctionPass::MachineFunctionPass().
|
overridevirtual |
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this.
For MachineFunctionPasses, calling AU.preservesCFG() indicates that the pass does not modify the MachineBasicBlock CFG.
Reimplemented from llvm::MachineFunctionPass.
Definition at line 638 of file MachinePipeliner.cpp.
References llvm::AnalysisUsage::addPreserved(), llvm::AnalysisUsage::addRequired(), and llvm::MachineFunctionPass::getAnalysisUsage().
|
overridevirtual |
The "main" function for implementing Swing Modulo Scheduling.
Implements llvm::MachineFunctionPass.
Definition at line 363 of file MachinePipeliner.cpp.
References llvm::TargetSubtargetInfo::enableMachinePipeliner(), EnableSWP, EnableSWPOptSize, llvm::Pass::getAnalysis(), llvm::Function::getAttributes(), llvm::MachineFunction::getFunction(), llvm::TargetSubtargetInfo::getInstrItineraryData(), llvm::MachineFunction::getSubtarget(), llvm::InstrItineraryData::isEmpty(), MDT, MF, MLI, ORE, RegClassInfo, llvm::FunctionPass::skipFunction(), TII, and llvm::TargetSubtargetInfo::useDFAforSMS().
| bool llvm::MachinePipeliner::disabledByPragma = false |
Definition at line 78 of file MachinePipeliner.h.
|
static |
Definition at line 97 of file MachinePipeliner.h.
Referenced by MachinePipeliner().
| unsigned llvm::MachinePipeliner::II_setByPragma = 0 |
Definition at line 79 of file MachinePipeliner.h.
| const InstrItineraryData* llvm::MachinePipeliner::InstrItins = nullptr |
Definition at line 75 of file MachinePipeliner.h.
| LoopInfo llvm::MachinePipeliner::LI |
Definition at line 95 of file MachinePipeliner.h.
| const MachineDominatorTree* llvm::MachinePipeliner::MDT = nullptr |
Definition at line 74 of file MachinePipeliner.h.
Referenced by runOnMachineFunction().
| MachineFunction* llvm::MachinePipeliner::MF = nullptr |
Definition at line 71 of file MachinePipeliner.h.
Referenced by runOnMachineFunction().
| const MachineLoopInfo* llvm::MachinePipeliner::MLI = nullptr |
Definition at line 73 of file MachinePipeliner.h.
Referenced by runOnMachineFunction().
|
static |
Definition at line 82 of file MachinePipeliner.h.
| MachineOptimizationRemarkEmitter* llvm::MachinePipeliner::ORE = nullptr |
Definition at line 72 of file MachinePipeliner.h.
Referenced by runOnMachineFunction().
| RegisterClassInfo llvm::MachinePipeliner::RegClassInfo |
Definition at line 77 of file MachinePipeliner.h.
Referenced by runOnMachineFunction().
| const TargetInstrInfo* llvm::MachinePipeliner::TII = nullptr |
Definition at line 76 of file MachinePipeliner.h.
Referenced by runOnMachineFunction().