class InstrItineraryData

Declaration

class InstrItineraryData { /* full declaration omitted */ };

Description

Itinerary data supplied by a subtarget to be used by a target.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:106

Member Variables

public llvm::MCSchedModel SchedModel = MCSchedModel::GetDefaultSchedModel()
public const llvm::InstrStage* Stages = nullptr
Array of stages selected
public const unsigned int* OperandCycles = nullptr
Array of operand cycles selected
public const unsigned int* Forwardings = nullptr
Array of pipeline forwarding paths
public const llvm::InstrItinerary* Itineraries = nullptr

Method Overview

  • public InstrItineraryData()
  • public InstrItineraryData(const llvm::MCSchedModel & SM, const llvm::InstrStage * S, const unsigned int * OS, const unsigned int * F)
  • public const llvm::InstrStage * beginStage(unsigned int ItinClassIndx) const
  • public const llvm::InstrStage * endStage(unsigned int ItinClassIndx) const
  • public int getNumMicroOps(unsigned int ItinClassIndx) const
  • public int getOperandCycle(unsigned int ItinClassIndx, unsigned int OperandIdx) const
  • public int getOperandLatency(unsigned int DefClass, unsigned int DefIdx, unsigned int UseClass, unsigned int UseIdx) const
  • public unsigned int getStageLatency(unsigned int ItinClassIndx) const
  • public bool hasPipelineForwarding(unsigned int DefClass, unsigned int DefIdx, unsigned int UseClass, unsigned int UseIdx) const
  • public bool isEmpty() const
  • public bool isEndMarker(unsigned int ItinClassIndx) const

Methods

InstrItineraryData()

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:116

InstrItineraryData(const llvm::MCSchedModel& SM,
                   const llvm::InstrStage* S,
                   const unsigned int* OS,
                   const unsigned int* F)

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:117

Parameters

const llvm::MCSchedModel& SM
const llvm::InstrStage* S
const unsigned int* OS
const unsigned int* F

const llvm::InstrStage* beginStage(
    unsigned int ItinClassIndx) const

Description

Return the first stage of the itinerary.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:132

Parameters

unsigned int ItinClassIndx

const llvm::InstrStage* endStage(
    unsigned int ItinClassIndx) const

Description

Return the last+1 stage of the itinerary.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:138

Parameters

unsigned int ItinClassIndx

int getNumMicroOps(
    unsigned int ItinClassIndx) const

Description

Return the number of micro-ops that the given class decodes to. Return -1 for classes that require dynamic lookup via TargetInstrInfo.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:225

Parameters

unsigned int ItinClassIndx

int getOperandCycle(unsigned int ItinClassIndx,
                    unsigned int OperandIdx) const

Description

Return the cycle for the given class and operand. Return -1 if no cycle is specified for the operand.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:164

Parameters

unsigned int ItinClassIndx
unsigned int OperandIdx

int getOperandLatency(unsigned int DefClass,
                      unsigned int DefIdx,
                      unsigned int UseClass,
                      unsigned int UseIdx) const

Description

Compute and return the use operand latency of a given itinerary class and operand index if the value is produced by an instruction of the specified itinerary class and def operand index.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:202

Parameters

unsigned int DefClass
unsigned int DefIdx
unsigned int UseClass
unsigned int UseIdx

unsigned int getStageLatency(
    unsigned int ItinClassIndx) const

Description

Return the total stage latency of the given class. The latency is the maximum completion time for any stage in the itinerary. If no stages exist, it defaults to one cycle.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:146

Parameters

unsigned int ItinClassIndx

bool hasPipelineForwarding(
    unsigned int DefClass,
    unsigned int DefIdx,
    unsigned int UseClass,
    unsigned int UseIdx) const

Description

Return true if there is a pipeline forwarding between instructions of itinerary classes DefClass and UseClasses so that value produced by an instruction of itinerary class DefClass, operand index DefIdx can be bypassed when it's read by an instruction of itinerary class UseClass, operand index UseIdx.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:181

Parameters

unsigned int DefClass
unsigned int DefIdx
unsigned int UseClass
unsigned int UseIdx

bool isEmpty() const

Description

Returns true if there are no itineraries.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:123

bool isEndMarker(unsigned int ItinClassIndx) const

Description

Returns true if the index is for the end marker itinerary.

Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:126

Parameters

unsigned int ItinClassIndx