LLVM: llvm::InstructionSelect Class Reference (original) (raw)
This pass is responsible for selecting generic machine instructions to target-specific instructions. More...
#include "[llvm/CodeGen/GlobalISel/InstructionSelect.h](InstructionSelect%5F8h%5Fsource.html)"
| Public Member Functions | |
|---|---|
| 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 |
| InstructionSelect (CodeGenOptLevel OL=CodeGenOptLevel::Default, char &PassID=ID) | |
| bool | runOnMachineFunction (MachineFunction &MF) override |
| runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis. | |
| bool | selectMachineFunction (MachineFunction &MF) |
| void | setInstructionSelector (InstructionSelector *NewISel) |
| 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 | |
| AnalysisType * | getAnalysisIfAvailable () const |
| getAnalysisIfAvailable() - 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 | |
| AnalysisType & | getAnalysis () const |
| getAnalysis() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
| template | |
| AnalysisType & | getAnalysis (Function &F, bool *Changed=nullptr) |
| getAnalysis() - This function is used by subclasses to get to the analysis information that they claim to use by overriding the getAnalysisUsage function. | |
| template | |
| AnalysisType & | getAnalysisID (AnalysisID PI) const |
| template | |
| AnalysisType & | getAnalysisID (AnalysisID PI, Function &F, bool *Changed=nullptr) |
| Static Public Attributes | |
|---|---|
| static char | ID = 0 |
| Protected Member Functions | |
|---|---|
| bool | selectInstr (MachineInstr &MI) |
| 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 | 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 | |
|---|---|
| InstructionSelector * | ISel = nullptr |
| GISelValueTracking * | VT = nullptr |
| BlockFrequencyInfo * | BFI = nullptr |
| ProfileSummaryInfo * | PSI = nullptr |
| CodeGenOptLevel | OptLevel = CodeGenOptLevel::None |
This pass is responsible for selecting generic machine instructions to target-specific instructions.
It relies on the InstructionSelector provided by the target. Selection is done by examining blocks in post-order, and instructions in reverse order.
Postcondition
for all inst in MF: not isPreISelGenericOpcode(inst.opcode)
Definition at line 36 of file InstructionSelect.h.
◆ getAnalysisUsage()
| void InstructionSelect::getAnalysisUsage ( AnalysisUsage & ) const | overridevirtual |
|---|
◆ getPassName()
| StringRef llvm::InstructionSelect::getPassName ( ) const | 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 39 of file InstructionSelect.h.
◆ getRequiredProperties()
◆ getSetProperties()
◆ runOnMachineFunction()
runOnMachineFunction - This method must be overloaded to perform the desired machine code transformation or analysis.
Implements llvm::MachineFunctionPass.
Definition at line 134 of file InstructionSelect.cpp.
References BFI, llvm::Pass::getAnalysis(), llvm::MachineFunction::getFunction(), llvm::TargetSubtargetInfo::getInstructionSelector(), llvm::TargetMachine::getOptLevel(), llvm::MachineFunction::getProperties(), llvm::MachineFunction::getSubtarget(), llvm::MachineFunction::getTarget(), llvm::Function::hasOptNone(), ISel, llvm::make_scope_exit(), llvm::None, OptLevel, PSI, selectMachineFunction(), and VT.
◆ selectInstr()
◆ selectMachineFunction()
Definition at line 157 of file InstructionSelect.cpp.
References llvm::GISelObserverWrapper::addObserver(), assert(), BFI, llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::contains(), CoveragePrefix, llvm::CodeGenCoverage::covered(), llvm::dbgs(), llvm::DisableGISelLegalityCheck, llvm::CodeGenCoverage::emit(), llvm::TargetLoweringBase::finalizeLowering(), llvm::MachineFunction::getFrameInfo(), llvm::MachineFunction::getFunction(), llvm::MachineFunction::getName(), llvm::MachineFunction::getProperties(), llvm::MachineFunction::getRegInfo(), llvm::TargetSubtargetInfo::getRegisterInfo(), llvm::Function::getSubprogram(), llvm::MachineFunction::getSubtarget(), llvm::TargetSubtargetInfo::getTargetLowering(), llvm::MachineFrameInfo::hasCalls(), llvm::MachineFunction::hasInlineAsm(), I, llvm::Register::index2VirtReg(), llvm::detail::DenseSetImpl< ValueT, MapTy, ValueInfoT >::insert(), ISel, llvm::details::FixedOrScalableQuantity< TypeSize, uint64_t >::isKnownGT(), llvm::Register::isVirtual(), LLVM_DEBUG, llvm::machineFunctionIsIllegal(), MBB, MI, llvm::InstructionSelect::MIIteratorMaintainer::MII, MORE, MRI, llvm::post_order(), PSI, llvm::InstructionSelect::MIIteratorMaintainer::reportFullyCreatedInstrs(), llvm::reportGISelFailure(), selectInstr(), llvm::MachineFrameInfo::setHasCalls(), llvm::MachineFunction::setHasInlineAsm(), llvm::DebugCounter::shouldExecute(), llvm::MachineFunction::size(), TRI, and VT.
Referenced by runOnMachineFunction().
◆ setInstructionSelector()
◆ BFI
◆ ID
| char InstructionSelect::ID = 0 | static |
|---|
◆ ISel
◆ OptLevel
◆ PSI
◆ VT
The documentation for this class was generated from the following files:
- include/llvm/CodeGen/GlobalISel/InstructionSelect.h
- lib/CodeGen/GlobalISel/InstructionSelect.cpp