LLVM
8.0.1
|
These values represent a non-pipelined step in the execution of an instruction. More...
#include "llvm/MC/MCInstrItineraries.h"
Public Types | |
enum | ReservationKinds { Required = 0, Reserved = 1 } |
Public Member Functions | |
unsigned | getCycles () const |
Returns the number of cycles the stage is occupied. More... | |
unsigned | getUnits () const |
Returns the choice of FUs. More... | |
ReservationKinds | getReservationKind () const |
unsigned | getNextCycles () const |
Returns the number of cycles from the start of this stage to the start of the next stage in the itinerary. More... | |
Public Attributes | |
unsigned | Cycles_ |
Length of stage in machine cycles. More... | |
unsigned | Units_ |
Choice of functional units. More... | |
int | NextCycles_ |
Number of machine cycles to next stage. More... | |
ReservationKinds | Kind_ |
Kind of the FU reservation. More... | |
These values represent a non-pipelined step in the execution of an instruction.
Cycles represents the number of discrete time slots needed to complete the stage. Units represent the choice of functional units that can be used to complete the stage. Eg. IntUnit1, IntUnit2. NextCycles indicates how many cycles should elapse from the start of this stage to the start of the next stage in the itinerary. A value of -1 indicates that the next stage should start immediately after the current one. For example:
{ 1, x, -1 } indicates that the stage occupies FU x for 1 cycle and that the next stage starts immediately after this one.
{ 2, x|y, 1 } indicates that the stage occupies either FU x or FU y for 2 consecutive cycles and that the next stage starts one cycle after this stage starts. That is, the stage requirements overlap in time.
{ 1, x, 0 } indicates that the stage occupies FU x for 1 cycle and that the next stage starts in this same cycle. This can be used to indicate that the instruction requires multiple stages at the same time.
FU reservation can be of two different kinds:
Definition at line 59 of file MCInstrItineraries.h.
Enumerator | |
---|---|
Required | |
Reserved |
Definition at line 60 of file MCInstrItineraries.h.
|
inline |
Returns the number of cycles the stage is occupied.
Definition at line 71 of file MCInstrItineraries.h.
References Cycles_.
Referenced by llvm::MCSchedModel::getReciprocalThroughput(), and llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
|
inline |
Returns the number of cycles from the start of this stage to the start of the next stage in the itinerary.
Definition at line 86 of file MCInstrItineraries.h.
Referenced by llvm::ScoreboardHazardRecognizer::ScoreboardHazardRecognizer().
|
inline |
Definition at line 80 of file MCInstrItineraries.h.
References Kind_.
|
inline |
Returns the choice of FUs.
Definition at line 76 of file MCInstrItineraries.h.
References Units_.
Referenced by llvm::MCSchedModel::getReciprocalThroughput(), and llvm::HexagonInstrInfo::getUnits().
unsigned llvm::InstrStage::Cycles_ |
Length of stage in machine cycles.
Definition at line 65 of file MCInstrItineraries.h.
Referenced by getCycles().
ReservationKinds llvm::InstrStage::Kind_ |
Kind of the FU reservation.
Definition at line 68 of file MCInstrItineraries.h.
Referenced by getReservationKind().
int llvm::InstrStage::NextCycles_ |
Number of machine cycles to next stage.
Definition at line 67 of file MCInstrItineraries.h.
unsigned llvm::InstrStage::Units_ |
Choice of functional units.
Definition at line 66 of file MCInstrItineraries.h.
Referenced by getUnits().