48 #ifndef __CPU_MINOR_DYN_INST_HH__
49 #define __CPU_MINOR_DYN_INST_HH__
143 std::ostream &
operator <<(std::ostream &
os,
const InstId &
id);
151 std::ostream &
operator <<(std::ostream &
os,
const MinorDynInst &inst);
241 bool isBubble()
const {
return id.fetchSeqNum == 0; }
277 std::ostream &
operator <<(std::ostream &
os,
const MinorDynInst &inst);
std::ostream & operator<<(std::ostream &os, const InstId &id)
Print this id in the usual slash-separated format expected by MinorTrace.
decltype(nullptr) constexpr NoFault
Cycles is a wrapper class for representing cycle counts, i.e.
bool isNoCostInst() const
Is this an instruction that can be executed `for free' and needn't spend time in an FU...
bool triedToPredict
Tried to predict the destination of this inst (if a control instruction or a sys call) ...
static const InstSeqNum firstPredictionSeqNum
bool canEarlyIssue
Can this instruction be executed out of order.
Addr ea
Effective address as set by ExecContext::setEA.
void reportData(std::ostream &os) const
ReportIF interface.
Fault fault
This is actually a fault masquerading as an instruction.
Cycles minimumCommitCycle
Once issued, extraCommitDelay becomes minimumCommitCycle to account for delay in absolute time...
RefCountingPtr< MinorDynInst > MinorDynInstPtr
MinorDynInsts are currently reference counted.
bool isBubble() const
The BubbleIF interface.
TheISA::RegIndex flatDestRegIdx[TheISA::MaxInstDestRegs]
Flat register indices so that, when clearing the scoreboard, we have the same register indices as whe...
unsigned int fuIndex
Fields only set during execution.
Id for lines and instructions.
MinorDynInst(InstId id_=InstId(), Fault fault_=NoFault)
bool predictedTaken
This instruction was predicted to change control flow and the following instructions will have a newe...
InstSeqNum execSeqNum
'Execute' sequence number.
InstSeqNum predictionSeqNum
The predicted qualifier to stream, attached by Fetch2 as a consequence of branch prediction.
InstSeqNum fetchSeqNum
Fetch sequence number.
TimingExpr * extraCommitDelayExpr
void minorTraceInst(const Named &named_object) const
Print (possibly verbose) instruction information for MinorTrace using the given Named object's name...
bool isMemRef() const
Is this a real mem ref instruction.
static const InstSeqNum firstExecSeqNum
Cycles extraCommitDelay
Extra delay at the end of the pipeline.
Classes for managing reference counted objects.
static const InstSeqNum firstFetchSeqNum
TheISA::PCState predictedTarget
Predicted branch target.
InstSeqNum instToWaitFor
execSeqNum of the latest inst on which this inst depends.
bool isInst() const
Is this a real instruction.
Derive from RefCounted if you want to enable reference counting of this class.
static void init()
Initialise the class.
static MinorDynInstPtr bubbleInst
A prototypical bubble instruction.
Classes for buffer, queue and FIFO behaviour.
InstId(ThreadID thread_id=0, InstSeqNum stream_seq_num=0, InstSeqNum prediction_seq_num=0, InstSeqNum line_seq_num=0, InstSeqNum fetch_seq_num=0, InstSeqNum exec_seq_num=0)
Very boring default constructor.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool isFault() const
Is this a fault rather than instruction.
InstSeqNum streamSeqNum
The 'stream' this instruction belongs to.
int16_t ThreadID
Thread index/ID type.
bool isLastOpInInst() const
Assuming this is not a fault, is this instruction either a whole instruction or the last microop from...
Dynamic instruction for Minor.
TheISA::PCState pc
The fetch address of this instruction.
bool inStoreBuffer
The instruction has been sent to the store buffer.
bool inLSQ
This instruction is in the LSQ, not a functional unit.
static MinorDynInstPtr bubble()
There is a single bubble inst.
bool operator==(const InstId &rhs)
GenericISA::SimplePCState< MachInst > PCState
InstSeqNum lineSeqNum
Line sequence number.
static const InstSeqNum firstLineSeqNum
std::shared_ptr< FaultBase > Fault
ThreadID threadId
The thread to which this line/instruction belongs.
Trace::InstRecord * traceData
Trace information for this instruction's execution.
static const InstSeqNum firstStreamSeqNum
First sequence numbers to use in initialisation of the pipeline and to be expected on the first line/...