|
LLVM 23.0.0git
|
#include "Target/Hexagon/HexagonLiveVariables.h"
Public Types | |
| typedef MachineBasicBlock::const_instr_iterator | MICInstIterType |
Public Member Functions | |
| HexagonLiveVariables () | |
| bool | runOnMachineFunction (MachineFunction &MF) override |
| runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
| void | getAnalysisUsage (AnalysisUsage &AU) const override |
| getAnalysisUsage - This function should be overriden by passes that need analysis information to do their job. | |
| StringRef | getPassName () const override |
| getPassName - Return a nice clean name for a pass. | |
| void | recalculate (MachineFunction &MF) |
| recalculate - recalculates the liveness from scratch. | |
| bool | updateLocalLiveness (MachineFunction &Fn) |
| updateLocalLiveness - update only kill flags of operands. | |
| bool | updateLocalLiveness (MachineBasicBlock *MBB, bool updateBundle) |
| updateLocalLiveness - update only kill flags of operands in MBB. | |
| bool | incrementalUpdate (MICInstIterType MIDelta, MachineBasicBlock *From, MachineBasicBlock *To) |
incrementalUpdate - update the liveness when MIDelta is moved from From to To. | |
| void | addNewMI (MachineInstr *MI, MachineBasicBlock *MBB) |
| void | addNewMBB (MachineBasicBlock *MBB) |
| addNewMBB - inform the LiveVariable Analysis that new MBB has been added. | |
| void | constructUseDef (MachineBasicBlock *MBB) |
Constructs use-defs of MBB by analyzing each MachineOperand. | |
| bool | isLiveOut (const MachineBasicBlock *MBB, unsigned Reg) const |
| const BitVector & | getLiveOuts (const MachineBasicBlock *MBB) const |
| bool | isUsedWithin (MICInstIterType MIBegin, MICInstIterType MIEnd, unsigned Reg, MICInstIterType &Use, SmallPtrSet< MachineInstr *, 2 > *ExceptionsList=nullptr) const |
| bool | isDefinedWithin (MICInstIterType MIBegin, MICInstIterType MIEnd, unsigned Reg, MICInstIterType &Def) const |
| bool | isDefLiveIn (const MachineInstr *MI, const MachineBasicBlock *MBB) const |
| MBBUseDef_t & | getMBBUseDefs () |
| MIUseDef_t & | getMIUseDefs () |
| unsigned | getDistanceBetween (const MachineBasicBlock *From, const MachineBasicBlock *To, unsigned BufferPerMBB=HEXAGON_INSTR_SIZE) const |
Returns the linear distance (as per layout) of MI from the Function. | |
| void | regenerateDistanceMap (const MachineFunction &Fn) |
| 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 |
| 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 | |
| bool | HLVComplete |
Static Public Attributes | |
| 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) | |
| 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. | |
Definition at line 50 of file HexagonLiveVariables.h.
Definition at line 52 of file HexagonLiveVariables.h.
| HexagonLiveVariables::HexagonLiveVariables | ( | ) |
Definition at line 160 of file HexagonLiveVariables.cpp.
References llvm::PassRegistry::getPassRegistry(), HLVComplete, ID, llvm::initializeHexagonLiveVariablesPass(), and llvm::MachineFunctionPass::MachineFunctionPass().
| void HexagonLiveVariables::addNewMBB | ( | MachineBasicBlock * | MBB | ) |
addNewMBB - inform the LiveVariable Analysis that new MBB has been added.
update the liveness of this new MBB.
Definition at line 203 of file HexagonLiveVariables.cpp.
Referenced by INITIALIZE_PASS().
| void HexagonLiveVariables::addNewMI | ( | MachineInstr * | MI, |
| MachineBasicBlock * | MBB ) |
Definition at line 208 of file HexagonLiveVariables.cpp.
Referenced by INITIALIZE_PASS().
| void HexagonLiveVariables::constructUseDef | ( | MachineBasicBlock * | MBB | ) |
Constructs use-defs of MBB by analyzing each MachineOperand.
Collects relevant information so that global liveness can be updated.
Definition at line 212 of file HexagonLiveVariables.cpp.
References MBB.
Referenced by INITIALIZE_PASS().
|
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::Pass.
Definition at line 166 of file HexagonLiveVariables.cpp.
References llvm::AnalysisUsage::addPreserved(), llvm::AnalysisUsage::addRequired(), llvm::MachineFunctionPass::getAnalysisUsage(), and llvm::AnalysisUsage::setPreservesCFG().
| unsigned HexagonLiveVariables::getDistanceBetween | ( | const MachineBasicBlock * | From, |
| const MachineBasicBlock * | To, | ||
| unsigned | BufferPerMBB = HEXAGON_INSTR_SIZE ) const |
Returns the linear distance (as per layout) of MI from the Function.
BufferPerMBB is to allow some room for .falign (if added later).
Definition at line 326 of file HexagonLiveVariables.cpp.
References assert(), llvm::MachineFunction::begin(), llvm::MachineFunction::end(), llvm::MachineBasicBlock::getParent(), MBB, and MBBI.
| const BitVector & HexagonLiveVariables::getLiveOuts | ( | const MachineBasicBlock * | MBB | ) | const |
Definition at line 236 of file HexagonLiveVariables.cpp.
References assert(), HLVComplete, llvm_unreachable, and MBB.
| MBBUseDef_t & HexagonLiveVariables::getMBBUseDefs | ( | ) |
Definition at line 322 of file HexagonLiveVariables.cpp.
| MIUseDef_t & HexagonLiveVariables::getMIUseDefs | ( | ) |
Definition at line 324 of file HexagonLiveVariables.cpp.
|
inlineoverridevirtual |
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::Pass.
Definition at line 60 of file HexagonLiveVariables.h.
| bool HexagonLiveVariables::incrementalUpdate | ( | MICInstIterType | MIDelta, |
| MachineBasicBlock * | From, | ||
| MachineBasicBlock * | To ) |
incrementalUpdate - update the liveness when MIDelta is moved from From to To.
To do not use Defs of MIDelta. Definition at line 195 of file HexagonLiveVariables.cpp.
References assert().
Referenced by INITIALIZE_PASS().
| bool HexagonLiveVariables::isDefinedWithin | ( | MICInstIterType | MIBegin, |
| MICInstIterType | MIEnd, | ||
| unsigned | Reg, | ||
| MICInstIterType & | Def ) const |
Definition at line 279 of file HexagonLiveVariables.cpp.
References assert(), HLVComplete, and llvm::MCRegAliasIterator::isValid().
| bool HexagonLiveVariables::isDefLiveIn | ( | const MachineInstr * | MI, |
| const MachineBasicBlock * | MBB ) const |
Definition at line 303 of file HexagonLiveVariables.cpp.
References llvm::BitVector::anyCommon(), assert(), HLVComplete, llvm::MCRegAliasIterator::isValid(), MBB, MI, and llvm::BitVector::set().
| bool HexagonLiveVariables::isLiveOut | ( | const MachineBasicBlock * | MBB, |
| unsigned | Reg ) const |
Definition at line 224 of file HexagonLiveVariables.cpp.
References assert(), HLVComplete, llvm_unreachable, and MBB.
| bool HexagonLiveVariables::isUsedWithin | ( | MICInstIterType | MIBegin, |
| MICInstIterType | MIEnd, | ||
| unsigned | Reg, | ||
| MICInstIterType & | Use, | ||
| SmallPtrSet< MachineInstr *, 2 > * | ExceptionsList = nullptr ) const |
Definition at line 249 of file HexagonLiveVariables.cpp.
References assert(), llvm::SmallPtrSetImpl< PtrType >::contains(), HLVComplete, and llvm::MCRegAliasIterator::isValid().
| void HexagonLiveVariables::recalculate | ( | MachineFunction & | MF | ) |
recalculate - recalculates the liveness from scratch.
It is like calling the runOnMachineFunction.
Definition at line 176 of file HexagonLiveVariables.cpp.
References llvm::Pass::getAnalysis(), and HLVComplete.
| void HexagonLiveVariables::regenerateDistanceMap | ( | const MachineFunction & | Fn | ) |
Definition at line 363 of file HexagonLiveVariables.cpp.
|
overridevirtual |
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis.
Implements llvm::MachineFunctionPass.
Definition at line 216 of file HexagonLiveVariables.cpp.
References llvm::Pass::getAnalysis(), and HLVComplete.
Referenced by INITIALIZE_PASS().
| bool HexagonLiveVariables::updateLocalLiveness | ( | MachineBasicBlock * | MBB, |
| bool | updateBundle ) |
updateLocalLiveness - update only kill flags of operands in MBB.
Assumes that global liveness is correct. This is useful when a local transformation modifies MIs, which only changes the local liveness.
Definition at line 189 of file HexagonLiveVariables.cpp.
References MBB.
| bool HexagonLiveVariables::updateLocalLiveness | ( | MachineFunction & | Fn | ) |
updateLocalLiveness - update only kill flags of operands.
Assumes that global liveness is correct.
Definition at line 185 of file HexagonLiveVariables.cpp.
Referenced by INITIALIZE_PASS().
| bool llvm::HexagonLiveVariables::HLVComplete |
Definition at line 55 of file HexagonLiveVariables.h.
Referenced by getLiveOuts(), HexagonLiveVariables(), isDefinedWithin(), isDefLiveIn(), isLiveOut(), isUsedWithin(), recalculate(), and runOnMachineFunction().
|
static |
Definition at line 54 of file HexagonLiveVariables.h.
Referenced by HexagonLiveVariables().