LLVM 20.0.0git
|
#include "Target/AMDGPU/AMDGPURegBankSelect.h"
Public Member Functions | |
AMDGPURegBankSelect (Mode RunningMode=Fast) | |
StringRef | getPassName () const override |
getPassName - Return a nice clean name for a pass. | |
void | getAnalysisUsage (AnalysisUsage &AU) const override |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. | |
bool | runOnMachineFunction (MachineFunction &MF) override |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
Public Member Functions inherited from llvm::RegBankSelect | |
RegBankSelect (char &PassID=ID, Mode RunningMode=Fast) | |
Create a RegBankSelect pass with the specified RunningMode . | |
StringRef | getPassName () const override |
getPassName - Return a nice clean name for a pass. | |
void | getAnalysisUsage (AnalysisUsage &AU) const override |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. | |
MachineFunctionProperties | getRequiredProperties () const override |
MachineFunctionProperties | getSetProperties () const override |
MachineFunctionProperties | getClearedProperties () const override |
bool | checkFunctionIsLegal (MachineFunction &MF) const |
Check that our input is fully legal: we require the function to have the Legalized property, so it should be. | |
bool | assignRegisterBanks (MachineFunction &MF) |
Walk through MF and assign a register bank to every virtual register that are still mapped to nothing. | |
bool | runOnMachineFunction (MachineFunction &MF) override |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
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) | |
Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const override |
createPrinterPass - Get a function printer pass. | |
virtual bool | runOnFunction (Function &F)=0 |
runOnFunction - Virtual method overriden by subclasses to do the per-function processing of the pass. | |
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. | |
AnalysisID | getPassID () const |
getPassID - Return the PassID number that corresponds to this pass. | |
virtual bool | doInitialization (Module &) |
doInitialization - Virtual method overridden by subclasses to do any necessary initialization before any pass is run. | |
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 Pass * | createPrinterPass (raw_ostream &OS, const std::string &Banner) const =0 |
createPrinterPass - Get a Pass appropriate to print the IR this pass operates on (Module, Function or MachineFunction). | |
virtual void | assignPassManager (PMStack &, PassManagerType) |
Each pass is responsible for assigning a pass manager to itself. | |
virtual void | preparePassManager (PMStack &) |
Check if available pass managers are suitable for this pass or not. | |
virtual PassManagerType | getPotentialPassManagerType () const |
Return what kind of Pass Manager can manage this pass. | |
void | setResolver (AnalysisResolver *AR) |
AnalysisResolver * | getResolver () const |
virtual void | getAnalysisUsage (AnalysisUsage &) const |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. | |
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 void * | getAdjustedAnalysisPointer (AnalysisID ID) |
getAdjustedAnalysisPointer - This method is used when a pass implements an analysis interface through multiple inheritance. | |
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) |
Static Public Attributes | |
static char | ID = 0 |
Static Public Attributes inherited from llvm::RegBankSelect | |
static char | ID = 0 |
Additional Inherited Members | |
Public Types inherited from llvm::RegBankSelect | |
enum | Mode { Fast , Greedy } |
List of the modes supported by the RegBankSelect pass. More... | |
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::RegBankSelect | |
bool | assignInstr (MachineInstr &MI) |
Assign the register bank of each operand of MI . | |
void | init (MachineFunction &MF) |
Initialize the field members using MF . | |
bool | assignmentMatch (Register Reg, const RegisterBankInfo::ValueMapping &ValMapping, bool &OnlyAssign) const |
Check if Reg is already assigned what is described by ValMapping . | |
bool | repairReg (MachineOperand &MO, const RegisterBankInfo::ValueMapping &ValMapping, RegBankSelect::RepairingPlacement &RepairPt, const iterator_range< SmallVectorImpl< Register >::const_iterator > &NewVRegs) |
Insert repairing code for Reg as specified by ValMapping . | |
uint64_t | getRepairCost (const MachineOperand &MO, const RegisterBankInfo::ValueMapping &ValMapping) const |
Return the cost of the instruction needed to map MO to ValMapping . | |
const RegisterBankInfo::InstructionMapping & | findBestMapping (MachineInstr &MI, RegisterBankInfo::InstructionMappings &PossibleMappings, SmallVectorImpl< RepairingPlacement > &RepairPts) |
Find the best mapping for MI from PossibleMappings . | |
MappingCost | computeMapping (MachineInstr &MI, const RegisterBankInfo::InstructionMapping &InstrMapping, SmallVectorImpl< RepairingPlacement > &RepairPts, const MappingCost *BestCost=nullptr) |
Compute the cost of mapping MI with InstrMapping and compute the repairing placement for such mapping in RepairPts . | |
void | tryAvoidingSplit (RegBankSelect::RepairingPlacement &RepairPt, const MachineOperand &MO, const RegisterBankInfo::ValueMapping &ValMapping) const |
When RepairPt involves splitting to repair MO for the given ValMapping , try to change the way we repair such that the splitting is not required anymore. | |
bool | applyMapping (MachineInstr &MI, const RegisterBankInfo::InstructionMapping &InstrMapping, SmallVectorImpl< RepairingPlacement > &RepairPts) |
Apply Mapping to MI . | |
Protected Member Functions inherited from llvm::MachineFunctionPass | |
MachineFunctionPass (char &ID) | |
virtual bool | runOnMachineFunction (MachineFunction &MF)=0 |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
void | getAnalysisUsage (AnalysisUsage &AU) const override |
getAnalysisUsage - Subclasses that override getAnalysisUsage must call this. | |
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. | |
Protected Attributes inherited from llvm::RegBankSelect | |
const RegisterBankInfo * | RBI = nullptr |
Interface to the target lowering info related to register banks. | |
MachineRegisterInfo * | MRI = nullptr |
MRI contains all the register class/bank information that this pass uses and updates. | |
const TargetRegisterInfo * | TRI = nullptr |
Information on the register classes for the current function. | |
MachineBlockFrequencyInfo * | MBFI = nullptr |
Get the frequency of blocks. | |
MachineBranchProbabilityInfo * | MBPI = nullptr |
Get the frequency of the edges. | |
std::unique_ptr< MachineOptimizationRemarkEmitter > | MORE |
Current optimization remark emitter. Used to report failures. | |
MachineIRBuilder | MIRBuilder |
Helper class used for every code morphing. | |
Mode | OptMode |
Optimization mode of the pass. | |
const TargetPassConfig * | TPC |
Current target configuration. Controls how the pass handles errors. | |
Definition at line 16 of file AMDGPURegBankSelect.h.
Definition at line 25 of file AMDGPURegBankSelect.cpp.
|
overridevirtual |
getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job.
If a pass specifies that it uses a particular analysis result to this function, it can then use the getAnalysis<AnalysisType>() function, below.
Reimplemented from llvm::RegBankSelect.
Definition at line 34 of file AMDGPURegBankSelect.cpp.
References llvm::AnalysisUsage::addRequired(), and llvm::RegBankSelect::getAnalysisUsage().
|
overridevirtual |
getPassName - Return a nice clean name for a pass.
This usually implemented in terms of the name that is registered by one of the Registration templates, but can be overloaded directly.
Reimplemented from llvm::RegBankSelect.
Definition at line 30 of file AMDGPURegBankSelect.cpp.
|
overridevirtual |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis.
Reimplemented from llvm::RegBankSelect.
Definition at line 48 of file AMDGPURegBankSelect.cpp.
References assert(), llvm::computeMachineUniformityInfo(), llvm::dbgs(), F, llvm::MachineFunctionProperties::FailedISel, llvm::MachineDominatorTree::getBase(), and LLVM_DEBUG.
|
static |
Definition at line 18 of file AMDGPURegBankSelect.h.