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&)

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)

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()

Declared at: llvm/include/llvm/MCA/InstrBuilder.h:91

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)

Declared at: llvm/include/llvm/MCA/InstrBuilder.h:102

Parameters

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)

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)

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)

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

Declared at: llvm/include/llvm/MCA/InstrBuilder.h:85

Parameters

const llvm::mca::InstrDesc& ID
const llvm::MCInst& MCI