LLVM API Documentation

Public Member Functions | Public Attributes
llvm::InstrItineraryData Class Reference

#include <MCInstrItineraries.h>

Collaboration diagram for llvm::InstrItineraryData:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 InstrItineraryData ()
 InstrItineraryData (const MCSchedModel *SM, const InstrStage *S, const unsigned *OS, const unsigned *F)
bool isEmpty () const
bool isEndMarker (unsigned ItinClassIndx) const
const InstrStagebeginStage (unsigned ItinClassIndx) const
const InstrStageendStage (unsigned ItinClassIndx) const
unsigned getStageLatency (unsigned ItinClassIndx) const
int getOperandCycle (unsigned ItinClassIndx, unsigned OperandIdx) const
bool hasPipelineForwarding (unsigned DefClass, unsigned DefIdx, unsigned UseClass, unsigned UseIdx) const
int getOperandLatency (unsigned DefClass, unsigned DefIdx, unsigned UseClass, unsigned UseIdx) const
int getNumMicroOps (unsigned ItinClassIndx) const

Public Attributes

const MCSchedModelSchedModel
 Basic machine properties.
const InstrStageStages
 Array of stages selected.
const unsignedOperandCycles
 Array of operand cycles selected.
const unsignedForwardings
 Array of pipeline forwarding pathes.
const InstrItineraryItineraries
 Array of itineraries selected.

Detailed Description

Instruction itinerary Data - Itinerary data supplied by a subtarget to be used by a target.

Definition at line 111 of file MCInstrItineraries.h.


Constructor & Destructor Documentation

llvm::InstrItineraryData::InstrItineraryData ( ) [inline]

Ctors.

Definition at line 121 of file MCInstrItineraries.h.

llvm::InstrItineraryData::InstrItineraryData ( const MCSchedModel SM,
const InstrStage S,
const unsigned OS,
const unsigned F 
) [inline]

Definition at line 125 of file MCInstrItineraries.h.


Member Function Documentation

const InstrStage* llvm::InstrItineraryData::beginStage ( unsigned  ItinClassIndx) const [inline]
const InstrStage* llvm::InstrItineraryData::endStage ( unsigned  ItinClassIndx) const [inline]
int llvm::InstrItineraryData::getNumMicroOps ( unsigned  ItinClassIndx) const [inline]

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

Definition at line 248 of file MCInstrItineraries.h.

References isEmpty(), Itineraries, and llvm::InstrItinerary::NumMicroOps.

Referenced by llvm::TargetSchedModel::getNumMicroOps(), llvm::ARMBaseInstrInfo::getNumMicroOps(), and getNumMicroOpsSwiftLdSt().

int llvm::InstrItineraryData::getOperandCycle ( unsigned  ItinClassIndx,
unsigned  OperandIdx 
) const [inline]
int llvm::InstrItineraryData::getOperandLatency ( unsigned  DefClass,
unsigned  DefIdx,
unsigned  UseClass,
unsigned  UseIdx 
) const [inline]

getOperandLatency - 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.

Definition at line 224 of file MCInstrItineraries.h.

References getOperandCycle(), hasPipelineForwarding(), and isEmpty().

Referenced by llvm::TargetInstrInfo::getOperandLatency().

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

getStageLatency - Return the total stage latency of the given class. The latency is the maximum completion time for any stage in the itinerary.

InstrStages override the itinerary's MinLatency property. In fact, if the stage latencies, which may be zero, are less than MinLatency, getStageLatency returns a value less than MinLatency.

If no stages exist, MinLatency is used. If MinLatency is invalid (<0), then it defaults to one cycle.

Definition at line 166 of file MCInstrItineraries.h.

References beginStage(), endStage(), isEmpty(), llvm::MCSchedModel::MinLatency, and SchedModel.

Referenced by llvm::TargetInstrInfo::getInstrLatency().

bool llvm::InstrItineraryData::hasPipelineForwarding ( unsigned  DefClass,
unsigned  DefIdx,
unsigned  UseClass,
unsigned  UseIdx 
) 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 203 of file MCInstrItineraries.h.

References llvm::InstrItinerary::FirstOperandCycle, Forwardings, Itineraries, and llvm::InstrItinerary::LastOperandCycle.

Referenced by getOperandLatency().

bool llvm::InstrItineraryData::isEmpty ( ) const [inline]
bool llvm::InstrItineraryData::isEndMarker ( unsigned  ItinClassIndx) const [inline]

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

Definition at line 137 of file MCInstrItineraries.h.

References Itineraries.

Referenced by llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().


Member Data Documentation

Array of pipeline forwarding pathes.

Definition at line 116 of file MCInstrItineraries.h.

Referenced by hasPipelineForwarding().

Array of operand cycles selected.

Definition at line 115 of file MCInstrItineraries.h.

Referenced by getOperandCycle().

Array of stages selected.

Definition at line 114 of file MCInstrItineraries.h.

Referenced by beginStage(), and endStage().


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