struct Candidate

Declaration

struct Candidate { /* full declaration omitted */ };

Description

An individual sequence of instructions to be replaced with a call to an outlined function.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:37

Member Variables

private unsigned int StartIdx = 0
The start index of this \p Candidate in the instruction list.
private unsigned int Len = 0
The number of instructions in this \p Candidate.
private MachineBasicBlock::iterator FirstInst
private MachineBasicBlock::iterator LastInst
private llvm::MachineBasicBlock* MBB = nullptr
private unsigned int CallOverhead = 0
Cost of calling an outlined function from this point as defined by the target.
private llvm::LiveRegUnits FromEndOfBlockToStartOfSeq
Optional. Can be used to fine-tune the cost model, or fine-tune legality decisions.
private llvm::LiveRegUnits InSeq
Optional. Can be used to fine-tune the cost model, or fine-tune legality decisions.
private bool FromEndOfBlockToStartOfSeqWasSet = false
True if FromEndOfBlockToStartOfSeq has been initialized.
private bool InSeqWasSet = false
True if InSeq has been initialized.
public unsigned int FunctionIdx = 0
The index of this \p Candidate's \p OutlinedFunction in the list of\p OutlinedFunctions.
public unsigned int CallConstructionID = 0
Identifier denoting the instructions to emit to call an outlined function from this point. Defined by the target.
public unsigned int Flags = 0
Target-specific flags for this Candidate's MBB.
public unsigned int Benefit = 0
This is a fixed value which is not updated during the candidate pruning process. It is only used for deciding which candidate to keep if two candidates overlap. The true benefit is stored in the OutlinedFunction for some given candidate.

Method Overview

  • public Candidate(unsigned int StartIdx, unsigned int Len, MachineBasicBlock::iterator & FirstInst, MachineBasicBlock::iterator & LastInst, llvm::MachineBasicBlock * MBB, unsigned int FunctionIdx, unsigned int Flags)
  • public Candidate()
  • public MachineBasicBlock::iterator & back()
  • public MachineBasicBlock::iterator & front()
  • public unsigned int getCallOverhead() const
  • public unsigned int getEndIdx() const
  • public unsigned int getLength() const
  • public llvm::MachineBasicBlock * getMBB() const
  • public llvm::MachineFunction * getMF() const
  • public unsigned int getStartIdx() const
  • private void initFromEndOfBlockToStartOfSeq(const llvm::TargetRegisterInfo & TRI)
  • private void initInSeq(const llvm::TargetRegisterInfo & TRI)
  • public bool isAnyUnavailableAcrossOrOutOfSeq(std::initializer_list<Register> Regs, const llvm::TargetRegisterInfo & TRI)
  • public bool isAvailableAcrossAndOutOfSeq(llvm::Register Reg, const llvm::TargetRegisterInfo & TRI)
  • public bool isAvailableInsideSeq(llvm::Register Reg, const llvm::TargetRegisterInfo & TRI)
  • public void setCallInfo(unsigned int CID, unsigned int CO)

Methods

Candidate(unsigned int StartIdx,
          unsigned int Len,
          MachineBasicBlock::iterator& FirstInst,
          MachineBasicBlock::iterator& LastInst,
          llvm::MachineBasicBlock* MBB,
          unsigned int FunctionIdx,
          unsigned int Flags)

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:196

Parameters

unsigned int StartIdx
unsigned int Len
MachineBasicBlock::iterator& FirstInst
MachineBasicBlock::iterator& LastInst
llvm::MachineBasicBlock* MBB
unsigned int FunctionIdx
unsigned int Flags

Candidate()

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:202

MachineBasicBlock::iterator& back()

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:139

MachineBasicBlock::iterator& front()

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:138

unsigned int getCallOverhead() const

Description

Returns the call overhead of this candidate if it is in the list.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:136

unsigned int getEndIdx() const

Description

Return the end index of this candidate.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:126

unsigned int getLength() const

Description

Return the number of instructions in this Candidate.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:120

llvm::MachineBasicBlock* getMBB() const

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:141

llvm::MachineFunction* getMF() const

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:140

unsigned int getStartIdx() const

Description

Return the start index of this candidate.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:123

void initFromEndOfBlockToStartOfSeq(
    const llvm::TargetRegisterInfo& TRI)

Description

Populate FromEndOfBlockToStartOfSeq with liveness information.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:78

Parameters

const llvm::TargetRegisterInfo& TRI

void initInSeq(
    const llvm::TargetRegisterInfo& TRI)

Description

Populate InSeq with liveness information.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:95

Parameters

const llvm::TargetRegisterInfo& TRI

bool isAnyUnavailableAcrossOrOutOfSeq(
    std::initializer_list<Register> Regs,
    const llvm::TargetRegisterInfo& TRI)

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:164

Parameters

std::initializer_list<Register> Regs
const llvm::TargetRegisterInfo& TRI

Returns

True if `isAvailableAcrossAndOutOfSeq` fails for any register in \p Regs.

bool isAvailableAcrossAndOutOfSeq(
    llvm::Register Reg,
    const llvm::TargetRegisterInfo& TRI)

Description

This query considers the following range: in_seq_1 in_seq_2 ... in_seq_n not_in_seq_1 ... <end of block>

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:155

Parameters

llvm::Register Reg
const llvm::TargetRegisterInfo& TRI

Returns

True if \p Reg is available from the end of the block to the beginning of the sequence.

bool isAvailableInsideSeq(
    llvm::Register Reg,
    const llvm::TargetRegisterInfo& TRI)

Description

This query considers the following range: in_seq_1 in_seq_2 ... in_seq_n

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:181

Parameters

llvm::Register Reg
const llvm::TargetRegisterInfo& TRI

Returns

True if \p Reg is available within the sequence itself.

void setCallInfo(unsigned int CID,
                 unsigned int CO)

Description

Set the CallConstructionID and CallOverhead of this candidate to CID and CO respectively.

Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:130

Parameters

unsigned int CID
unsigned int CO