gem5 v24.0.0.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. | |
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. | |
~DynInst () | |
Fault | execute () |
Executes the instruction. | |
Fault | initiateAcc () |
Initiates the access. | |
Fault | completeAcc (PacketPtr pkt) |
Completes the access. | |
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? | |
bool | effAddrValid () const |
Is the effective virtual address valid. | |
void | effAddrValid (bool b) |
bool | memOpDone () const |
Whether or not the memory operation is done. | |
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. | |
Fault | initiateMemRead (Addr addr, unsigned size, Request::Flags flags, const std::vector< bool > &byte_enable) override |
Fault | initiateMemMgmtCmd (Request::Flags flags) override |
Initiate a memory management command with no valid address. | |
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. | |
void | translationStarted (bool f) |
bool | translationCompleted () const |
True if the DTB address translation has completed. | |
void | translationCompleted (bool f) |
bool | possibleLoadViolation () const |
True if this address was found to match a previous load and they issued out of order. | |
void | possibleLoadViolation (bool f) |
bool | hitExternalSnoop () const |
True if the address hit a external snoop while sitting in the LSQ. | |
void | hitExternalSnoop (bool f) |
bool | isTranslationDelayed () const |
Returns true if the DTB address translation is being delayed due to a hw page table walk. | |
void | renameDestReg (int idx, PhysRegIdPtr renamed_dest, PhysRegIdPtr previous_rename) |
Renames a destination register to a physical register. | |
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. | |
void | dump () |
Dumps out contents of this BaseDynInst. | |
void | dump (std::string &outstring) |
Dumps out contents of this BaseDynInst into given string. | |
int | cpuId () const |
Read this CPU's ID. | |
uint32_t | socketId () const |
Read this CPU's Socket ID. | |
RequestorID | requestorId () const |
Read this CPU's data requestor ID. | |
ContextID | contextId () const |
Read this context's system-wide ID. | |
Fault | getFault () const |
Returns the fault type. | |
Fault & | getFault () |
TODO: This I added for the LSQRequest side to be able to modify the fault. | |
bool | doneTargCalc () |
Checks whether or not this instruction has had its branch target calculated yet. | |
void | setPredTarg (const PCStateBase &pred_pc) |
Set the predicted target of this current instruction. | |
const PCStateBase & | readPredTarg () |
bool | readPredTaken () |
Returns whether the instruction was predicted taken or not. | |
void | setPredTaken (bool predicted_taken) |
bool | mispredicted () |
Returns whether the instruction mispredicted. | |
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. | |
void | clearSerializeBefore () |
Clears the serializeBefore part of this instruction. | |
bool | isTempSerializeBefore () |
Checks if this serializeBefore is only temporarily set. | |
void | setSerializeAfter () |
Temporarily sets this instruction as a serialize after instruction. | |
void | clearSerializeAfter () |
Clears the serializeAfter part of this instruction. | |
bool | isTempSerializeAfter () |
Checks if this serializeAfter is only temporarily set. | |
void | setSerializeHandled () |
Sets the serialization part of this instruction as handled. | |
bool | isSerializeHandled () |
Checks if the serialization part of this instruction has been handled. | |
OpClass | opClass () const |
Returns the opclass of this instruction. | |
std::unique_ptr< PCStateBase > | branchTarget () const |
Returns the branch target address. | |
size_t | numSrcRegs () const |
Returns the number of source registers. | |
size_t | numDestRegs () const |
Returns the number of destination registers. | |
size_t | numDestRegs (RegClassType type) const |
const RegId & | destRegIdx (int i) const |
Returns the logical register index of the i'th destination register. | |
const RegId & | srcRegIdx (int i) const |
Returns the logical register index of the i'th source register. | |
uint8_t | resultSize () |
Return the size of the instResult queue. | |
InstResult | popResult (InstResult dflt=InstResult()) |
Pops a result off the instResult queue. | |
void | markSrcRegReady () |
Records that one of the source registers is ready. | |
void | markSrcRegReady (RegIndex src_idx) |
Marks a specific register as ready. | |
void | setCompleted () |
Sets this instruction as completed. | |
bool | isCompleted () const |
Returns whether or not this instruction is completed. | |
void | setResultReady () |
Marks the result as ready. | |
bool | isResultReady () const |
Returns whether or not the result is ready. | |
void | setCanIssue () |
Sets this instruction as ready to issue. | |
bool | readyToIssue () const |
Returns whether or not this instruction is ready to issue. | |
void | clearCanIssue () |
Clears this instruction being able to issue. | |
void | setIssued () |
Sets this instruction as issued from the IQ. | |
bool | isIssued () const |
Returns whether or not this instruction has issued. | |
void | clearIssued () |
Clears this instruction as being issued. | |
void | setExecuted () |
Sets this instruction as executed. | |
bool | isExecuted () const |
Returns whether or not this instruction has executed. | |
void | setCanCommit () |
Sets this instruction as ready to commit. | |
void | clearCanCommit () |
Clears this instruction as being ready to commit. | |
bool | readyToCommit () const |
Returns whether or not this instruction is ready to commit. | |
void | setAtCommit () |
bool | isAtCommit () |
void | setCommitted () |
Sets this instruction as committed. | |
bool | isCommitted () const |
Returns whether or not this instruction is committed. | |
void | setSquashed () |
Sets this instruction as squashed. | |
bool | isSquashed () const |
Returns whether or not this instruction is squashed. | |
void | setInIQ () |
Sets this instruction as a entry the IQ. | |
void | clearInIQ () |
Sets this instruction as a entry the IQ. | |
bool | isInIQ () const |
Returns whether or not this instruction has issued. | |
void | setSquashedInIQ () |
Sets this instruction as squashed in the IQ. | |
bool | isSquashedInIQ () const |
Returns whether or not this instruction is squashed in the IQ. | |
void | setInLSQ () |
Sets this instruction as a entry the LSQ. | |
void | removeInLSQ () |
Sets this instruction as a entry the LSQ. | |
bool | isInLSQ () const |
Returns whether or not this instruction is in the LSQ. | |
void | setSquashedInLSQ () |
Sets this instruction as squashed in the LSQ. | |
bool | isSquashedInLSQ () const |
Returns whether or not this instruction is squashed in the LSQ. | |
void | setInROB () |
Sets this instruction as a entry the ROB. | |
void | clearInROB () |
Sets this instruction as a entry the ROB. | |
bool | isInROB () const |
Returns whether or not this instruction is in the ROB. | |
void | setSquashedInROB () |
Sets this instruction as squashed in the ROB. | |
bool | isSquashedInROB () const |
Returns whether or not this instruction is squashed in the ROB. | |
bool | isPinnedRegsRenamed () const |
Returns whether pinned registers are renamed. | |
void | setPinnedRegsRenamed () |
Sets the destination registers as renamed. | |
bool | isPinnedRegsWritten () const |
Returns whether destination registers are written. | |
void | setPinnedRegsWritten () |
Sets destination registers as written. | |
bool | isPinnedRegsSquashDone () const |
Return whether dest registers' pinning status updated after squash. | |
void | setPinnedRegsSquashDone () |
Sets dest registers' status updated after squash. | |
const PCStateBase & | pcState () const override |
Read the PC state of this instruction. | |
void | pcState (const PCStateBase &val) override |
Set the PC state of this instruction. | |
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. | |
void | setThreadState (ThreadState *state) |
Sets the pointer to the thread state. | |
gem5::ThreadContext * | tcBase () const override |
Returns the thread context. | |
bool | strictlyOrdered () const |
Is this instruction's memory access strictly ordered? | |
void | strictlyOrdered (bool so) |
bool | hasRequest () const |
Has this instruction generated a memory request. | |
void | setRequest () |
Assert this instruction has generated a memory request. | |
ListIt & | getInstListIt () |
Returns iterator to this instruction in the list of all insts. | |
void | setInstListIt (ListIt _instListIt) |
Sets iterator for this instruction in the list of all insts. | |
unsigned int | readStCondFailures () const override |
Returns the number of consecutive store conditional failures. | |
void | setStCondFailures (unsigned int sc_failures) override |
Sets the number of consecutive store conditional failures. | |
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. | |
void | setMiscReg (int misc_reg, RegVal val) override |
Sets a misc. | |
RegVal | readMiscRegOperand (const StaticInst *si, int idx) override |
Reads a misc. | |
void | setMiscRegOperand (const StaticInst *si, int idx, RegVal val) override |
Sets a misc. | |
void | updateMiscRegs () |
Called at the commit stage to update the misc. | |
void | forwardOldRegs () |
void | trap (const Fault &fault) |
Traps to handle specified fault. | |
RegVal | getRegOperand (const StaticInst *si, int idx) override |
void | getRegOperand (const StaticInst *si, int idx, void *val) override |
void * | getWritableRegOperand (const StaticInst *si, int idx) override |
void | setRegOperand (const StaticInst *si, int idx, RegVal val) override |
void | setRegOperand (const StaticInst *si, int idx, const void *val) override |
template<typename T > | |
void | setResult (const RegClass ®_class, T &&t) |
Pushes a result onto the instResult queue. | |
Public Member Functions inherited from gem5::ExecContext | |
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. | |
virtual Fault | initiateMemRead (Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) |
Initiate a timing memory read operation. | |
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. | |
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) | |
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) | |
Public Member Functions inherited from gem5::RefCounted | |
RefCounted () | |
We initialize the reference count to zero and the first object to take ownership of it must increment it to one. | |
virtual | ~RefCounted () |
We make the destructor virtual because we're likely to have virtual functions on reference counted objects. | |
void | incref () const |
Increment the reference count. | |
void | decref () const |
Decrement the reference count and destroy the object if all references are gone. | |
Static Public Member Functions | |
static void * | operator new (size_t count, Arrays &arrays) |
static void | operator delete (void *ptr) |
Public Attributes | |
InstSeqNum | seqNum = 0 |
The sequence number of the instruction. | |
const StaticInstPtr | staticInst |
The StaticInst used by this BaseDynInst. | |
CPU * | cpu = nullptr |
Pointer to the Impl's CPU object. | |
ThreadState * | thread = nullptr |
Pointer to the thread state. | |
Fault | fault = NoFault |
The kind of fault this instruction has generated. | |
trace::InstRecord * | traceData = nullptr |
InstRecord that tracks this instructions. | |
ThreadID | threadNumber = 0 |
The thread this instruction is from. | |
ListIt | instListIt |
Iterator pointing to this BaseDynInst in the list of all insts. | |
std::unique_ptr< PCStateBase > | predPC |
Predicted PC state after this instruction. | |
const StaticInstPtr | macroop |
The Macroop if one exists. | |
uint8_t | readyRegs = 0 |
How many source registers are ready. | |
Addr | effAddr = 0 |
The effective virtual address (lds & stores only). | |
Addr | physEffAddr = 0 |
The effective physical address. | |
unsigned | memReqFlags = 0 |
The memory request flags (from translation). | |
unsigned | effSize |
The size of the request. | |
uint8_t * | memData = nullptr |
Pointer to the data for the memory access. | |
ssize_t | lqIdx = -1 |
Load queue index. | |
LSQUnit::LQIterator | lqIt |
ssize_t | sqIdx = -1 |
Store queue index. | |
LSQUnit::SQIterator | sqIt |
LSQ::LSQRequest * | savedRequest |
Saved memory request (needed when the DTB address translation is delayed due to a hw page table walk). | |
RequestPtr | reqToVerify |
Tick | firstIssue = -1 |
Tick | lastWakeDependents = -1 |
Protected Types | |
enum | Status { IqEntry , RobEntry , LsqEntry , Completed , ResultReady , CanIssue , Issued , Executed , CanCommit , AtCommit , Committed , Squashed , SquashedInIQ , SquashedInLSQ , SquashedInROB , PinnedRegsRenamed , PinnedRegsWritten , PinnedRegsSquashDone , RecoverInst , BlockingInst , ThreadsyncWait , SerializeBefore , SerializeAfter , SerializeHandled , NumStatus } |
enum | Flags { NotAnInst , TranslationStarted , TranslationCompleted , PossibleLoadViolation , HitExternalSnoop , EffAddrValid , RecordResult , Predicate , MemAccPredicate , PredTaken , IsStrictlyOrdered , ReqMade , MemOpDone , HtmFromTransaction , MaxFlags } |
Protected Attributes | |
std::queue< InstResult > | instResult |
The result of the instruction; assumes an instruction can have many destination registers. | |
std::unique_ptr< PCStateBase > | pc |
PC state for this instruction. | |
std::vector< RegVal > | _destMiscRegVal |
Values to be written to the destination misc. | |
std::vector< short > | _destMiscRegIdx |
Indexes of the destination misc. | |
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. | |
uint64_t | htmUid = -1 |
uint64_t | htmDepth = 0 |
Definition at line 75 of file dyn_inst.hh.
typedef std::list<DynInstPtr>::iterator gem5::o3::DynInst::ListIt |
Definition at line 83 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::o3::CPU::instcount, instFlags, MemAccPredicate, gem5::Named::name(), 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.
References pc, predPC, and gem5::ArmISA::set.
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 199 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::Named::name(), gem5::NoFault, pcState(), seqNum, staticInst, traceData, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 960 of file dyn_inst.hh.
References gem5::BaseCPU::armMonitor(), 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 770 of file dyn_inst.hh.
|
inline |
Clears this instruction being able to issue.
Definition at line 749 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 797 of file dyn_inst.hh.
|
inline |
Sets this instruction as a entry the ROB.
Definition at line 833 of file dyn_inst.hh.
|
inline |
Clears this instruction as being issued.
Definition at line 758 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 382 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 |
Read this CPU's ID.
Definition at line 489 of file dyn_inst.hh.
References cpu, and gem5::BaseCPU::cpuId().
|
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 690 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 287 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 295 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 348 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 1075 of file dyn_inst.hh.
References cpu, gem5::StaticInst::destRegIdx(), gem5::RefCountingPtr< T >::get(), gem5::o3::CPU::getReg(), gem5::RegId::isRenameable(), numDestRegs(), prevDestIdx(), gem5::RegClass::regBytes(), gem5::RegId::regClass(), setRegOperand(), staticInst, threadNumber, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 975 of file dyn_inst.hh.
References cpu, gem5::BaseCPU::getCpuAddrMonitor(), 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 937 of file dyn_inst.hh.
References instListIt.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1114 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::getReg(), gem5::InvalidRegClass, gem5::X86ISA::reg, renamedSrcIdx(), and threadNumber.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1123 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::getReg(), gem5::InvalidRegClass, gem5::X86ISA::reg, renamedSrcIdx(), threadNumber, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1132 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::getWritableReg(), renamedDestIdx(), and threadNumber.
|
inline |
Has this instruction generated a memory request.
Definition at line 932 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 365 of file dyn_inst.cc.
References fault, gem5::StaticInst::initiateAcc(), gem5::o3::ThreadState::noSquashFromTC, staticInst, thread, and traceData.
|
override |
Definition at line 444 of file dyn_inst.cc.
References gem5::X86ISA::addr, cpu, flags, and gem5::o3::CPU::pushRequest().
|
overridevirtual |
Initiate a memory management command with no valid address.
Currently, these instructions need to bypass squashing in the O3 model Examples include HTM commands and TLBI commands. e.g. tell Ruby we're starting/stopping a HTM transaction, or tell Ruby to issue a TLBI operation
Implements gem5::ExecContext.
Definition at line 422 of file dyn_inst.cc.
References cpu, flags, and gem5::o3::CPU::pushRequest().
|
override |
Definition at line 411 of file dyn_inst.cc.
References gem5::X86ISA::addr, cpu, flags, and gem5::o3::CPU::pushRequest().
|
inline |
Definition at line 777 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 783 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is completed.
Definition at line 734 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 764 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 800 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is in the LSQ.
Definition at line 818 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is in the ROB.
Definition at line 836 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 755 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 845 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 870 of file dyn_inst.hh.
References PinnedRegsSquashDone, and status.
Referenced by setSquashed().
|
inline |
Returns whether destination registers are written.
Definition at line 857 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 740 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 789 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is squashed in the IQ.
Definition at line 806 of file dyn_inst.hh.
References SquashedInIQ, and status.
|
inline |
Returns whether or not this instruction is squashed in the LSQ.
Definition at line 824 of file dyn_inst.hh.
References SquashedInLSQ, and status.
|
inline |
Returns whether or not this instruction is squashed in the ROB.
Definition at line 842 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 305 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 315 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 965 of file dyn_inst.hh.
References cpu, gem5::BaseCPU::mwait(), and threadNumber.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 970 of file dyn_inst.hh.
References cpu, gem5::o3::CPU::mmu, gem5::BaseCPU::mwaitAtomic(), and threadNumber.
|
inlineoverridevirtual |
|
inline |
Definition at line 381 of file dyn_inst.hh.
|
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 684 of file dyn_inst.hh.
References gem5::StaticInst::numDestRegs(), staticInst, and gem5::X86ISA::type.
|
inline |
Definition at line 241 of file dyn_inst.hh.
References _numDests.
Referenced by numDestRegs(), and operator new().
|
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 |
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 194 of file dyn_inst.cc.
|
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 885 of file dyn_inst.hh.
References pc.
Referenced by gem5::o3::DependencyGraph< DynInstPtr >::dump(), and ~DynInst().
|
inlineoverridevirtual |
Set the PC state of this instruction.
Implements gem5::ExecContext.
Definition at line 891 of file dyn_inst.hh.
References pc, gem5::ArmISA::set, 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 702 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 906 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 1008 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 1038 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 893 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 945 of file dyn_inst.hh.
References gem5::ThreadState::storeCondFailures, and thread.
|
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 773 of file dyn_inst.hh.
|
inline |
Returns whether or not this instruction is ready to issue.
Definition at line 746 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 815 of file dyn_inst.hh.
|
inline |
Definition at line 262 of file dyn_inst.hh.
References _destIdx.
Referenced by getWritableRegOperand(), renameDestReg(), setRegOperand(), setRegOperand(), and setSquashed().
|
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 getRegOperand(), getRegOperand(), 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 |
Read this CPU's data requestor ID.
Definition at line 495 of file dyn_inst.hh.
References cpu, and gem5::BaseCPU::dataRequestorId().
|
inline |
Return the size of the instResult queue.
Definition at line 696 of file dyn_inst.hh.
References instResult.
|
inline |
Definition at line 775 of file dyn_inst.hh.
|
inline |
Sets this instruction as ready to commit.
Definition at line 767 of file dyn_inst.hh.
|
inline |
Sets this instruction as ready to issue.
Definition at line 743 of file dyn_inst.hh.
References CanIssue, and status.
Referenced by markSrcRegReady().
|
inline |
Sets this instruction as committed.
Definition at line 780 of file dyn_inst.hh.
|
inline |
Sets this instruction as completed.
Definition at line 731 of file dyn_inst.hh.
|
inline |
Sets this instruction as executed.
Definition at line 761 of file dyn_inst.hh.
|
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 794 of file dyn_inst.hh.
|
inline |
Sets this instruction as a entry the LSQ.
Definition at line 812 of file dyn_inst.hh.
|
inline |
Sets this instruction as a entry the ROB.
Definition at line 830 of file dyn_inst.hh.
|
inline |
Sets iterator for this instruction in the list of all insts.
Definition at line 940 of file dyn_inst.hh.
References instListIt.
|
inline |
Sets this instruction as issued from the IQ.
Definition at line 752 of file dyn_inst.hh.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 912 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 1017 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 1049 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 849 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 877 of file dyn_inst.hh.
References PinnedRegsSquashDone, and status.
Referenced by setSquashed().
|
inline |
Sets destination registers as written.
Definition at line 861 of file dyn_inst.hh.
References PinnedRegsRenamed, PinnedRegsSquashDone, PinnedRegsWritten, and status.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 896 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, and gem5::ArmISA::set.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1151 of file dyn_inst.hh.
References cpu, gem5::InvalidRegClass, gem5::X86ISA::reg, renamedDestIdx(), gem5::o3::CPU::setReg(), setResult(), threadNumber, and gem5::X86ISA::val.
|
inlineoverridevirtual |
Implements gem5::ExecContext.
Definition at line 1141 of file dyn_inst.hh.
References cpu, gem5::InvalidRegClass, gem5::X86ISA::reg, renamedDestIdx(), gem5::o3::CPU::setReg(), setResult(), threadNumber, and gem5::X86ISA::val.
Referenced by forwardOldRegs().
|
inline |
Assert this instruction has generated a memory request.
Definition at line 934 of file dyn_inst.hh.
|
inline |
Pushes a result onto the instResult queue.
Definition at line 716 of file dyn_inst.hh.
References instFlags, instResult, RecordResult, and gem5::ArmISA::t.
Referenced by setRegOperand(), and setRegOperand().
|
inline |
Marks the result as ready.
Definition at line 737 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 323 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 803 of file dyn_inst.hh.
References Squashed, SquashedInIQ, and status.
|
inline |
Sets this instruction as squashed in the LSQ.
Definition at line 821 of file dyn_inst.hh.
References Squashed, SquashedInLSQ, and status.
|
inline |
Sets this instruction as squashed in the ROB.
Definition at line 839 of file dyn_inst.hh.
References SquashedInROB, and status.
|
inlineoverridevirtual |
Sets the number of consecutive store conditional failures.
Implements gem5::ExecContext.
Definition at line 952 of file dyn_inst.hh.
References gem5::ThreadState::storeCondFailures, and thread.
|
inline |
Sets the pointer to the thread state.
Definition at line 921 of file dyn_inst.hh.
|
inline |
|
inline |
Read this CPU's Socket ID.
Definition at line 492 of file dyn_inst.hh.
References cpu, and gem5::BaseCPU::socketId().
|
inline |
Returns the logical register index of the i'th source register.
Definition at line 693 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 928 of file dyn_inst.hh.
References instFlags, and IsStrictlyOrdered.
|
inline |
Definition at line 929 of file dyn_inst.hh.
References instFlags, IsStrictlyOrdered, and gem5::PowerISA::so.
|
inlineoverridevirtual |
Returns the thread context.
Implements gem5::ExecContext.
Definition at line 924 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 405 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 1058 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 432 of file dyn_inst.cc.
References gem5::X86ISA::addr, cpu, data, flags, and gem5::o3::CPU::pushRequest().
|
protected |
Definition at line 227 of file dyn_inst.hh.
Referenced by renamedDestIdx(), 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(), 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(), prevDestIdx(), and ~DynInst().
|
protected |
Definition at line 237 of file dyn_inst.hh.
Referenced by DynInst(), readySrcIdx(), readySrcIdx(), and ~DynInst().
|
protected |
Definition at line 234 of file dyn_inst.hh.
Referenced by renamedSrcIdx(), 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(), getRegOperand(), getRegOperand(), getWritableRegOperand(), initiateMemAMO(), initiateMemMgmtCmd(), initiateMemRead(), mwait(), mwaitAtomic(), readMiscReg(), readMiscRegOperand(), requestorId(), setRegOperand(), setRegOperand(), 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(), getFault(), initiateAcc(), trap(), and ~DynInst().
Tick gem5::o3::DynInst::firstIssue = -1 |
Definition at line 1001 of file dyn_inst.hh.
|
private |
Definition at line 983 of file dyn_inst.hh.
Referenced by clearHtmTransactionalState(), getHtmTransactionalDepth(), and setHtmTransactionalState().
|
private |
Definition at line 982 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(), effAddrValid(), getHtmTransactionUid(), hasRequest(), hitExternalSnoop(), hitExternalSnoop(), inHtmTransactionalState(), memOpDone(), memOpDone(), notAnInst(), possibleLoadViolation(), possibleLoadViolation(), readMemAccPredicate(), readPredicate(), readPredTaken(), recordResult(), setHtmTransactionalState(), setMemAccPredicate(), setNotAnInst(), setPredicate(), setPredTaken(), setRequest(), setResult(), strictlyOrdered(), strictlyOrdered(), translationCompleted(), translationCompleted(), translationStarted(), 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 1002 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(), dump(), DynInst(), mispredicted(), pcState(), 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< DynInstPtr >::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(), 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(), numDestRegs(), 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(), dump(), forwardOldRegs(), getAddrMonitor(), getRegOperand(), getRegOperand(), getWritableRegOperand(), mwait(), mwaitAtomic(), readMiscReg(), readMiscRegOperand(), setRegOperand(), setRegOperand(), 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().