LLVM 20.0.0git
Public Member Functions | List of all members
llvm::RegBankSelect::EdgeInsertPoint Class Reference

Insertion point on an edge. More...

#include "llvm/CodeGen/GlobalISel/RegBankSelect.h"

Inheritance diagram for llvm::RegBankSelect::EdgeInsertPoint:
Inheritance graph
[legend]

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.
 
MachineBasicBlockgetInsertMBB ()
 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 MachineBasicBlockgetInsertMBBImpl ()=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.
 

Detailed Description

Insertion point on an edge.

Definition at line 273 of file RegBankSelect.h.

Constructor & Destructor Documentation

◆ EdgeInsertPoint()

llvm::RegBankSelect::EdgeInsertPoint::EdgeInsertPoint ( MachineBasicBlock Src,
MachineBasicBlock Dst,
Pass P 
)
inline

Definition at line 301 of file RegBankSelect.h.

References P.

Member Function Documentation

◆ canMaterialize()

bool RegBankSelect::EdgeInsertPoint::canMaterialize ( ) const
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()

uint64_t RegBankSelect::EdgeInsertPoint::frequency ( const Pass P) const
overridevirtual

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.

◆ isSplit()

bool llvm::RegBankSelect::EdgeInsertPoint::isSplit ( ) const
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().


The documentation for this class was generated from the following files: