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)
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()
Candidate()
Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:202
¶MachineBasicBlock::iterator& back()
MachineBasicBlock::iterator& back()
Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:139
¶MachineBasicBlock::iterator& front()
MachineBasicBlock::iterator& front()
Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:138
¶unsigned int getCallOverhead() const
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
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
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
llvm::MachineBasicBlock* getMBB() const
Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:141
¶llvm::MachineFunction* getMF() const
llvm::MachineFunction* getMF() const
Declared at: llvm/include/llvm/CodeGen/MachineOutliner.h:140
¶unsigned int getStartIdx() const
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)
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)
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)
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)
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)
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)
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