class RegBankSelect::RepairingPlacement

Declaration

class RegBankSelect::RepairingPlacement { /* full declaration omitted */ };

Description

Struct used to represent the placement of a repairing point for a given operand.

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

Member Variables

private llvm::RegBankSelect::RepairingPlacement:: RepairingKind Kind
Kind of repairing.
private unsigned int OpIdx
Index of the operand that will be repaired.
private bool CanMaterialize
Are all the insert points materializeable?
private bool HasSplit = false
Is there any of the insert points needing splitting?
private llvm::RegBankSelect::RepairingPlacement:: InsertionPoints InsertPoints
Insertion point for the repair code. The repairing code needs to happen just before these points.
private llvm::Pass& P
Some insertion points may need to update the liveness and such.

Method Overview

  • public RepairingPlacement(llvm::MachineInstr & MI, unsigned int OpIdx, const llvm::TargetRegisterInfo & TRI, llvm::Pass & P, llvm::RegBankSelect::RepairingPlacement::RepairingKind Kind = RepairingKind::Insert)
  • public void addInsertPoint(llvm::MachineBasicBlock & MBB, bool Beginning)
  • public void addInsertPoint(llvm::MachineInstr & MI, bool Before)
  • public void addInsertPoint(llvm::MachineBasicBlock & Src, llvm::MachineBasicBlock & Dst)
  • public void addInsertPoint(llvm::RegBankSelect::InsertPoint & Point)
  • public llvm::RegBankSelect::RepairingPlacement::insertpt_iterator begin()
  • public llvm::RegBankSelect::RepairingPlacement::const_insertpt_iterator begin() const
  • public bool canMaterialize() const
  • public llvm::RegBankSelect::RepairingPlacement::insertpt_iterator end()
  • public llvm::RegBankSelect::RepairingPlacement::const_insertpt_iterator end() const
  • public llvm::RegBankSelect::RepairingPlacement::RepairingKind getKind() const
  • public unsigned int getNumInsertPoints() const
  • public unsigned int getOpIdx() const
  • public bool hasSplit()
  • public void switchTo(llvm::RegBankSelect::RepairingPlacement::RepairingKind NewKind)

Methods

RepairingPlacement(
    llvm::MachineInstr& MI,
    unsigned int OpIdx,
    const llvm::TargetRegisterInfo& TRI,
    llvm::Pass& P,
    llvm::RegBankSelect::RepairingPlacement::
        RepairingKind Kind =
            RepairingKind::Insert)

Description

Create a repairing placement for the \p OpIdx-th operand of\p MI. \p TRI is used to make some checks on the register aliases if the machine operand is a physical register. \p P is used to to update liveness information and such when materializing the points.

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

Parameters

llvm::MachineInstr& MI
unsigned int OpIdx
const llvm::TargetRegisterInfo& TRI
llvm::Pass& P
llvm::RegBankSelect::RepairingPlacement:: RepairingKind Kind = RepairingKind::Insert

void addInsertPoint(llvm::MachineBasicBlock& MBB,
                    bool Beginning)

Description

@ { Add a MBBInsertionPoint to the list of InsertPoints.

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

Parameters

llvm::MachineBasicBlock& MBB
bool Beginning

void addInsertPoint(llvm::MachineInstr& MI,
                    bool Before)

Description

Add a InstrInsertionPoint to the list of InsertPoints.

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

Parameters

llvm::MachineInstr& MI
bool Before

void addInsertPoint(llvm::MachineBasicBlock& Src,
                    llvm::MachineBasicBlock& Dst)

Description

Add an EdgeInsertionPoint (\p Src, \p Dst) to the list of InsertPoints.

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

Parameters

llvm::MachineBasicBlock& Src
llvm::MachineBasicBlock& Dst

void addInsertPoint(
    llvm::RegBankSelect::InsertPoint& Point)

Description

Add an InsertPoint to the list of insert points. This method takes the ownership of &\p Point.

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

Parameters

llvm::RegBankSelect::InsertPoint& Point

llvm::RegBankSelect::RepairingPlacement::
    insertpt_iterator
    begin()

Description

@ {

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

llvm::RegBankSelect::RepairingPlacement::
    const_insertpt_iterator
    begin() const

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

bool canMaterialize() const

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

llvm::RegBankSelect::RepairingPlacement::
    insertpt_iterator
    end()

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

llvm::RegBankSelect::RepairingPlacement::
    const_insertpt_iterator
    end() const

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

llvm::RegBankSelect::RepairingPlacement::
    RepairingKind
    getKind() const

Description

@ {

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

unsigned int getNumInsertPoints() const

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

unsigned int getOpIdx() const

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

bool hasSplit()

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

void switchTo(
    llvm::RegBankSelect::RepairingPlacement::
        RepairingKind NewKind)

Description

Change the type of this repairing placement to \p NewKind. It is not possible to switch a repairing placement to the RepairingKind::Insert. There is no fundamental problem with that, but no uses as well, so do not support it for now.

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

Parameters

llvm::RegBankSelect::RepairingPlacement:: RepairingKind NewKind