LLVM
8.0.1
|
Itinerary data supplied by a subtarget to be used by a target. More...
#include "llvm/MC/MCInstrItineraries.h"
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. More... | |
bool | isEndMarker (unsigned ItinClassIndx) const |
Returns true if the index is for the end marker itinerary. More... | |
const InstrStage * | beginStage (unsigned ItinClassIndx) const |
Return the first stage of the itinerary. More... | |
const InstrStage * | endStage (unsigned ItinClassIndx) const |
Return the last+1 stage of the itinerary. More... | |
unsigned | getStageLatency (unsigned ItinClassIndx) const |
Return the total stage latency of the given class. More... | |
int | getOperandCycle (unsigned ItinClassIndx, unsigned OperandIdx) const |
Return the cycle for the given class and operand. More... | |
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. More... | |
int | 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. More... | |
int | getNumMicroOps (unsigned ItinClassIndx) const |
Return the number of micro-ops that the given class decodes to. More... | |
Public Attributes | |
MCSchedModel | SchedModel |
Basic machine properties. More... | |
const InstrStage * | Stages = nullptr |
Array of stages selected. More... | |
const unsigned * | OperandCycles = nullptr |
Array of operand cycles selected. More... | |
const unsigned * | Forwardings = nullptr |
Array of pipeline forwarding paths. More... | |
const InstrItinerary * | Itineraries |
Array of itineraries selected. More... | |
Itinerary data supplied by a subtarget to be used by a target.
Definition at line 107 of file MCInstrItineraries.h.
|
default |
|
inline |
Definition at line 118 of file MCInstrItineraries.h.
|
inline |
Return the first stage of the itinerary.
Definition at line 133 of file MCInstrItineraries.h.
References llvm::InstrItinerary::FirstStage.
Referenced by llvm::ScoreboardHazardRecognizer::EmitInstruction(), llvm::ScoreboardHazardRecognizer::getHazardType(), llvm::DFAPacketizer::getInsnInput(), llvm::MCSchedModel::getReciprocalThroughput(), getUnderlyingObjects(), llvm::HexagonInstrInfo::getUnits(), and llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
|
inline |
Return the last+1 stage of the itinerary.
Definition at line 139 of file MCInstrItineraries.h.
References llvm::InstrItinerary::LastStage.
Referenced by llvm::ScoreboardHazardRecognizer::EmitInstruction(), llvm::ScoreboardHazardRecognizer::getHazardType(), llvm::DFAPacketizer::getInsnInput(), llvm::MCSchedModel::getReciprocalThroughput(), getUnderlyingObjects(), and llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
|
inline |
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 226 of file MCInstrItineraries.h.
References llvm::InstrItinerary::NumMicroOps.
Referenced by llvm::TargetSchedModel::getNumMicroOps(), llvm::ARMBaseInstrInfo::getNumMicroOps(), getNumMicroOpsSwiftLdSt(), and llvm::ARMBaseInstrInfo::getOperandLatency().
|
inline |
Return the cycle for the given class and operand.
Return -1 if no cycle is specified for the operand.
Definition at line 165 of file MCInstrItineraries.h.
References llvm::InstrItinerary::FirstOperandCycle, and llvm::InstrItinerary::LastOperandCycle.
Referenced by llvm::TargetSchedModel::computeOperandLatency(), llvm::PPCInstrInfo::getInstrLatency(), getItineraryLatency(), llvm::ARMBaseInstrInfo::getLDMVariableDefsSize(), llvm::ARMBaseInstrInfo::getNumMicroOps(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::TargetInstrInfo::getOperandLatency(), llvm::ARMTargetLowering::getSchedulingPreference(), and llvm::TargetInstrInfo::hasLowDefLatency().
|
inline |
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 203 of file MCInstrItineraries.h.
Referenced by llvm::ARMBaseInstrInfo::getLDMVariableDefsSize(), and llvm::TargetInstrInfo::getOperandLatency().
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.
Definition at line 147 of file MCInstrItineraries.h.
References E, llvm::Latency, and llvm::max().
Referenced by llvm::TargetInstrInfo::getInstrLatency(), llvm::HexagonInstrInfo::getInstrTimingClassLatency(), and llvm::ARMBaseInstrInfo::getOperandLatency().
|
inline |
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 182 of file MCInstrItineraries.h.
References llvm::InstrItinerary::FirstOperandCycle, and llvm::InstrItinerary::LastOperandCycle.
Referenced by llvm::ARMBaseInstrInfo::getLDMVariableDefsSize().
|
inline |
Returns true if there are no itineraries.
Definition at line 124 of file MCInstrItineraries.h.
Referenced by llvm::TargetInstrInfo::computeDefOperandLatency(), llvm::ScheduleDAGSDNodes::computeLatency(), llvm::ScoreboardHazardRecognizer::EmitInstruction(), llvm::ScoreboardHazardRecognizer::getHazardType(), llvm::TargetInstrInfo::getInstrLatency(), llvm::ARMBaseInstrInfo::getNumMicroOps(), llvm::TargetInstrInfo::getNumMicroOps(), llvm::ARMBaseInstrInfo::getOperandLatency(), llvm::TargetInstrInfo::getOperandLatency(), llvm::ARMTargetLowering::getSchedulingPreference(), llvm::TargetSchedModel::hasInstrItineraries(), llvm::TargetInstrInfo::hasLowDefLatency(), and llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
Returns true if the index is for the end marker itinerary.
Definition at line 127 of file MCInstrItineraries.h.
Referenced by llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
Array of pipeline forwarding paths.
Definition at line 113 of file MCInstrItineraries.h.
const InstrItinerary* llvm::InstrItineraryData::Itineraries |
Array of itineraries selected.
Definition at line 114 of file MCInstrItineraries.h.
Referenced by llvm::TargetInstrInfo::getNumMicroOps(), and llvm::HexagonSubtarget::HexagonSubtarget().
Array of operand cycles selected.
Definition at line 112 of file MCInstrItineraries.h.
MCSchedModel llvm::InstrItineraryData::SchedModel |
Basic machine properties.
Definition at line 109 of file MCInstrItineraries.h.
Referenced by llvm::TargetInstrInfo::computeDefOperandLatency(), llvm::ResourcePriorityQueue::reserveResources(), and llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
const InstrStage* llvm::InstrItineraryData::Stages = nullptr |
Array of stages selected.
Definition at line 111 of file MCInstrItineraries.h.