16 #ifndef LLVM_MC_MCINSTRITINERARIES_H
17 #define LLVM_MC_MCINSTRITINERARIES_H
126 const unsigned *OS,
const unsigned *
F)
138 return ((
Itineraries[ItinClassIndx].FirstStage == ~0U) &&
168 unsigned Latency = 0, StartCycle = 0;
170 *E =
endStage(ItinClassIndx); IS != E; ++IS) {
171 Latency = std::max(Latency, StartCycle + IS->getCycles());
172 StartCycle += IS->getNextCycles();
186 if ((FirstIdx + OperandIdx) >= LastIdx)
198 unsigned UseClass,
unsigned UseIdx)
const {
201 if ((FirstDefIdx + DefIdx) >= LastDefIdx)
208 if ((FirstUseIdx + UseIdx) >= LastUseIdx)
219 unsigned UseClass,
unsigned UseIdx)
const {
231 UseCycle = DefCycle - UseCycle + 1;
const unsigned * OperandCycles
Array of operand cycles selected.
int getNumMicroOps(unsigned ItinClassIndx) const
unsigned Units_
Choice of functional units.
const unsigned * Forwardings
Array of pipeline forwarding pathes.
int NextCycles_
Number of machine cycles to next stage.
unsigned getCycles() const
getCycles - returns the number of cycles the stage is occupied
const MCSchedModel * SchedModel
Basic machine properties.
ReservationKinds getReservationKind() const
bool isEndMarker(unsigned ItinClassIndx) const
int NumMicroOps
of micro-ops, -1 means it's variable
int getOperandCycle(unsigned ItinClassIndx, unsigned OperandIdx) const
unsigned FirstOperandCycle
Index of first operand rd/wr.
const InstrItinerary * Itineraries
Array of itineraries selected.
const InstrStage * beginStage(unsigned ItinClassIndx) const
unsigned getUnits() const
getUnits - returns the choice of FUs
unsigned LastOperandCycle
Index of last + 1 operand rd/wr.
unsigned FirstStage
Index of first stage in itinerary.
ReservationKinds Kind_
Kind of the FU reservation.
unsigned getStageLatency(unsigned ItinClassIndx) const
unsigned Cycles_
Length of stage in machine cycles.
unsigned getNextCycles() const
InstrItineraryData(const MCSchedModel *SM, const InstrStage *S, const unsigned *OS, const unsigned *F)
const InstrStage * endStage(unsigned ItinClassIndx) const
unsigned LastStage
Index of last + 1 stage in itinerary.
int getOperandLatency(unsigned DefClass, unsigned DefIdx, unsigned UseClass, unsigned UseIdx) const
bool hasPipelineForwarding(unsigned DefClass, unsigned DefIdx, unsigned UseClass, unsigned UseIdx) const
const InstrStage * Stages
Array of stages selected.