class MachinePipeliner
Declaration
class MachinePipeliner : public MachineFunctionPass { /* full declaration omitted */ };
Description
The main class in the implementation of the target independent software pipeliner pass.
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:64
Inherits from: MachineFunctionPass
Member Variables
- public llvm::MachineFunction* MF = nullptr
- public llvm::MachineOptimizationRemarkEmitter* ORE = nullptr
- public const llvm::MachineLoopInfo* MLI = nullptr
- public const llvm::MachineDominatorTree* MDT = nullptr
- public const llvm::InstrItineraryData* InstrItins
- public const llvm::TargetInstrInfo* TII = nullptr
- public llvm::RegisterClassInfo RegClassInfo
- public bool disabledByPragma = false
- public unsigned int II_setByPragma = 0
- public llvm::MachinePipeliner::LoopInfo LI
- public static int NumTries
- public static char ID
Method Overview
- public MachinePipeliner()
- private bool canPipelineLoop(llvm::MachineLoop & L)
- public void getAnalysisUsage(llvm::AnalysisUsage & AU) const
- private void preprocessPhiNodes(llvm::MachineBasicBlock & B)
- public bool runOnMachineFunction(llvm::MachineFunction & MF)
- private bool scheduleLoop(llvm::MachineLoop & L)
- private void setPragmaPipelineOptions(llvm::MachineLoop & L)
- private bool swingModuloScheduler(llvm::MachineLoop & L)
Inherited from MachineFunctionPass:
- public doInitialization
- protected getAnalysisUsage
- protected getClearedProperties
- protected getRequiredProperties
- protected getSetProperties
- protected runOnMachineFunction
Inherited from FunctionPass:
- public assignPassManager
- public createPrinterPass
- public getPotentialPassManagerType
- public runOnFunction
- protected skipFunction
Inherited from Pass:
- public assignPassManager
- public createPass
- public createPrinterPass
- public doFinalization
- public doInitialization
- public dump
- public dumpPassStructure
- public getAdjustedAnalysisPointer
- public getAnalysis
- public getAnalysis
- public getAnalysisID
- public getAnalysisID
- public getAnalysisIfAvailable
- public getAnalysisUsage
- public getAsImmutablePass
- public getAsPMDataManager
- public getPassID
- public getPassKind
- public getPassName
- public getPotentialPassManagerType
- public getResolver
- public lookupPassInfo
- public lookupPassInfo
- public mustPreserveAnalysisID
- public preparePassManager
- public print
- public releaseMemory
- public setResolver
- public verifyAnalysis
Methods
¶MachinePipeliner()
MachinePipeliner()
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:94
¶bool canPipelineLoop(llvm::MachineLoop& L)
bool canPipelineLoop(llvm::MachineLoop& L)
Description
Return true if the loop can be software pipelined. The algorithm is restricted to loops with a single basic block. Make sure that the branch in the loop can be analyzed.
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:104
Parameters
¶void getAnalysisUsage(
llvm::AnalysisUsage& AU) const
void getAnalysisUsage(
llvm::AnalysisUsage& AU) const
Description
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this. For MachineFunctionPasses, calling AU.preservesCFG() indicates that the pass does not modify the MachineBasicBlock CFG.
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:100
Parameters
¶void preprocessPhiNodes(
llvm::MachineBasicBlock& B)
void preprocessPhiNodes(
llvm::MachineBasicBlock& B)
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:103
Parameters
¶bool runOnMachineFunction(
llvm::MachineFunction& MF)
bool runOnMachineFunction(
llvm::MachineFunction& MF)
Description
The "main" function for implementing Swing Modulo Scheduling.
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:98
Parameters
¶bool scheduleLoop(llvm::MachineLoop& L)
bool scheduleLoop(llvm::MachineLoop& L)
Description
Attempt to perform the SMS algorithm on the specified loop. This function is the main entry point for the algorithm. The function identifies candidate loops, calculates the minimum initiation interval, and attempts to schedule the loop.
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:105
Parameters
¶void setPragmaPipelineOptions(
llvm::MachineLoop& L)
void setPragmaPipelineOptions(
llvm::MachineLoop& L)
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:107
Parameters
¶bool swingModuloScheduler(llvm::MachineLoop& L)
bool swingModuloScheduler(llvm::MachineLoop& L)
Description
The SMS algorithm consists of the following main steps: 1. Computation and analysis of the dependence graph. 2. Ordering of the nodes (instructions). 3. Attempt to Schedule the loop.
Declared at: llvm/include/llvm/CodeGen/MachinePipeliner.h:106