LLVM
8.0.1
|
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. More... | |
uint64_t | frequency (const Pass &P) const override |
Frequency of the insertion point. More... | |
bool | canMaterialize () const override |
Check whether this insertion point can be materialized. More... | |
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. More... | |
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. More... | |
MachineBasicBlock::iterator | insert (MachineInstr &MI) |
Insert MI in the just before ::getPoint() More... | |
Additional Inherited Members | |
Protected Attributes inherited from llvm::RegBankSelect::InsertPoint | |
bool | WasMaterialized = false |
Tell if the insert point has already been materialized. More... | |
Insertion point on an edge.
Definition at line 273 of file RegBankSelect.h.
|
inline |
Definition at line 301 of file RegBankSelect.h.
|
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 862 of file RegBankSelect.cpp.
References assert(), llvm::dbgs(), dump(), llvm::BlockFrequency::getFrequency(), LLVM_DUMP_METHOD, LLVM_LIKELY, llvm::operator<(), llvm::operator==(), llvm::Pass::print(), print(), and UINT64_MAX.
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 enough to return the actual frequency, this returns 1.
Reimplemented from llvm::RegBankSelect::InsertPoint.
Definition at line 845 of file RegBankSelect.cpp.
References llvm::Pass::getAnalysisIfAvailable(), llvm::MachineBlockFrequencyInfo::getBlockFreq(), llvm::MachineBranchProbabilityInfo::getEdgeProbability(), llvm::BlockFrequency::getFrequency(), and llvm::RegBankSelect::InsertPoint::WasMaterialized.
|
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::RegBankSelect::InsertPoint::canMaterialize(), llvm::RegBankSelect::InsertPoint::frequency(), llvm::MachineBasicBlock::pred_size(), and llvm::MachineBasicBlock::succ_size().