struct InstrStage
Declaration
struct InstrStage { /* full declaration omitted */ };
Description
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: - FUs which instruction actually requires - FUs which instruction just reserves. Reserved unit is not available for execution of other instruction. However, several instructions can reserve the same unit several times. Such two types of units reservation is used to model instruction domain change stalls, FUs using the same resource (e.g. same register file), etc.
Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:58
Member Variables
- public unsigned int Cycles_
- Length of stage in machine cycles
- public unsigned int Units_
- Choice of functional units
- public int NextCycles_
- Number of machine cycles to next stage
- public llvm::InstrStage::ReservationKinds Kind_
- Kind of the FU reservation
Method Overview
- public unsigned int getCycles() const
- public unsigned int getNextCycles() const
- public llvm::InstrStage::ReservationKinds getReservationKind() const
- public unsigned int getUnits() const
Methods
¶unsigned int getCycles() const
unsigned int getCycles() const
Description
Returns the number of cycles the stage is occupied.
Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:70
¶unsigned int getNextCycles() const
unsigned int getNextCycles() const
Description
Returns the number of cycles from the start of this stage to the start of the next stage in the itinerary
Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:85
¶llvm::InstrStage::ReservationKinds
getReservationKind() const
llvm::InstrStage::ReservationKinds
getReservationKind() const
Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:79
¶unsigned int getUnits() const
unsigned int getUnits() const
Description
Returns the choice of FUs.
Declared at: llvm/include/llvm/MC/MCInstrItineraries.h:75