LLVM: llvm::InstrItineraryData Class Reference (original) (raw)

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

#include "[llvm/MC/MCInstrItineraries.h](MCInstrItineraries%5F8h%5Fsource.html)"

Public Member Functions
InstrItineraryData ()=default
InstrItineraryData (const MCSchedModel &SM, const InstrStage *S, const unsigned *OS, const unsigned *F)
bool isEmpty () const
Returns true if there are no itineraries.
bool isEndMarker (unsigned ItinClassIndx) const
Returns true if the index is for the end marker itinerary.
const InstrStage * beginStage (unsigned ItinClassIndx) const
Return the first stage of the itinerary.
const InstrStage * endStage (unsigned ItinClassIndx) const
Return the last+1 stage of the itinerary.
unsigned getStageLatency (unsigned ItinClassIndx) const
Return the total stage latency of the given class.
std::optional< unsigned > getOperandCycle (unsigned ItinClassIndx, unsigned OperandIdx) const
Return the cycle for the given class and operand.
bool hasPipelineForwarding (unsigned DefClass, unsigned DefIdx, unsigned UseClass, unsigned UseIdx) const
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.
std::optional< unsigned > getOperandLatency (unsigned DefClass, unsigned DefIdx, unsigned UseClass, unsigned UseIdx) const
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.
int getNumMicroOps (unsigned ItinClassIndx) const
Return the number of micro-ops that the given class decodes to.
Public Attributes
MCSchedModel SchedModel
Basic machine properties.
const InstrStage * Stages = nullptr
Array of stages selected.
const unsigned * OperandCycles = nullptr
Array of operand cycles selected.
const unsigned * Forwardings = nullptr
Array of pipeline forwarding paths.
const InstrItinerary * Itineraries
Array of itineraries selected.

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

Definition at line 110 of file MCInstrItineraries.h.

llvm::InstrItineraryData::InstrItineraryData ( ) default

InstrItineraryData() [2/2]

beginStage()

endStage()

getNumMicroOps()

int llvm::InstrItineraryData::getNumMicroOps ( unsigned ItinClassIndx) const inline

getOperandCycle()

std::optional< unsigned > llvm::InstrItineraryData::getOperandCycle ( unsigned ItinClassIndx, unsigned OperandIdx ) const inline

getOperandLatency()

getStageLatency()

unsigned llvm::InstrItineraryData::getStageLatency ( unsigned ItinClassIndx) const inline

hasPipelineForwarding()

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.

Definition at line 186 of file MCInstrItineraries.h.

References Forwardings, and Itineraries.

Referenced by getOperandLatency().

isEmpty()

bool llvm::InstrItineraryData::isEmpty ( ) const inline

Returns true if there are no itineraries.

Definition at line 127 of file MCInstrItineraries.h.

References Itineraries.

Referenced by llvm::TargetInstrInfo::getInstrLatency(), llvm::ARMBaseInstrInfo::getNumMicroOps(), getNumMicroOps(), llvm::TargetInstrInfo::getNumMicroOps(), getOperandCycle(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::ARMBaseInstrInfo::getOperandLatency(), getOperandLatency(), llvm::TargetInstrInfo::getOperandLatency(), getStageLatency(), llvm::TargetInstrInfo::hasLowDefLatency(), and llvm::MachinePipeliner::runOnMachineFunction().

isEndMarker()

bool llvm::InstrItineraryData::isEndMarker ( unsigned ItinClassIndx) const inline

Forwardings

Itineraries

OperandCycles

const unsigned* llvm::InstrItineraryData::OperandCycles = nullptr

SchedModel

Stages


The documentation for this class was generated from the following file: