LLVM 20.0.0git
|
Insertion point on an edge. More...
#include "llvm/CodeGen/GlobalISel/RegBankSelect.h"
Public Member Functions | |
EdgeInsertPoint (MachineBasicBlock &Src, MachineBasicBlock &Dst, Pass &P) | |
bool | isSplit () const override |
Does this point involve splitting an edge or block? As soon as getPoint is called and thus, the point materialized, the point will not require splitting anymore, i.e., this will return false. | |
uint64_t | frequency (const Pass &P) const override |
Frequency of the insertion point. | |
bool | canMaterialize () const override |
Check whether this insertion point can be materialized. | |
Public Member Functions inherited from llvm::RegBankSelect::InsertPoint | |
virtual | ~InsertPoint ()=default |
MachineBasicBlock::iterator | getPoint () |
The first call to this method will cause the splitting to happen if need be, then sub sequent calls just return the iterator to that point. | |
MachineBasicBlock & | getInsertMBB () |
The first call to this method will cause the splitting to happen if need be, then sub sequent calls just return the basic block that contains the insertion point. | |
MachineBasicBlock::iterator | insert (MachineInstr &MI) |
Insert MI in the just before getPoint() | |
virtual bool | isSplit () const |
Does this point involve splitting an edge or block? As soon as getPoint is called and thus, the point materialized, the point will not require splitting anymore, i.e., this will return false. | |
virtual uint64_t | frequency (const Pass &P) const |
Frequency of the insertion point. | |
virtual bool | canMaterialize () const |
Check whether this insertion point can be materialized. | |
Additional Inherited Members | |
virtual void | materialize ()=0 |
Materialize the insertion point. | |
virtual MachineBasicBlock & | getInsertMBBImpl ()=0 |
Return the materialized insertion basic block. | |
virtual MachineBasicBlock::iterator | getPointImpl ()=0 |
Return the materialized insertion point. | |
Protected Attributes inherited from llvm::RegBankSelect::InsertPoint | |
bool | WasMaterialized = false |
Tell if the insert point has already been materialized. | |
Insertion point on an edge.
Definition at line 273 of file RegBankSelect.h.
|
inline |
Definition at line 301 of file RegBankSelect.h.
References P.
|
overridevirtual |
Check whether this insertion point can be materialized.
As soon as getPoint is called and thus, the point materialized calling this method does not make sense.
Reimplemented from llvm::RegBankSelect::InsertPoint.
Definition at line 970 of file RegBankSelect.cpp.
References assert().
Frequency of the insertion point.
P
is used to access the various analysis that will help to get that information, like MachineBlockFrequencyInfo. If P
does not contain enough to return the actual frequency, this returns 1.
Reimplemented from llvm::RegBankSelect::InsertPoint.
Definition at line 950 of file RegBankSelect.cpp.
References llvm::MachineBlockFrequencyInfo::getBlockFreq(), llvm::MachineBranchProbabilityInfo::getEdgeProbability(), llvm::BlockFrequency::getFrequency(), llvm::MBFIWrapper::getMBFI(), llvm::RegBankSelect::MBFI, llvm::RegBankSelect::MBPI, and P.
|
inlineoverridevirtual |
Does this point involve splitting an edge or block? As soon as getPoint is called and thus, the point materialized, the point will not require splitting anymore, i.e., this will return false.
Reimplemented from llvm::RegBankSelect::InsertPoint.
Definition at line 304 of file RegBankSelect.h.
References llvm::MachineBasicBlock::pred_size().