class InstrBuilder
Declaration
class InstrBuilder { /* full declaration omitted */ };
Description
A builder class that knows how to construct Instruction objects. Every llvm-mca Instruction is described by an object of class InstrDesc. An InstrDesc describes which registers are read/written by the instruction, as well as the instruction latency and hardware resources consumed. This class is used by the tool to construct Instructions and instruction descriptors (i.e. InstrDesc objects). Information from the machine scheduling model is used to identify processor resources that are consumed by an instruction.
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:60
Member Variables
- private const llvm::MCSubtargetInfo& STI
- private const llvm::MCInstrInfo& MCII
- private const llvm::MCRegisterInfo& MRI
- private const llvm::MCInstrAnalysis* MCIA
- private SmallVector<uint64_t, 8> ProcResourceMasks
- private DenseMap<unsigned short, std::unique_ptr<const InstrDesc>> Descriptors
- private DenseMap<const llvm::MCInst*, std::unique_ptr<const InstrDesc>> VariantDescriptors
- private bool FirstCallInst
- private bool FirstReturnInst
- private llvm::mca::InstrBuilder::InstRecycleCallback InstRecycleCB
Method Overview
- private InstrBuilder(const llvm::mca::InstrBuilder &)
- public InstrBuilder(const llvm::MCSubtargetInfo & STI, const llvm::MCInstrInfo & MCII, const llvm::MCRegisterInfo & RI, const llvm::MCInstrAnalysis * IA)
- public void clear()
- private Expected<const llvm::mca::InstrDesc &> createInstrDescImpl(const llvm::MCInst & MCI)
- public Expected<std::unique_ptr<Instruction>> createInstruction(const llvm::MCInst & MCI)
- private Expected<const llvm::mca::InstrDesc &> getOrCreateInstrDesc(const llvm::MCInst & MCI)
- private void populateReads(llvm::mca::InstrDesc & ID, const llvm::MCInst & MCI, unsigned int SchedClassID)
- private void populateWrites(llvm::mca::InstrDesc & ID, const llvm::MCInst & MCI, unsigned int SchedClassID)
- public void setInstRecycleCallback(llvm::mca::InstrBuilder::InstRecycleCallback CB)
- private llvm::Error verifyInstrDesc(const llvm::mca::InstrDesc & ID, const llvm::MCInst & MCI) const
Methods
¶InstrBuilder(const llvm::mca::InstrBuilder&)
InstrBuilder(const llvm::mca::InstrBuilder&)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:80
Parameters
- const llvm::mca::InstrBuilder&
¶InstrBuilder(const llvm::MCSubtargetInfo& STI,
const llvm::MCInstrInfo& MCII,
const llvm::MCRegisterInfo& RI,
const llvm::MCInstrAnalysis* IA)
InstrBuilder(const llvm::MCSubtargetInfo& STI,
const llvm::MCInstrInfo& MCII,
const llvm::MCRegisterInfo& RI,
const llvm::MCInstrAnalysis* IA)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:88
Parameters
- const llvm::MCSubtargetInfo& STI
- const llvm::MCInstrInfo& MCII
- const llvm::MCRegisterInfo& RI
- const llvm::MCInstrAnalysis* IA
¶void clear()
void clear()
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:91
¶Expected<const llvm::mca::InstrDesc&>
createInstrDescImpl(const llvm::MCInst& MCI)
Expected<const llvm::mca::InstrDesc&>
createInstrDescImpl(const llvm::MCInst& MCI)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:77
Parameters
- const llvm::MCInst& MCI
¶Expected<std::unique_ptr<Instruction>>
createInstruction(const llvm::MCInst& MCI)
Expected<std::unique_ptr<Instruction>>
createInstruction(const llvm::MCInst& MCI)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:102
Parameters
- const llvm::MCInst& MCI
¶Expected<const llvm::mca::InstrDesc&>
getOrCreateInstrDesc(const llvm::MCInst& MCI)
Expected<const llvm::mca::InstrDesc&>
getOrCreateInstrDesc(const llvm::MCInst& MCI)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:78
Parameters
- const llvm::MCInst& MCI
¶void populateReads(llvm::mca::InstrDesc& ID,
const llvm::MCInst& MCI,
unsigned int SchedClassID)
void populateReads(llvm::mca::InstrDesc& ID,
const llvm::MCInst& MCI,
unsigned int SchedClassID)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:84
Parameters
- llvm::mca::InstrDesc& ID
- const llvm::MCInst& MCI
- unsigned int SchedClassID
¶void populateWrites(llvm::mca::InstrDesc& ID,
const llvm::MCInst& MCI,
unsigned int SchedClassID)
void populateWrites(llvm::mca::InstrDesc& ID,
const llvm::MCInst& MCI,
unsigned int SchedClassID)
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:83
Parameters
- llvm::mca::InstrDesc& ID
- const llvm::MCInst& MCI
- unsigned int SchedClassID
¶void setInstRecycleCallback(
llvm::mca::InstrBuilder::InstRecycleCallback
CB)
void setInstRecycleCallback(
llvm::mca::InstrBuilder::InstRecycleCallback
CB)
Description
Set a callback which is invoked to retrieve a recycled mca::Instruction or null if there isn't any.
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:100
Parameters
- llvm::mca::InstrBuilder::InstRecycleCallback CB
¶llvm::Error verifyInstrDesc(
const llvm::mca::InstrDesc& ID,
const llvm::MCInst& MCI) const
llvm::Error verifyInstrDesc(
const llvm::mca::InstrDesc& ID,
const llvm::MCInst& MCI) const
Declared at: llvm/include/llvm/MCA/InstrBuilder.h:85
Parameters
- const llvm::mca::InstrDesc& ID
- const llvm::MCInst& MCI