gem5
v21.2.1.0
|
#include <dyn_inst.hh>
Classes | |
struct | Arrays |
Public Types | |
typedef std::list< DynInstPtr >::iterator | ListIt |
Public Member Functions | |
DynInst (const Arrays &arrays, const StaticInstPtr &staticInst, const StaticInstPtr ¯oop, InstSeqNum seq_num, CPU *cpu) | |
BaseDynInst constructor given a binary instruction. More... | |
DynInst (const Arrays &arrays, const StaticInstPtr &staticInst, const StaticInstPtr ¯oop, const PCStateBase &pc, const PCStateBase &pred_pc, InstSeqNum seq_num, CPU *cpu) | |
DynInst (const Arrays &arrays, const StaticInstPtr &_staticInst, const StaticInstPtr &_macroop) | |
BaseDynInst constructor given a static inst pointer. More... | |
~DynInst () | |
Fault | execute () |
Executes the instruction. More... | |
Fault | initiateAcc () |
Initiates the access. More... | |
Fault | completeAcc (PacketPtr pkt) |
Completes the access. More... | |
BaseCPU * | getCpuPtr () |
size_t | numSrcs () const |
size_t | numDests () const |
const RegId & | flattenedDestIdx (int idx) const |
void | flattenedDestIdx (int idx, const RegId ®_id) |
PhysRegIdPtr | renamedDestIdx (int idx) const |
void | renamedDestIdx (int idx, PhysRegIdPtr phys_reg_id) |
PhysRegIdPtr | prevDestIdx (int idx) const |
void | prevDestIdx (int idx, PhysRegIdPtr phys_reg_id) |
PhysRegIdPtr | renamedSrcIdx (int idx) const |
void | renamedSrcIdx (int idx, PhysRegIdPtr phys_reg_id) |
bool | readySrcIdx (int idx) const |
void | readySrcIdx (int idx, bool ready) |
void | recordResult (bool f) |
Records changes to result? More... | |
bool | effAddrValid () const |
Is the effective virtual address valid. More... | |
void | effAddrValid (bool b) |
bool | memOpDone () const |
Whether or not the memory operation is done. More... | |
void | memOpDone (bool f) |
bool | notAnInst () const |
void | setNotAnInst () |
void | demapPage (Addr vaddr, uint64_t asn) override |
Invalidate a page in the DTLB and ITLB. More... | |
Fault | initiateMemRead (Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable) override |
Fault | initiateHtmCmd (Request::Flags flags) override |
Initiate an HTM command, e.g. More... | |
Fault | writeMem (uint8_t *data, unsigned size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable) override |
Fault | initiateMemAMO (Addr addr, unsigned size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override |
bool | translationStarted () const |
True if the DTB address translation has started. More... | |
void | translationStarted (bool f) |
bool | translationCompleted () const |
True if the DTB address translation has completed. More... | |
void | translationCompleted (bool f) |
bool | possibleLoadViolation () const |
True if this address was found to match a previous load and they issued out of order. More... | |
void | possibleLoadViolation (bool f) |
bool | hitExternalSnoop () const |
True if the address hit a external snoop while sitting in the LSQ. More... | |
void | hitExternalSnoop (bool f) |
bool | isTranslationDelayed () const |
Returns true if the DTB address translation is being delayed due to a hw page table walk. More... | |
void | renameDestReg (int idx, PhysRegIdPtr renamed_dest, PhysRegIdPtr previous_rename) |
Renames a destination register to a physical register. More... | |
void | renameSrcReg (int idx, PhysRegIdPtr renamed_src) |
Renames a source logical register to the physical register which has/will produce that logical register's result. More... | |
void | dump () |
Dumps out contents of this BaseDynInst. More... | |
void | dump (std::string &outstring) |
Dumps out contents of this BaseDynInst into given string. More... | |
int | cpuId () const |
Read this CPU's ID. More... | |
uint32_t | socketId () const |
Read this CPU's Socket ID. More... | |
RequestorID | requestorId () const |
Read this CPU's data requestor ID. More... | |
ContextID | contextId () const |
Read this context's system-wide ID. More... | |
Fault | getFault () const |
Returns the fault type. More... | |
Fault & | getFault () |
TODO: This I added for the LSQRequest side to be able to modify the fault. More... | |
bool | doneTargCalc () |
Checks whether or not this instruction has had its branch target calculated yet. More... | |
void | setPredTarg (const PCStateBase &pred_pc) |
Set the predicted target of this current instruction. More... | |
const PCStateBase & | readPredTarg () |
bool | readPredTaken () |
Returns whether the instruction was predicted taken or not. More... | |
void | setPredTaken (bool predicted_taken) |
bool | mispredicted () |
Returns whether the instruction mispredicted. More... | |
bool | isNop () const |
bool | isMemRef () const |
bool | isLoad () const |
bool | isStore () const |
bool | isAtomic () const |
bool | isStoreConditional () const |
bool | isInstPrefetch () const |
bool | isDataPrefetch () const |
bool | isInteger () const |
bool | isFloating () const |
bool | isVector () const |
bool | isControl () const |
bool | isCall () const |
bool | isReturn () const |
bool | isDirectCtrl () const |
bool | isIndirectCtrl () const |
bool | isCondCtrl () const |
bool | isUncondCtrl () const |
bool | isSerializing () const |
bool | isSerializeBefore () const |
bool | isSerializeAfter () const |
bool | isSquashAfter () const |
bool | isFullMemBarrier () const |
bool | isReadBarrier () const |
bool | isWriteBarrier () const |
bool | isNonSpeculative () const |
bool | isQuiesce () const |
bool | isUnverifiable () const |
bool | isSyscall () const |
bool | isMacroop () const |
bool | isMicroop () const |
bool | isDelayedCommit () const |
bool | isLastMicroop () const |
bool | isFirstMicroop () const |
bool | isHtmStart () const |
bool | isHtmStop () const |
bool | isHtmCancel () const |
bool | isHtmCmd () const |
uint64_t | getHtmTransactionUid () const override |
uint64_t | newHtmTransactionUid () const override |
bool | inHtmTransactionalState () const override |
uint64_t | getHtmTransactionalDepth () const override |
void | setHtmTransactionalState (uint64_t htm_uid, uint64_t htm_depth) |
void | clearHtmTransactionalState () |
void | setSerializeBefore () |
Temporarily sets this instruction as a serialize before instruction. More... | |
void | clearSerializeBefore () |
Clears the serializeBefore part of this instruction. More... | |
bool | isTempSerializeBefore () |
Checks if this serializeBefore is only temporarily set. More... | |
void | setSerializeAfter () |
Temporarily sets this instruction as a serialize after instruction. More... | |
void | clearSerializeAfter () |
Clears the serializeAfter part of this instruction. More... | |
bool | isTempSerializeAfter () |
Checks if this serializeAfter is only temporarily set. More... | |
void | setSerializeHandled () |
Sets the serialization part of this instruction as handled. More... | |
bool | isSerializeHandled () |
Checks if the serialization part of this instruction has been handled. More... | |
OpClass | opClass () const |
Returns the opclass of this instruction. More... | |
std::unique_ptr< PCStateBase > | branchTarget () const |
Returns the branch target address. More... | |
size_t | numSrcRegs () const |
Returns the number of source registers. More... | |
size_t | numDestRegs () const |
Returns the number of destination registers. More... | |
int8_t | numFPDestRegs () const |
int8_t | numIntDestRegs () const |
int8_t | numCCDestRegs () const |
int8_t | numVecDestRegs () const |
int8_t | numVecElemDestRegs () const |
int8_t | numVecPredDestRegs () const |
const RegId & | destRegIdx (int i) const |
Returns the logical register index of the i'th destination register. More... | |
const RegId & | srcRegIdx (int i) const |
Returns the logical register index of the i'th source register. More... | |
uint8_t | resultSize () |
Return the size of the instResult queue. More... | |
InstResult | popResult (InstResult dflt=InstResult()) |
Pops a result off the instResult queue. More... | |
void | markSrcRegReady () |
Records that one of the source registers is ready. More... | |
void | markSrcRegReady (RegIndex src_idx) |
Marks a specific register as ready. More... | |
void | setCompleted () |
Sets this instruction as completed. More... | |
bool | isCompleted () const |
Returns whether or not this instruction is completed. More... | |
void | setResultReady () |
Marks the result as ready. More... | |
bool | isResultReady () const |
Returns whether or not the result is ready. More... | |
void | setCanIssue () |
Sets this instruction as ready to issue. More... | |
bool | readyToIssue () const |
Returns whether or not this instruction is ready to issue. More... | |
void | clearCanIssue () |
Clears this instruction being able to issue. More... | |
void | setIssued () |
Sets this instruction as issued from the IQ. More... | |
bool | isIssued () const |
Returns whether or not this instruction has issued. More... | |
void | clearIssued () |
Clears this instruction as being issued. More... | |
void | setExecuted () |
Sets this instruction as executed. More... | |
bool | isExecuted () const |
Returns whether or not this instruction has executed. More... | |
void | setCanCommit () |
Sets this instruction as ready to commit. More... | |
void | clearCanCommit () |
Clears this instruction as being ready to commit. More... | |
bool | readyToCommit () const |
Returns whether or not this instruction is ready to commit. More... | |
void | setAtCommit () |
bool | isAtCommit () |
void | setCommitted () |
Sets this instruction as committed. More... | |
bool | isCommitted () const |
Returns whether or not this instruction is committed. More... | |
void | setSquashed () |
Sets this instruction as squashed. More... | |
bool | isSquashed () const |
Returns whether or not this instruction is squashed. More... | |
void | setInIQ () |
Sets this instruction as a entry the IQ. More... | |
void | clearInIQ () |
Sets this instruction as a entry the IQ. More... | |
bool | isInIQ () const |
Returns whether or not this instruction has issued. More... | |
void | setSquashedInIQ () |
Sets this instruction as squashed in the IQ. More... | |
bool | isSquashedInIQ () const |
Returns whether or not this instruction is squashed in the IQ. More... | |
void | setInLSQ () |
Sets this instruction as a entry the LSQ. More... | |
void | removeInLSQ () |
Sets this instruction as a entry the LSQ. More... | |
bool | isInLSQ () const |
Returns whether or not this instruction is in the LSQ. More... | |
void | setSquashedInLSQ () |
Sets this instruction as squashed in the LSQ. More... | |
bool | isSquashedInLSQ () const |
Returns whether or not this instruction is squashed in the LSQ. More... | |
void | setInROB () |
Sets this instruction as a entry the ROB. More... | |
void | clearInROB () |
Sets this instruction as a entry the ROB. More... | |
bool | isInROB () const |
Returns whether or not this instruction is in the ROB. More... | |
void | setSquashedInROB () |
Sets this instruction as squashed in the ROB. More... | |
bool | isSquashedInROB () const |
Returns whether or not this instruction is squashed in the ROB. More... | |
bool | isPinnedRegsRenamed () const |
Returns whether pinned registers are renamed. More... | |
void | setPinnedRegsRenamed () |
Sets the destination registers as renamed. More... | |
bool | isPinnedRegsWritten () const |
Returns whether destination registers are written. More... | |
void | setPinnedRegsWritten () |
Sets destination registers as written. More... | |
bool | isPinnedRegsSquashDone () const |
Return whether dest registers' pinning status updated after squash. More... | |
void | setPinnedRegsSquashDone () |
Sets dest registers' status updated after squash. More... | |
const PCStateBase & | pcState () const override |
Read the PC state of this instruction. More... | |
void | pcState (const PCStateBase &val) override |
Set the PC state of this instruction. More... | |
bool | readPredicate () const override |
void | setPredicate (bool val) override |
bool | readMemAccPredicate () const override |
void | setMemAccPredicate (bool val) override |
void | setTid (ThreadID tid) |
Sets the thread id. More... | |
void | setThreadState (ThreadState *state) |
Sets the pointer to the thread state. More... | |
gem5::ThreadContext * | tcBase () const override |
Returns the thread context. More... | |
bool | strictlyOrdered () const |
Is this instruction's memory access strictly ordered? More... | |
void | strictlyOrdered (bool so) |
bool | hasRequest () const |
Has this instruction generated a memory request. More... | |
void | setRequest () |
Assert this instruction has generated a memory request. More... | |
ListIt & | getInstListIt () |
Returns iterator to this instruction in the list of all insts. More... | |
void | setInstListIt (ListIt _instListIt) |
Sets iterator for this instruction in the list of all insts. More... | |
unsigned int | readStCondFailures () const override |
Returns the number of consecutive store conditional failures. More... | |
void | setStCondFailures (unsigned int sc_failures) override |
Sets the number of consecutive store conditional failures. More... | |
void | armMonitor (Addr address) override |
bool | mwait (PacketPtr pkt) override |
void | mwaitAtomic (gem5::ThreadContext *tc) override |
AddressMonitor * | getAddrMonitor () override |
RegVal | readMiscReg (int misc_reg) override |
Reads a misc. More... | |
void | setMiscReg (int misc_reg, RegVal val) override |
Sets a misc. More... | |
RegVal | readMiscRegOperand (const StaticInst *si, int idx) override |
Reads a misc. More... | |
void | setMiscRegOperand (const StaticInst *si, int idx, RegVal val) override |
Sets a misc. More... | |
void | updateMiscRegs () |
Called at the commit stage to update the misc. More... | |
void | forwardOldRegs () |
void | trap (const Fault &fault) |
Traps to handle specified fault. More... | |
RegVal | readIntRegOperand (const StaticInst *si, int idx) override |
Reads an integer register. More... | |
RegVal | readFloatRegOperandBits (const StaticInst *si, int idx) override |
Reads a floating point register in its binary format, instead of by value. More... | |
const TheISA::VecRegContainer & | readVecRegOperand (const StaticInst *si, int idx) const override |
Vector Register Interfaces. More... | |
TheISA::VecRegContainer & | getWritableVecRegOperand (const StaticInst *si, int idx) override |
Read destination vector register operand for modification. More... | |
RegVal | readVecElemOperand (const StaticInst *si, int idx) const override |
Vector Elem Interfaces. More... | |
const TheISA::VecPredRegContainer & | readVecPredRegOperand (const StaticInst *si, int idx) const override |
Predicate registers interface. More... | |
TheISA::VecPredRegContainer & | getWritableVecPredRegOperand (const StaticInst *si, int idx) override |
Gets destination predicate register operand for modification. More... | |
RegVal | readCCRegOperand (const StaticInst *si, int idx) override |
void | setIntRegOperand (const StaticInst *si, int idx, RegVal val) override |
void | setFloatRegOperandBits (const StaticInst *si, int idx, RegVal val) override |
Sets the bits of a floating point register of single width to a binary value. More... | |
void | setVecRegOperand (const StaticInst *si, int idx, const TheISA::VecRegContainer &val) override |
Sets a destination vector register operand to a value. More... | |
void | setVecElemOperand (const StaticInst *si, int idx, RegVal val) override |
Sets a vector register to a value. More... | |
void | setVecPredRegOperand (const StaticInst *si, int idx, const TheISA::VecPredRegContainer &val) override |
Sets a destination predicate register operand to a value. More... | |
void | setCCRegOperand (const StaticInst *si, int idx, RegVal val) override |
template<typename T > | |
void | setResult (T &&t) |
Pushes a result onto the instResult queue. More... | |
![]() | |
virtual Fault | readMem (Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) |
Perform an atomic memory read operation. More... | |
virtual Fault | initiateMemRead (Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) |
Initiate a timing memory read operation. More... | |
virtual Fault | writeMem (uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable)=0 |
For atomic-mode contexts, perform an atomic memory write operation. More... | |
virtual Fault | amoMem (Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) |
For atomic-mode contexts, perform an atomic AMO (a.k.a., Atomic Read-Modify-Write Memory Operation) More... | |
virtual Fault | initiateMemAMO (Addr addr, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) |
For timing-mode contexts, initiate an atomic AMO (atomic read-modify-write memory operation) More... | |
![]() | |
RefCounted () | |
We initialize the reference count to zero and the first object to take ownership of it must increment it to one. More... | |
virtual | ~RefCounted () |
We make the destructor virtual because we're likely to have virtual functions on reference counted objects. More... | |
void | incref () const |
Increment the reference count. More... | |
void | decref () const |
Decrement the reference count and destroy the object if all references are gone. More... | |
Static Public Member Functions | |
static void * | operator new (size_t count, Arrays &arrays) |
Public Attributes | |
InstSeqNum | seqNum = 0 |
The sequence number of the instruction. More... | |
const StaticInstPtr | staticInst |
The StaticInst used by this BaseDynInst. More... | |
CPU * | cpu = nullptr |
Pointer to the Impl's CPU object. More... | |
ThreadState * | thread = nullptr |
Pointer to the thread state. More... | |
Fault | fault = NoFault |
The kind of fault this instruction has generated. More... | |
Trace::InstRecord * | traceData = nullptr |
InstRecord that tracks this instructions. More... | |
ThreadID | threadNumber = 0 |
The thread this instruction is from. More... | |
ListIt | instListIt |
Iterator pointing to this BaseDynInst in the list of all insts. More... | |
std::unique_ptr< PCStateBase > | predPC |
Predicted PC state after this instruction. More... | |
const StaticInstPtr | macroop |
The Macroop if one exists. More... | |
uint8_t | readyRegs = 0 |
How many source registers are ready. More... | |
Addr | effAddr = 0 |
The effective virtual address (lds & stores only). More... | |
Addr | physEffAddr = 0 |
The effective physical address. More... | |
unsigned | memReqFlags = 0 |
The memory request flags (from translation). More... | |
unsigned | effSize |
The size of the request. More... | |
uint8_t * | memData = nullptr |
Pointer to the data for the memory access. More... | |
ssize_t | lqIdx = -1 |
Load queue index. More... | |
LSQUnit::LQIterator | lqIt |
ssize_t | sqIdx = -1 |
Store queue index. More... | |
LSQUnit::SQIterator | sqIt |
LSQ::LSQRequest * | savedRequest |
Saved memory request (needed when the DTB address translation is delayed due to a hw page table walk). More... | |
RequestPtr | reqToVerify |
Tick | firstIssue = -1 |
Tick | lastWakeDependents = -1 |
Protected Attributes | |
std::queue< InstResult > | instResult |
The result of the instruction; assumes an instruction can have many destination registers. More... | |
std::unique_ptr< PCStateBase > | pc |
PC state for this instruction. More... | |
std::vector< RegVal > | _destMiscRegVal |
Values to be written to the destination misc. More... | |
std::vector< short > | _destMiscRegIdx |
Indexes of the destination misc. More... | |
size_t | _numSrcs |
size_t | _numDests |
RegId * | _flatDestIdx |
PhysRegIdPtr * | _destIdx |
PhysRegIdPtr * | _prevDestIdx |
PhysRegIdPtr * | _srcIdx |
uint8_t * | _readySrcIdx |
Private Member Functions | |
DynInst (const StaticInstPtr &staticInst, const StaticInstPtr ¯oop, InstSeqNum seq_num, CPU *cpu) | |
Private Attributes | |
std::bitset< MaxFlags > | instFlags |
std::bitset< NumStatus > | status |
The status of this BaseDynInst. More... | |
uint64_t | htmUid = -1 |
uint64_t | htmDepth = 0 |
Definition at line 76 of file dyn_inst.hh.
typedef std::list<DynInstPtr>::iterator gem5::o3::DynInst::ListIt |
Definition at line 84 of file dyn_inst.hh.
|
protected |
Definition at line 174 of file dyn_inst.hh.
|
protected |
Enumerator | |
---|---|
IqEntry | |
RobEntry | Instruction is in the IQ. |
LsqEntry | Instruction is in the ROB. |
Completed | Instruction is in the LSQ. |
ResultReady | Instruction has completed. |
CanIssue | Instruction has its result. |
Issued | Instruction can issue and execute. |
Executed | Instruction has issued. |
CanCommit | Instruction has executed. |
AtCommit | Instruction can commit. |
Committed | Instruction has reached commit. |
Squashed | Instruction has committed. |
SquashedInIQ | Instruction is squashed. |
SquashedInLSQ | Instruction is squashed in the IQ. |
SquashedInROB | Instruction is squashed in the LSQ. |
PinnedRegsRenamed | Instruction is squashed in the ROB. |
PinnedRegsWritten | Pinned registers are renamed. |
PinnedRegsSquashDone | Pinned registers are written back. |
RecoverInst | Regs pinning status updated after squash. |
BlockingInst | Is a recover instruction. |
ThreadsyncWait | Is a blocking instruction. |
SerializeBefore | Is a thread synchronization instruction. |
SerializeAfter | Needs to serialize on instructions ahead of it. |
SerializeHandled | Needs to serialize instructions behind it. |
NumStatus | Serialization has been handled. |
Definition at line 144 of file dyn_inst.hh.
|
private |
gem5::o3::DynInst::DynInst | ( | const Arrays & | arrays, |
const StaticInstPtr & | staticInst, | ||
const StaticInstPtr & | macroop, | ||
InstSeqNum | seq_num, | ||
CPU * | cpu | ||
) |
BaseDynInst constructor given a binary instruction.
Definition at line 56 of file dyn_inst.cc.
References _readySrcIdx, cpu, DPRINTF, gem5::o3::CPU::dumpInsts(), gem5::MipsISA::fill, gem5::o3::CPU::instcount, instFlags, MemAccPredicate, numSrcs(), Predicate, RecordResult, seqNum, and status.
gem5::o3::DynInst::DynInst | ( | const Arrays & | arrays, |
const StaticInstPtr & | staticInst, | ||
const StaticInstPtr & | macroop, | ||
const PCStateBase & | pc, | ||
const PCStateBase & | pred_pc, | ||
InstSeqNum | seq_num, | ||
CPU * | cpu | ||
) |
Definition at line 95 of file dyn_inst.cc.
gem5::o3::DynInst::DynInst | ( | const Arrays & | arrays, |
const StaticInstPtr & | _staticInst, | ||
const StaticInstPtr & | _macroop | ||
) |
BaseDynInst constructor given a static inst pointer.
Definition at line 104 of file dyn_inst.cc.
gem5::o3::DynInst::~DynInst | ( | ) |
Definition at line 190 of file dyn_inst.cc.
References _destIdx, _flatDestIdx, _numDests, _numSrcs, _prevDestIdx, _readySrcIdx, _srcIdx, cpu, gem5::StaticInst::disassemble(), DPRINTF, DPRINTFR, fault, gem5::ArmISA::i, gem5::o3::CPU::instcount, memData, gem5::NoFault, pcState(), seqNum, staticInst, traceData, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 971 of file dyn_inst.hh.
References cpu, and threadNumber.
|
inline |
Returns the branch target address.
Definition at line 672 of file dyn_inst.hh.
References gem5::StaticInst::branchTarget(), pc, and staticInst.
|
inline |
Clears this instruction as being ready to commit.
Definition at line 781 of file dyn_inst.hh.
|
inline |
Clears this instruction being able to issue.
Definition at line 760 of file dyn_inst.hh.
|
inline |
Definition at line 626 of file dyn_inst.hh.
References DPRINTF, getHtmTransactionUid(), htmDepth, HtmFromTransaction, htmUid, inHtmTransactionalState(), and instFlags.
|
inline |
Sets this instruction as a entry the IQ.
Definition at line 808 of file dyn_inst.hh.
|
inline |
Sets this instruction as a entry the ROB.
Definition at line 844 of file dyn_inst.hh.
|
inline |
Clears this instruction as being issued.
Definition at line 769 of file dyn_inst.hh.
|
inline |
Clears the serializeAfter part of this instruction.
Definition at line 652 of file dyn_inst.hh.
References SerializeAfter, and status.
|
inline |
Clears the serializeBefore part of this instruction.
Definition at line 643 of file dyn_inst.hh.
References SerializeBefore, and status.
Completes the access.
Only valid for memory operations.
Definition at line 373 of file dyn_inst.cc.
References gem5::o3::CPU::checker, gem5::StaticInst::completeAcc(), cpu, fault, isStoreConditional(), gem5::o3::ThreadState::noSquashFromTC, gem5::Packet::req, reqToVerify, staticInst, thread, and traceData.
|
inline |
Read this context's system-wide ID.
Definition at line 498 of file dyn_inst.hh.
References gem5::ThreadState::contextId(), and thread.
|
inline |
|
inlineoverridevirtual |
Invalidate a page in the DTLB and ITLB.
Implements gem5::ExecContext.
Definition at line 392 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::demapPage(), and gem5::MipsISA::vaddr.
|
inline |
Returns the logical register index of the i'th destination register.
Definition at line 701 of file dyn_inst.hh.
References gem5::StaticInst::destRegIdx(), gem5::ArmISA::i, and staticInst.
|
inline |
Checks whether or not this instruction has had its branch target calculated yet.
For now it is not utilized and is hacked to be always false.
Definition at line 511 of file dyn_inst.hh.
void gem5::o3::DynInst::dump | ( | ) |
Dumps out contents of this BaseDynInst.
Definition at line 278 of file dyn_inst.cc.
References gem5::cprintf(), gem5::StaticInst::disassemble(), pc, staticInst, and threadNumber.
void gem5::o3::DynInst::dump | ( | std::string & | outstring | ) |
Dumps out contents of this BaseDynInst into given string.
Definition at line 286 of file dyn_inst.cc.
References gem5::StaticInst::disassemble(), pc, gem5::ArmISA::s, staticInst, and threadNumber.
|
inline |
Is the effective virtual address valid.
Definition at line 374 of file dyn_inst.hh.
References EffAddrValid, and instFlags.
|
inline |
Definition at line 375 of file dyn_inst.hh.
References gem5::ArmISA::b, EffAddrValid, and instFlags.
Fault gem5::o3::DynInst::execute | ( | ) |
Executes the instruction.
Definition at line 339 of file dyn_inst.cc.
References gem5::StaticInst::execute(), fault, gem5::o3::ThreadState::noSquashFromTC, staticInst, thread, and traceData.
|
inline |
Definition at line 246 of file dyn_inst.hh.
References _flatDestIdx.
|
inline |
Definition at line 254 of file dyn_inst.hh.
References _flatDestIdx.
|
inline |
Definition at line 1086 of file dyn_inst.hh.
References gem5::CCRegClass, gem5::RegId::classValue(), cpu, gem5::StaticInst::destRegIdx(), gem5::FloatRegClass, gem5::RefCountingPtr< T >::get(), gem5::IntRegClass, gem5::MiscRegClass, numDestRegs(), panic, prevDestIdx(), gem5::o3::CPU::readCCReg(), gem5::o3::CPU::readFloatReg(), gem5::o3::CPU::readIntReg(), gem5::o3::CPU::readVecElem(), gem5::o3::CPU::readVecPredReg(), gem5::o3::CPU::readVecReg(), setCCRegOperand(), setFloatRegOperandBits(), setIntRegOperand(), setVecElemOperand(), setVecPredRegOperand(), setVecRegOperand(), staticInst, gem5::VecElemClass, gem5::VecPredRegClass, and gem5::VecRegClass.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 986 of file dyn_inst.hh.
References cpu, and threadNumber.
|
inline |
Definition at line 132 of file dyn_inst.hh.
References cpu.
|
inline |
TODO: This I added for the LSQRequest side to be able to modify the fault.
There should be a better mechanism in place.
Definition at line 504 of file dyn_inst.hh.
References fault.
|
inline |
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 609 of file dyn_inst.hh.
References htmDepth, and inHtmTransactionalState().
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 589 of file dyn_inst.hh.
References HtmFromTransaction, htmUid, and instFlags.
Referenced by clearHtmTransactionalState().
|
inline |
Returns iterator to this instruction in the list of all insts.
Definition at line 948 of file dyn_inst.hh.
References instListIt.
|
inlineoverridevirtual |
Gets destination predicate register operand for modification.
Implements gem5::ExecContext.
Definition at line 1182 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::getWritableVecPredReg(), and renamedDestIdx().
|
inlineoverridevirtual |
Read destination vector register operand for modification.
Implements gem5::ExecContext.
Definition at line 1164 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::getWritableVecReg(), and renamedDestIdx().
|
inline |
Has this instruction generated a memory request.
Definition at line 943 of file dyn_inst.hh.
|
inline |
True if the address hit a external snoop while sitting in the LSQ.
If this is true and a older instruction sees it, this instruction must reexecute
Definition at line 441 of file dyn_inst.hh.
References HitExternalSnoop, and instFlags.
|
inline |
Definition at line 442 of file dyn_inst.hh.
References gem5::ArmISA::f, HitExternalSnoop, and instFlags.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 603 of file dyn_inst.hh.
References HtmFromTransaction, and instFlags.
Referenced by clearHtmTransactionalState(), and getHtmTransactionalDepth().
Fault gem5::o3::DynInst::initiateAcc | ( | ) |
Initiates the access.
Only valid for memory operations.
Definition at line 356 of file dyn_inst.cc.
References fault, gem5::StaticInst::initiateAcc(), gem5::o3::ThreadState::noSquashFromTC, staticInst, thread, and traceData.
|
overridevirtual |
Initiate an HTM command, e.g.
tell Ruby we're starting/stopping a transaction
Implements gem5::ExecContext.
Definition at line 413 of file dyn_inst.cc.
References cpu, and gem5::o3::CPU::pushRequest().
|
override |
Definition at line 435 of file dyn_inst.cc.
References gem5::X86ISA::addr, cpu, and gem5::o3::CPU::pushRequest().
|
override |
Definition at line 402 of file dyn_inst.cc.
References gem5::X86ISA::addr, cpu, and gem5::o3::CPU::pushRequest().
|
inline |
Definition at line 788 of file dyn_inst.hh.
|
inline |
Definition at line 543 of file dyn_inst.hh.
References gem5::StaticInst::isAtomic(), and staticInst.
|
inline |
Definition at line 552 of file dyn_inst.hh.
References gem5::StaticInst::isCall(), and staticInst.
|
inline |
Returns whether or not this instruction is committed.
Definition at line 794 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is completed.
Definition at line 745 of file dyn_inst.hh.
|
inline |
Definition at line 556 of file dyn_inst.hh.
References gem5::StaticInst::isCondCtrl(), and staticInst.
|
inline |
Definition at line 551 of file dyn_inst.hh.
References gem5::StaticInst::isControl(), and staticInst.
|
inline |
Definition at line 547 of file dyn_inst.hh.
References gem5::StaticInst::isDataPrefetch(), and staticInst.
|
inline |
Definition at line 579 of file dyn_inst.hh.
References gem5::StaticInst::isDelayedCommit(), and staticInst.
|
inline |
Definition at line 554 of file dyn_inst.hh.
References gem5::StaticInst::isDirectCtrl(), and staticInst.
|
inline |
Returns whether or not this instruction has executed.
Definition at line 775 of file dyn_inst.hh.
|
inline |
Definition at line 581 of file dyn_inst.hh.
References gem5::StaticInst::isFirstMicroop(), and staticInst.
|
inline |
Definition at line 549 of file dyn_inst.hh.
References gem5::StaticInst::isFloating(), and staticInst.
|
inline |
Definition at line 570 of file dyn_inst.hh.
References gem5::StaticInst::isFullMemBarrier(), and staticInst.
|
inline |
Definition at line 585 of file dyn_inst.hh.
References gem5::StaticInst::isHtmCancel(), and staticInst.
|
inline |
Definition at line 586 of file dyn_inst.hh.
References gem5::StaticInst::isHtmCmd(), and staticInst.
|
inline |
Definition at line 583 of file dyn_inst.hh.
References gem5::StaticInst::isHtmStart(), and staticInst.
|
inline |
Definition at line 584 of file dyn_inst.hh.
References gem5::StaticInst::isHtmStop(), and staticInst.
|
inline |
Definition at line 555 of file dyn_inst.hh.
References gem5::StaticInst::isIndirectCtrl(), and staticInst.
|
inline |
Returns whether or not this instruction has issued.
Definition at line 811 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is in the LSQ.
Definition at line 829 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is in the ROB.
Definition at line 847 of file dyn_inst.hh.
|
inline |
Definition at line 546 of file dyn_inst.hh.
References gem5::StaticInst::isInstPrefetch(), and staticInst.
|
inline |
Definition at line 548 of file dyn_inst.hh.
References gem5::StaticInst::isInteger(), and staticInst.
|
inline |
Returns whether or not this instruction has issued.
Definition at line 766 of file dyn_inst.hh.
|
inline |
Definition at line 580 of file dyn_inst.hh.
References gem5::StaticInst::isLastMicroop(), and staticInst.
|
inline |
Definition at line 541 of file dyn_inst.hh.
References gem5::StaticInst::isLoad(), and staticInst.
|
inline |
Definition at line 577 of file dyn_inst.hh.
References gem5::StaticInst::isMacroop(), and staticInst.
|
inline |
Definition at line 540 of file dyn_inst.hh.
References gem5::StaticInst::isMemRef(), and staticInst.
|
inline |
Definition at line 578 of file dyn_inst.hh.
References gem5::StaticInst::isMicroop(), and staticInst.
|
inline |
Definition at line 573 of file dyn_inst.hh.
References gem5::StaticInst::isNonSpeculative(), and staticInst.
|
inline |
Definition at line 539 of file dyn_inst.hh.
References gem5::StaticInst::isNop(), and staticInst.
|
inline |
Returns whether pinned registers are renamed.
Definition at line 856 of file dyn_inst.hh.
References PinnedRegsRenamed, and status.
Referenced by setSquashed().
|
inline |
Return whether dest registers' pinning status updated after squash.
Definition at line 881 of file dyn_inst.hh.
References PinnedRegsSquashDone, and status.
Referenced by setSquashed().
|
inline |
Returns whether destination registers are written.
Definition at line 868 of file dyn_inst.hh.
References PinnedRegsWritten, and status.
Referenced by setSquashed().
|
inline |
Definition at line 574 of file dyn_inst.hh.
References gem5::StaticInst::isQuiesce(), and staticInst.
|
inline |
Definition at line 571 of file dyn_inst.hh.
References gem5::StaticInst::isReadBarrier(), and staticInst.
|
inline |
Returns whether or not the result is ready.
Definition at line 751 of file dyn_inst.hh.
References ResultReady, and status.
|
inline |
Definition at line 553 of file dyn_inst.hh.
References gem5::StaticInst::isReturn(), and staticInst.
|
inline |
Definition at line 565 of file dyn_inst.hh.
References gem5::StaticInst::isSerializeAfter(), SerializeAfter, staticInst, and status.
|
inline |
Definition at line 560 of file dyn_inst.hh.
References gem5::StaticInst::isSerializeBefore(), SerializeBefore, staticInst, and status.
|
inline |
Checks if the serialization part of this instruction has been handled.
This does not apply to the temporary serializing state; it only applies to this instruction's own permanent serializing state.
Definition at line 665 of file dyn_inst.hh.
References SerializeHandled, and status.
|
inline |
Definition at line 558 of file dyn_inst.hh.
References gem5::StaticInst::isSerializing(), and staticInst.
|
inline |
Definition at line 569 of file dyn_inst.hh.
References gem5::StaticInst::isSquashAfter(), and staticInst.
|
inline |
Returns whether or not this instruction is squashed.
Definition at line 800 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is squashed in the IQ.
Definition at line 817 of file dyn_inst.hh.
References SquashedInIQ, and status.
|
inline |
Returns whether or not this instruction is squashed in the LSQ.
Definition at line 835 of file dyn_inst.hh.
References SquashedInLSQ, and status.
|
inline |
Returns whether or not this instruction is squashed in the ROB.
Definition at line 853 of file dyn_inst.hh.
References SquashedInROB, and status.
|
inline |
Definition at line 542 of file dyn_inst.hh.
References gem5::StaticInst::isStore(), and staticInst.
|
inline |
Definition at line 544 of file dyn_inst.hh.
References gem5::StaticInst::isStoreConditional(), and staticInst.
Referenced by completeAcc().
|
inline |
Definition at line 576 of file dyn_inst.hh.
References gem5::StaticInst::isSyscall(), and staticInst.
|
inline |
Checks if this serializeAfter is only temporarily set.
Definition at line 655 of file dyn_inst.hh.
References SerializeAfter, and status.
|
inline |
Checks if this serializeBefore is only temporarily set.
Definition at line 646 of file dyn_inst.hh.
References SerializeBefore, and status.
|
inline |
Returns true if the DTB address translation is being delayed due to a hw page table walk.
Definition at line 449 of file dyn_inst.hh.
References translationCompleted(), and translationStarted().
|
inline |
Definition at line 557 of file dyn_inst.hh.
References gem5::StaticInst::isUncondCtrl(), and staticInst.
|
inline |
Definition at line 575 of file dyn_inst.hh.
References gem5::StaticInst::isUnverifiable(), and staticInst.
|
inline |
Definition at line 550 of file dyn_inst.hh.
References gem5::StaticInst::isVector(), and staticInst.
|
inline |
Definition at line 572 of file dyn_inst.hh.
References gem5::StaticInst::isWriteBarrier(), and staticInst.
void gem5::o3::DynInst::markSrcRegReady | ( | ) |
Records that one of the source registers is ready.
Definition at line 296 of file dyn_inst.cc.
References DPRINTF, numSrcRegs(), readyRegs, readyToIssue(), seqNum, and setCanIssue().
Referenced by markSrcRegReady().
void gem5::o3::DynInst::markSrcRegReady | ( | RegIndex | src_idx | ) |
Marks a specific register as ready.
Definition at line 306 of file dyn_inst.cc.
References markSrcRegReady(), and readySrcIdx().
|
inline |
Whether or not the memory operation is done.
Definition at line 378 of file dyn_inst.hh.
|
inline |
Definition at line 379 of file dyn_inst.hh.
References gem5::ArmISA::f, instFlags, and MemOpDone.
|
inline |
Returns whether the instruction mispredicted.
Definition at line 529 of file dyn_inst.hh.
References gem5::StaticInst::advancePC(), pc, predPC, and staticInst.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 976 of file dyn_inst.hh.
References cpu, and threadNumber.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 981 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::mmu, and threadNumber.
|
inlineoverridevirtual |
|
inline |
Definition at line 381 of file dyn_inst.hh.
|
inline |
Definition at line 687 of file dyn_inst.hh.
References gem5::StaticInst::numCCDestRegs(), and staticInst.
|
inline |
Returns the number of destination registers.
Definition at line 681 of file dyn_inst.hh.
References numDests().
Referenced by forwardOldRegs(), and setSquashed().
|
inline |
Definition at line 241 of file dyn_inst.hh.
References _numDests.
Referenced by numDestRegs(), and operator new().
|
inline |
Definition at line 685 of file dyn_inst.hh.
References gem5::StaticInst::numFPDestRegs(), and staticInst.
|
inline |
Definition at line 686 of file dyn_inst.hh.
References gem5::StaticInst::numIntDestRegs(), and staticInst.
|
inline |
Returns the number of source registers.
Definition at line 678 of file dyn_inst.hh.
References numSrcs().
Referenced by markSrcRegReady().
|
inline |
Definition at line 240 of file dyn_inst.hh.
References _numSrcs.
Referenced by DynInst(), and numSrcRegs().
|
inline |
Definition at line 688 of file dyn_inst.hh.
References gem5::StaticInst::numVecDestRegs(), and staticInst.
|
inline |
Definition at line 690 of file dyn_inst.hh.
References gem5::StaticInst::numVecElemDestRegs(), and staticInst.
|
inline |
Definition at line 695 of file dyn_inst.hh.
References gem5::StaticInst::numVecPredDestRegs(), and staticInst.
|
inline |
Returns the opclass of this instruction.
Definition at line 668 of file dyn_inst.hh.
References gem5::StaticInst::opClass(), and staticInst.
|
static |
Definition at line 137 of file dyn_inst.cc.
References gem5::X86ISA::count, numDests(), and gem5::roundUp().
|
inlineoverridevirtual |
Read the PC state of this instruction.
Implements gem5::ExecContext.
Definition at line 896 of file dyn_inst.hh.
References pc.
Referenced by gem5::o3::DependencyGraph< gem5::RefCountingPtr >::dump(), and ~DynInst().
|
inlineoverridevirtual |
Set the PC state of this instruction.
Implements gem5::ExecContext.
Definition at line 902 of file dyn_inst.hh.
References pc, and gem5::X86ISA::val.
|
inline |
Pops a result off the instResult queue.
If the result stack is empty, return the default value.
Definition at line 713 of file dyn_inst.hh.
References instResult, and gem5::ArmISA::t.
|
inline |
True if this address was found to match a previous load and they issued out of order.
If that happend, then it's only a problem if an incoming snoop invalidate modifies the line, in which case we need to squash. If nothing modified the line the order doesn't matter.
Definition at line 427 of file dyn_inst.hh.
References instFlags, and PossibleLoadViolation.
|
inline |
Definition at line 432 of file dyn_inst.hh.
References gem5::ArmISA::f, instFlags, and PossibleLoadViolation.
|
inline |
Definition at line 277 of file dyn_inst.hh.
References _prevDestIdx.
Referenced by forwardOldRegs(), and renameDestReg().
|
inline |
Definition at line 284 of file dyn_inst.hh.
References _prevDestIdx.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1188 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readCCReg(), and renamedSrcIdx().
|
inlineoverridevirtual |
Reads a floating point register in its binary format, instead of by value.
Implements gem5::ExecContext.
Definition at line 1149 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readFloatReg(), and renamedSrcIdx().
|
inlineoverridevirtual |
Reads an integer register.
Implements gem5::ExecContext.
Definition at line 1143 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readIntReg(), and renamedSrcIdx().
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 917 of file dyn_inst.hh.
References instFlags, and MemAccPredicate.
|
inlineoverridevirtual |
Reads a misc.
register, including any side-effects the read might have as defined by the architecture.
Implements gem5::ExecContext.
Definition at line 1019 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readMiscReg(), and threadNumber.
|
inlineoverridevirtual |
Reads a misc.
register, including any side-effects the read might have as defined by the architecture.
Implements gem5::ExecContext.
Definition at line 1049 of file dyn_inst.hh.
References cpu, gem5::MiscRegClass, gem5::o3::CPU::readMiscReg(), gem5::X86ISA::reg, gem5::ArmISA::si, and threadNumber.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 904 of file dyn_inst.hh.
|
inline |
Returns whether the instruction was predicted taken or not.
Definition at line 519 of file dyn_inst.hh.
|
inline |
Definition at line 516 of file dyn_inst.hh.
References predPC.
|
inlineoverridevirtual |
Returns the number of consecutive store conditional failures.
Implements gem5::ExecContext.
Definition at line 956 of file dyn_inst.hh.
References gem5::ThreadState::storeCondFailures, and thread.
|
inlineoverridevirtual |
Vector Elem Interfaces.
Reads an element of a vector register.
Implements gem5::ExecContext.
Definition at line 1170 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readVecElem(), and renamedSrcIdx().
|
inlineoverridevirtual |
Predicate registers interface.
Reads source predicate register operand.
Implements gem5::ExecContext.
Definition at line 1176 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readVecPredReg(), and renamedSrcIdx().
|
inlineoverridevirtual |
Vector Register Interfaces.
Reads source vector register operand.
Implements gem5::ExecContext.
Definition at line 1155 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::readVecReg(), and renamedSrcIdx().
|
inline |
Definition at line 303 of file dyn_inst.hh.
References _readySrcIdx, and gem5::bits().
Referenced by markSrcRegReady().
|
inline |
Definition at line 310 of file dyn_inst.hh.
References _readySrcIdx, and gem5::replaceBits().
|
inline |
Returns whether or not this instruction is ready to commit.
Definition at line 784 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is ready to issue.
Definition at line 757 of file dyn_inst.hh.
References CanIssue, and status.
Referenced by markSrcRegReady().
|
inline |
Records changes to result?
Definition at line 371 of file dyn_inst.hh.
References gem5::ArmISA::f, instFlags, and RecordResult.
|
inline |
Sets this instruction as a entry the LSQ.
Definition at line 826 of file dyn_inst.hh.
|
inline |
Definition at line 262 of file dyn_inst.hh.
References _destIdx.
Referenced by getWritableVecPredRegOperand(), getWritableVecRegOperand(), renameDestReg(), setCCRegOperand(), setFloatRegOperandBits(), setIntRegOperand(), setSquashed(), setVecElemOperand(), setVecPredRegOperand(), and setVecRegOperand().
|
inline |
Definition at line 269 of file dyn_inst.hh.
References _destIdx.
|
inline |
Renames a destination register to a physical register.
Also records the previous physical register that the logical register mapped to.
Definition at line 463 of file dyn_inst.hh.
References gem5::PhysRegId::isPinned(), prevDestIdx(), renamedDestIdx(), and setPinnedRegsRenamed().
|
inline |
Definition at line 291 of file dyn_inst.hh.
References _srcIdx.
Referenced by readCCRegOperand(), readFloatRegOperandBits(), readIntRegOperand(), readVecElemOperand(), readVecPredRegOperand(), readVecRegOperand(), and renameSrcReg().
|
inline |
Definition at line 297 of file dyn_inst.hh.
References _srcIdx.
|
inline |
Renames a source logical register to the physical register which has/will produce that logical register's result.
Definition at line 477 of file dyn_inst.hh.
References renamedSrcIdx().
|
inline |
|
inline |
Return the size of the instResult queue.
Definition at line 707 of file dyn_inst.hh.
References instResult.
|
inline |
Definition at line 786 of file dyn_inst.hh.
|
inline |
Sets this instruction as ready to commit.
Definition at line 778 of file dyn_inst.hh.
|
inline |
Sets this instruction as ready to issue.
Definition at line 754 of file dyn_inst.hh.
References CanIssue, and status.
Referenced by markSrcRegReady().
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1235 of file dyn_inst.hh.
References cpu, renamedDestIdx(), gem5::o3::CPU::setCCReg(), setResult(), and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inline |
Sets this instruction as committed.
Definition at line 791 of file dyn_inst.hh.
|
inline |
Sets this instruction as completed.
Definition at line 742 of file dyn_inst.hh.
|
inline |
Sets this instruction as executed.
Definition at line 772 of file dyn_inst.hh.
|
inlineoverridevirtual |
Sets the bits of a floating point register of single width to a binary value.
Implements gem5::ExecContext.
Definition at line 1204 of file dyn_inst.hh.
References cpu, renamedDestIdx(), gem5::o3::CPU::setFloatReg(), setResult(), and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inline |
Definition at line 618 of file dyn_inst.hh.
References htmDepth, HtmFromTransaction, htmUid, and instFlags.
|
inline |
Sets this instruction as a entry the IQ.
Definition at line 805 of file dyn_inst.hh.
|
inline |
Sets this instruction as a entry the LSQ.
Definition at line 823 of file dyn_inst.hh.
|
inline |
Sets this instruction as a entry the ROB.
Definition at line 841 of file dyn_inst.hh.
|
inline |
Sets iterator for this instruction in the list of all insts.
Definition at line 951 of file dyn_inst.hh.
References instListIt.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1197 of file dyn_inst.hh.
References cpu, renamedDestIdx(), gem5::o3::CPU::setIntReg(), setResult(), and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inline |
Sets this instruction as issued from the IQ.
Definition at line 763 of file dyn_inst.hh.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 923 of file dyn_inst.hh.
References instFlags, MemAccPredicate, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Sets a misc.
register, including any side-effects the write might have as defined by the architecture.
Writes to misc. registers are recorded and deferred until the commit stage, when updateMiscRegs() is called. First, check if the misc reg has been written before and update its value to be committed instead of making a new entry. If not, make a new entry and record the write.
Implements gem5::ExecContext.
Definition at line 1028 of file dyn_inst.hh.
References _destMiscRegIdx, _destMiscRegVal, and gem5::X86ISA::val.
Referenced by setMiscRegOperand().
|
inlineoverridevirtual |
Sets a misc.
register, including any side-effects the write might have as defined by the architecture.
Implements gem5::ExecContext.
Definition at line 1060 of file dyn_inst.hh.
References gem5::MiscRegClass, gem5::X86ISA::reg, setMiscReg(), gem5::ArmISA::si, and gem5::X86ISA::val.
|
inline |
Definition at line 382 of file dyn_inst.hh.
|
inline |
Sets the destination registers as renamed.
Definition at line 860 of file dyn_inst.hh.
References PinnedRegsRenamed, PinnedRegsSquashDone, PinnedRegsWritten, and status.
Referenced by renameDestReg().
|
inline |
Sets dest registers' status updated after squash.
Definition at line 888 of file dyn_inst.hh.
References PinnedRegsSquashDone, and status.
Referenced by setSquashed().
|
inline |
Sets destination registers as written.
Definition at line 872 of file dyn_inst.hh.
References PinnedRegsRenamed, PinnedRegsSquashDone, PinnedRegsWritten, and status.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 907 of file dyn_inst.hh.
References instFlags, Predicate, gem5::Trace::InstRecord::setPredicate(), traceData, and gem5::X86ISA::val.
|
inline |
Definition at line 522 of file dyn_inst.hh.
|
inline |
Set the predicted target of this current instruction.
Definition at line 514 of file dyn_inst.hh.
References predPC.
|
inline |
Assert this instruction has generated a memory request.
Definition at line 945 of file dyn_inst.hh.
|
inline |
Pushes a result onto the instResult queue.
Definition at line 727 of file dyn_inst.hh.
References instFlags, instResult, RecordResult, and gem5::ArmISA::t.
Referenced by setCCRegOperand(), setFloatRegOperandBits(), setIntRegOperand(), setVecElemOperand(), setVecPredRegOperand(), and setVecRegOperand().
|
inline |
Marks the result as ready.
Definition at line 748 of file dyn_inst.hh.
References ResultReady, and status.
|
inline |
Temporarily sets this instruction as a serialize after instruction.
Definition at line 649 of file dyn_inst.hh.
References SerializeAfter, and status.
|
inline |
Temporarily sets this instruction as a serialize before instruction.
Definition at line 640 of file dyn_inst.hh.
References SerializeBefore, and status.
|
inline |
Sets the serialization part of this instruction as handled.
Definition at line 658 of file dyn_inst.hh.
References SerializeHandled, and status.
void gem5::o3::DynInst::setSquashed | ( | ) |
Sets this instruction as squashed.
Definition at line 314 of file dyn_inst.cc.
References gem5::PhysRegId::incrNumPinnedWrites(), gem5::PhysRegId::incrNumPinnedWritesToComplete(), gem5::PhysRegId::isPinned(), isPinnedRegsRenamed(), isPinnedRegsSquashDone(), isPinnedRegsWritten(), numDestRegs(), renamedDestIdx(), setPinnedRegsSquashDone(), Squashed, and status.
|
inline |
Sets this instruction as squashed in the IQ.
Definition at line 814 of file dyn_inst.hh.
References Squashed, SquashedInIQ, and status.
|
inline |
Sets this instruction as squashed in the LSQ.
Definition at line 832 of file dyn_inst.hh.
References Squashed, SquashedInLSQ, and status.
|
inline |
Sets this instruction as squashed in the ROB.
Definition at line 850 of file dyn_inst.hh.
References SquashedInROB, and status.
|
inlineoverridevirtual |
Sets the number of consecutive store conditional failures.
Implements gem5::ExecContext.
Definition at line 963 of file dyn_inst.hh.
References gem5::ThreadState::storeCondFailures, and thread.
|
inline |
Sets the pointer to the thread state.
Definition at line 932 of file dyn_inst.hh.
References thread.
|
inline |
|
inlineoverridevirtual |
Sets a vector register to a value.
Implements gem5::ExecContext.
Definition at line 1219 of file dyn_inst.hh.
References cpu, renamedDestIdx(), setResult(), gem5::o3::CPU::setVecElem(), and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inlineoverridevirtual |
Sets a destination predicate register operand to a value.
Implements gem5::ExecContext.
Definition at line 1227 of file dyn_inst.hh.
References cpu, renamedDestIdx(), setResult(), gem5::o3::CPU::setVecPredReg(), and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inlineoverridevirtual |
Sets a destination vector register operand to a value.
Implements gem5::ExecContext.
Definition at line 1211 of file dyn_inst.hh.
References cpu, renamedDestIdx(), setResult(), gem5::o3::CPU::setVecReg(), and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inline |
|
inline |
Returns the logical register index of the i'th source register.
Definition at line 704 of file dyn_inst.hh.
References gem5::ArmISA::i, gem5::StaticInst::srcRegIdx(), and staticInst.
|
inline |
Is this instruction's memory access strictly ordered?
Definition at line 939 of file dyn_inst.hh.
References instFlags, and IsStrictlyOrdered.
|
inline |
Definition at line 940 of file dyn_inst.hh.
References instFlags, IsStrictlyOrdered, and gem5::PowerISA::so.
|
inlineoverridevirtual |
Returns the thread context.
Implements gem5::ExecContext.
Definition at line 935 of file dyn_inst.hh.
References gem5::o3::ThreadState::getTC(), and thread.
|
inline |
True if the DTB address translation has completed.
Definition at line 415 of file dyn_inst.hh.
References instFlags, and TranslationCompleted.
Referenced by isTranslationDelayed().
|
inline |
Definition at line 419 of file dyn_inst.hh.
References gem5::ArmISA::f, instFlags, and TranslationCompleted.
|
inline |
True if the DTB address translation has started.
Definition at line 410 of file dyn_inst.hh.
References instFlags, and TranslationStarted.
Referenced by isTranslationDelayed().
|
inline |
Definition at line 411 of file dyn_inst.hh.
References gem5::ArmISA::f, instFlags, and TranslationStarted.
void gem5::o3::DynInst::trap | ( | const Fault & | fault | ) |
Traps to handle specified fault.
Definition at line 396 of file dyn_inst.cc.
References cpu, fault, staticInst, threadNumber, and gem5::o3::CPU::trap().
|
inline |
Called at the commit stage to update the misc.
registers.
Definition at line 1069 of file dyn_inst.hh.
References _destMiscRegIdx, _destMiscRegVal, cpu, gem5::ArmISA::i, gem5::o3::ThreadState::noSquashFromTC, gem5::o3::CPU::setMiscReg(), thread, and threadNumber.
|
override |
Definition at line 423 of file dyn_inst.cc.
References gem5::X86ISA::addr, cpu, data, and gem5::o3::CPU::pushRequest().
|
protected |
Definition at line 227 of file dyn_inst.hh.
Referenced by renamedDestIdx(), and ~DynInst().
|
protected |
Indexes of the destination misc.
registers. They are needed to defer the write accesses to the misc. registers until the commit stage, when the instruction is out of its speculative state.
Definition at line 216 of file dyn_inst.hh.
Referenced by setMiscReg(), and updateMiscRegs().
|
protected |
Values to be written to the destination misc.
registers.
Definition at line 210 of file dyn_inst.hh.
Referenced by setMiscReg(), and updateMiscRegs().
|
protected |
Definition at line 223 of file dyn_inst.hh.
Referenced by flattenedDestIdx(), and ~DynInst().
|
protected |
Definition at line 219 of file dyn_inst.hh.
Referenced by numDests(), and ~DynInst().
|
protected |
Definition at line 218 of file dyn_inst.hh.
Referenced by numSrcs(), and ~DynInst().
|
protected |
Definition at line 231 of file dyn_inst.hh.
Referenced by prevDestIdx(), and ~DynInst().
|
protected |
Definition at line 237 of file dyn_inst.hh.
Referenced by DynInst(), readySrcIdx(), and ~DynInst().
|
protected |
Definition at line 234 of file dyn_inst.hh.
Referenced by renamedSrcIdx(), and ~DynInst().
CPU* gem5::o3::DynInst::cpu = nullptr |
Pointer to the Impl's CPU object.
Definition at line 130 of file dyn_inst.hh.
Referenced by armMonitor(), completeAcc(), cpuId(), demapPage(), DynInst(), forwardOldRegs(), getAddrMonitor(), getCpuPtr(), getWritableVecPredRegOperand(), getWritableVecRegOperand(), initiateHtmCmd(), initiateMemAMO(), initiateMemRead(), mwait(), mwaitAtomic(), readCCRegOperand(), readFloatRegOperandBits(), readIntRegOperand(), readMiscReg(), readMiscRegOperand(), readVecElemOperand(), readVecPredRegOperand(), readVecRegOperand(), requestorId(), setCCRegOperand(), setFloatRegOperandBits(), setIntRegOperand(), setVecElemOperand(), setVecPredRegOperand(), setVecRegOperand(), socketId(), trap(), updateMiscRegs(), writeMem(), and ~DynInst().
Addr gem5::o3::DynInst::effAddr = 0 |
The effective virtual address (lds & stores only).
Definition at line 335 of file dyn_inst.hh.
unsigned gem5::o3::DynInst::effSize |
The size of the request.
Definition at line 344 of file dyn_inst.hh.
The kind of fault this instruction has generated.
Definition at line 138 of file dyn_inst.hh.
Referenced by completeAcc(), execute(), getFault(), initiateAcc(), trap(), and ~DynInst().
Tick gem5::o3::DynInst::firstIssue = -1 |
Definition at line 1012 of file dyn_inst.hh.
|
private |
Definition at line 994 of file dyn_inst.hh.
Referenced by clearHtmTransactionalState(), getHtmTransactionalDepth(), and setHtmTransactionalState().
|
private |
Definition at line 993 of file dyn_inst.hh.
Referenced by clearHtmTransactionalState(), getHtmTransactionUid(), and setHtmTransactionalState().
|
private |
Definition at line 195 of file dyn_inst.hh.
Referenced by clearHtmTransactionalState(), DynInst(), effAddrValid(), getHtmTransactionUid(), hasRequest(), hitExternalSnoop(), inHtmTransactionalState(), memOpDone(), notAnInst(), possibleLoadViolation(), readMemAccPredicate(), readPredicate(), readPredTaken(), recordResult(), setHtmTransactionalState(), setMemAccPredicate(), setNotAnInst(), setPredicate(), setPredTaken(), setRequest(), setResult(), strictlyOrdered(), translationCompleted(), and translationStarted().
ListIt gem5::o3::DynInst::instListIt |
Iterator pointing to this BaseDynInst in the list of all insts.
Definition at line 320 of file dyn_inst.hh.
Referenced by getInstListIt(), and setInstListIt().
|
protected |
The result of the instruction; assumes an instruction can have many destination registers.
Definition at line 204 of file dyn_inst.hh.
Referenced by popResult(), resultSize(), and setResult().
Tick gem5::o3::DynInst::lastWakeDependents = -1 |
Definition at line 1013 of file dyn_inst.hh.
ssize_t gem5::o3::DynInst::lqIdx = -1 |
Load queue index.
Definition at line 350 of file dyn_inst.hh.
LSQUnit::LQIterator gem5::o3::DynInst::lqIt |
Definition at line 351 of file dyn_inst.hh.
const StaticInstPtr gem5::o3::DynInst::macroop |
The Macroop if one exists.
Definition at line 327 of file dyn_inst.hh.
uint8_t* gem5::o3::DynInst::memData = nullptr |
Pointer to the data for the memory access.
Definition at line 347 of file dyn_inst.hh.
Referenced by ~DynInst().
unsigned gem5::o3::DynInst::memReqFlags = 0 |
The memory request flags (from translation).
Definition at line 341 of file dyn_inst.hh.
|
protected |
PC state for this instruction.
Definition at line 207 of file dyn_inst.hh.
Referenced by branchTarget(), dump(), DynInst(), mispredicted(), and pcState().
Addr gem5::o3::DynInst::physEffAddr = 0 |
The effective physical address.
Definition at line 338 of file dyn_inst.hh.
std::unique_ptr<PCStateBase> gem5::o3::DynInst::predPC |
Predicted PC state after this instruction.
Definition at line 324 of file dyn_inst.hh.
Referenced by DynInst(), mispredicted(), readPredTarg(), and setPredTarg().
uint8_t gem5::o3::DynInst::readyRegs = 0 |
How many source registers are ready.
Definition at line 330 of file dyn_inst.hh.
Referenced by markSrcRegReady().
RequestPtr gem5::o3::DynInst::reqToVerify |
Definition at line 367 of file dyn_inst.hh.
Referenced by completeAcc().
LSQ::LSQRequest* gem5::o3::DynInst::savedRequest |
Saved memory request (needed when the DTB address translation is delayed due to a hw page table walk).
Definition at line 363 of file dyn_inst.hh.
InstSeqNum gem5::o3::DynInst::seqNum = 0 |
The sequence number of the instruction.
Definition at line 124 of file dyn_inst.hh.
Referenced by gem5::o3::DependencyGraph< gem5::RefCountingPtr >::dump(), DynInst(), markSrcRegReady(), and ~DynInst().
ssize_t gem5::o3::DynInst::sqIdx = -1 |
Store queue index.
Definition at line 354 of file dyn_inst.hh.
LSQUnit::SQIterator gem5::o3::DynInst::sqIt |
Definition at line 355 of file dyn_inst.hh.
const StaticInstPtr gem5::o3::DynInst::staticInst |
The StaticInst used by this BaseDynInst.
Definition at line 127 of file dyn_inst.hh.
Referenced by branchTarget(), completeAcc(), destRegIdx(), dump(), execute(), forwardOldRegs(), initiateAcc(), isAtomic(), isCall(), isCondCtrl(), isControl(), isDataPrefetch(), isDelayedCommit(), isDirectCtrl(), isFirstMicroop(), isFloating(), isFullMemBarrier(), isHtmCancel(), isHtmCmd(), isHtmStart(), isHtmStop(), isIndirectCtrl(), isInstPrefetch(), isInteger(), isLastMicroop(), isLoad(), isMacroop(), isMemRef(), isMicroop(), isNonSpeculative(), isNop(), isQuiesce(), isReadBarrier(), isReturn(), isSerializeAfter(), isSerializeBefore(), isSerializing(), isSquashAfter(), isStore(), isStoreConditional(), isSyscall(), isUncondCtrl(), isUnverifiable(), isVector(), isWriteBarrier(), mispredicted(), numCCDestRegs(), numFPDestRegs(), numIntDestRegs(), numVecDestRegs(), numVecElemDestRegs(), numVecPredDestRegs(), opClass(), srcRegIdx(), trap(), and ~DynInst().
|
private |
The status of this BaseDynInst.
Several bits can be set.
Definition at line 198 of file dyn_inst.hh.
Referenced by clearCanCommit(), clearCanIssue(), clearInIQ(), clearInROB(), clearIssued(), clearSerializeAfter(), clearSerializeBefore(), DynInst(), isAtCommit(), isCommitted(), isCompleted(), isExecuted(), isInIQ(), isInLSQ(), isInROB(), isIssued(), isPinnedRegsRenamed(), isPinnedRegsSquashDone(), isPinnedRegsWritten(), isResultReady(), isSerializeAfter(), isSerializeBefore(), isSerializeHandled(), isSquashed(), isSquashedInIQ(), isSquashedInLSQ(), isSquashedInROB(), isTempSerializeAfter(), isTempSerializeBefore(), readyToCommit(), readyToIssue(), removeInLSQ(), setAtCommit(), setCanCommit(), setCanIssue(), setCommitted(), setCompleted(), setExecuted(), setInIQ(), setInLSQ(), setInROB(), setIssued(), setPinnedRegsRenamed(), setPinnedRegsSquashDone(), setPinnedRegsWritten(), setResultReady(), setSerializeAfter(), setSerializeBefore(), setSerializeHandled(), setSquashed(), setSquashedInIQ(), setSquashedInLSQ(), and setSquashedInROB().
ThreadState* gem5::o3::DynInst::thread = nullptr |
Pointer to the thread state.
Definition at line 135 of file dyn_inst.hh.
Referenced by completeAcc(), contextId(), execute(), initiateAcc(), readStCondFailures(), setStCondFailures(), setThreadState(), tcBase(), and updateMiscRegs().
ThreadID gem5::o3::DynInst::threadNumber = 0 |
The thread this instruction is from.
Definition at line 317 of file dyn_inst.hh.
Referenced by armMonitor(), dump(), getAddrMonitor(), mwait(), mwaitAtomic(), readMiscReg(), readMiscRegOperand(), setTid(), trap(), and updateMiscRegs().
Trace::InstRecord* gem5::o3::DynInst::traceData = nullptr |
InstRecord that tracks this instructions.
Definition at line 141 of file dyn_inst.hh.
Referenced by completeAcc(), execute(), initiateAcc(), setPredicate(), and ~DynInst().