46#ifndef __CPU_MINOR_DYN_INST_HH__
47#define __CPU_MINOR_DYN_INST_HH__
148std::ostream &
operator <<(std::ostream &
os,
const InstId &
id);
156std::ostream &
operator <<(std::ostream &
os,
const MinorDynInst &inst);
178 std::unique_ptr<PCStateBase>
pc;
247 bool isBubble()
const {
return id.fetchSeqNum == 0; }
288std::ostream &
operator <<(std::ostream &
os,
const MinorDynInst &inst);
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
Classes for buffer, queue and FIFO behaviour.
Cycles is a wrapper class for representing cycle counts, i.e.
Interface for things with names.
Derive from RefCounted if you want to enable reference counting of this class.
If you want a reference counting pointer to a mutable object, create it like this:
Id for lines and instructions.
static const InstSeqNum firstFetchSeqNum
static const InstSeqNum firstExecSeqNum
InstSeqNum lineSeqNum
Line sequence number.
ThreadID threadId
The thread to which this line/instruction belongs.
InstSeqNum streamSeqNum
The 'stream' this instruction belongs to.
static const InstSeqNum firstLineSeqNum
static const InstSeqNum firstStreamSeqNum
First sequence numbers to use in initialisation of the pipeline and to be expected on the first line/...
static const InstSeqNum firstPredictionSeqNum
bool operator==(const InstId &rhs)
InstSeqNum fetchSeqNum
Fetch sequence number.
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.
InstSeqNum execSeqNum
'Execute' sequence number.
InstSeqNum predictionSeqNum
The predicted qualifier to stream, attached by Fetch2 as a consequence of branch prediction.
Dynamic instruction for Minor.
bool inStoreBuffer
The instruction has been sent to the store buffer.
Cycles minimumCommitCycle
Once issued, extraCommitDelay becomes minimumCommitCycle to account for delay in absolute time.
bool memAccPredicate
Flag controlling conditional execution of the memory access associated with the instruction (only mea...
bool isFault() const
Is this a fault rather than instruction.
bool isNoCostInst() const
Is this an instruction that can be executed ‘for free’ and needn't spend time in an FU.
InstSeqNum instToWaitFor
execSeqNum of the latest inst on which this inst depends.
bool isInst() const
Is this a real instruction.
bool readMemAccPredicate() const
TimingExpr * extraCommitDelayExpr
Fault translationFault
Translation fault in case of a mem ref.
bool readPredicate() const
trace::InstRecord * traceData
Trace information for this instruction's execution.
bool predicate
Flag controlling conditional execution of the instruction.
bool inLSQ
This instruction is in the LSQ, not a functional unit.
MinorDynInst(StaticInstPtr si, InstId id_=InstId(), Fault fault_=NoFault)
bool canEarlyIssue
Can this instruction be executed out of order.
Cycles extraCommitDelay
Extra delay at the end of the pipeline.
bool isMemRef() const
Is this a real mem ref instruction.
std::vector< RegId > flatDestRegIdx
Flat register indices so that, when clearing the scoreboard, we have the same register indices as whe...
std::unique_ptr< PCStateBase > predictedTarget
Predicted branch target.
std::unique_ptr< PCStateBase > pc
The fetch address of this instruction.
void setPredicate(bool val)
void minorTraceInst(const Named &named_object) const
Print (possibly verbose) instruction information for MinorTrace using the given Named object's name.
const StaticInstPtr staticInst
static MinorDynInstPtr bubble()
There is a single bubble inst.
bool isLastOpInInst() const
Assuming this is not a fault, is this instruction either a whole instruction or the last microop from...
void reportData(std::ostream &os) const
ReportIF interface.
void setMemAccPredicate(bool val)
static MinorDynInstPtr bubbleInst
A prototypical bubble instruction.
bool predictedTaken
This instruction was predicted to change control flow and the following instructions will have a newe...
Fault fault
This is actually a fault masquerading as an instruction.
bool triedToPredict
Tried to predict the destination of this inst (if a control instruction or a sys call)
bool isBubble() const
The BubbleIF interface.
unsigned int fuIndex
Fields only set during execution.
RefCountingPtr< MinorDynInst > MinorDynInstPtr
MinorDynInsts are currently reference counted.
std::ostream & operator<<(std::ostream &os, const InstId &id)
Print this id in the usual slash-separated format expected by MinorTrace.
Copyright (c) 2024 - Pranith Kumar Copyright (c) 2020 Inria All rights reserved.
std::shared_ptr< FaultBase > Fault
int16_t ThreadID
Thread index/ID type.
constexpr decltype(nullptr) NoFault
Minor contains all the definitions within the MinorCPU apart from the CPU class itself.
Classes for managing reference counted objects.