class RegBankSelect::EdgeInsertPoint

Declaration

class RegBankSelect::EdgeInsertPoint : public InsertPoint { /* full declaration omitted */ };

Description

Insertion point on an edge.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:273

Inherits from: RegBankSelect::InsertPoint

Member Variables

private llvm::MachineBasicBlock& Src
Source of the edge.
private llvm::MachineBasicBlock* DstOrSplit
Destination of the edge. After the materialization is done, this hold the basic block that resulted from the splitting.
private llvm::Pass& P
P is used to update the analysis passes as applicable.

Inherited from RegBankSelect::InsertPoint:

protected WasMaterialized = false

Method Overview

Inherited from RegBankSelect::InsertPoint:

Methods

EdgeInsertPoint(llvm::MachineBasicBlock& Src,
                llvm::MachineBasicBlock& Dst,
                llvm::Pass& P)

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:301

Parameters

llvm::MachineBasicBlock& Src
llvm::MachineBasicBlock& Dst
llvm::Pass& P

bool canMaterialize() const

Description

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.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:309

uint64_t frequency(const llvm::Pass& P) const

Description

Frequency of the insertion point.\p P is used to access the various analysis that will help to get that information, like MachineBlockFrequencyInfo. If \p P does not contain enough enough to return the actual frequency, this returns 1.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:308

Parameters

const llvm::Pass& P

llvm::MachineBasicBlock& getInsertMBBImpl()

Description

Return the materialized insertion basic block. Code will be inserted into that basic block.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:298

MachineBasicBlock::iterator getPointImpl()

Description

Return the materialized insertion point. Code will be inserted before that point.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:288

bool isSplit() const

Description

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.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:304

void materialize()

Description

Materialize the insertion point. If isSplit() is true, this involves actually splitting the block or edge.

Declared at: llvm/include/llvm/CodeGen/GlobalISel/RegBankSelect.h:286