gem5
v20.1.0.0
|
TarmacTracer record for ARMv8 CPUs: The record is adding some data to the base TarmacTracer record. More...
#include <tarmac_record_v8.hh>
Classes | |
struct | TraceEntryV8 |
General data shared by all v8 entries. More... | |
struct | TraceInstEntryV8 |
Instruction entry for v8 records. More... | |
struct | TraceMemEntryV8 |
Memory Entry for V8. More... | |
struct | TraceRegEntryV8 |
Register entry for v8 records. More... | |
Public Member Functions | |
TarmacTracerRecordV8 (Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, ArmISA::PCState _pc, TarmacTracer &_parent, const StaticInstPtr _macroStaticInst=NULL) | |
Public Member Functions inherited from Trace::TarmacTracerRecord | |
TarmacTracerRecord (Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, ArmISA::PCState _pc, TarmacTracer &_tracer, const StaticInstPtr _macroStaticInst=NULL) | |
virtual void | dump () override |
Public Member Functions inherited from Trace::TarmacBaseRecord | |
TarmacBaseRecord (Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, ArmISA::PCState _pc, const StaticInstPtr _macroStaticInst=NULL) | |
Public Member Functions inherited from Trace::InstRecord | |
InstRecord (Tick _when, ThreadContext *_thread, const StaticInstPtr _staticInst, TheISA::PCState _pc, const StaticInstPtr _macroStaticInst=NULL) | |
virtual | ~InstRecord () |
void | setWhen (Tick new_when) |
void | setMem (Addr a, Addr s, unsigned f) |
template<typename T , size_t N> | |
void | setData (std::array< T, N > d) |
void | setData (uint64_t d) |
void | setData (uint32_t d) |
void | setData (uint16_t d) |
void | setData (uint8_t d) |
void | setData (int64_t d) |
void | setData (int32_t d) |
void | setData (int16_t d) |
void | setData (int8_t d) |
void | setData (double d) |
void | setData (::VecRegContainer< TheISA::VecRegSizeBytes > &d) |
void | setData (::VecPredRegContainer< TheISA::VecPredRegSizeBits, TheISA::VecPredRegHasPackedRepr > &d) |
void | setFetchSeq (InstSeqNum seq) |
void | setCPSeq (InstSeqNum seq) |
void | setPredicate (bool val) |
void | setFaulting (bool val) |
Tick | getWhen () const |
ThreadContext * | getThread () const |
StaticInstPtr | getStaticInst () const |
TheISA::PCState | getPCState () const |
StaticInstPtr | getMacroStaticInst () const |
Addr | getAddr () const |
Addr | getSize () const |
unsigned | getFlags () const |
bool | getMemValid () const |
uint64_t | getIntData () const |
double | getFloatData () const |
int | getDataStatus () const |
InstSeqNum | getFetchSeq () const |
bool | getFetchSeqValid () const |
InstSeqNum | getCpSeq () const |
bool | getCpSeqValid () const |
bool | getFaulting () const |
Protected Member Functions | |
void | addInstEntry (std::vector< InstPtr > &queue, const TarmacContext &ptr) |
Generates an Entry for the executed instruction. More... | |
void | addMemEntry (std::vector< MemPtr > &queue, const TarmacContext &ptr) |
Generates an Entry for every memory access triggered. More... | |
void | addRegEntry (std::vector< RegPtr > &queue, const TarmacContext &ptr) |
Generate a Record for every register being written. More... | |
Protected Member Functions inherited from Trace::TarmacTracerRecord | |
template<typename RegEntry > | |
RegEntry | genRegister (const TarmacContext &tarmCtx, const RegId ®) |
Generate and update a register entry. More... | |
template<typename RegEntry > | |
void | mergeCCEntry (std::vector< RegPtr > &queue, const TarmacContext &tarmCtx) |
template<typename Queue > | |
void | flushQueues (Queue &queue) |
Flush queues to the trace output. More... | |
template<typename Queue , typename... Args> | |
void | flushQueues (Queue &queue, Args &... args) |
Additional Inherited Members | |
Public Types inherited from Trace::TarmacTracerRecord | |
using | InstPtr = std::unique_ptr< TraceInstEntry > |
using | MemPtr = std::unique_ptr< TraceMemEntry > |
using | RegPtr = std::unique_ptr< TraceRegEntry > |
Public Types inherited from Trace::TarmacBaseRecord | |
enum | TarmacRecordType { TARMAC_INST, TARMAC_REG, TARMAC_MEM, TARMAC_UNSUPPORTED } |
TARMAC trace record type. More... | |
enum | ISetState { ISET_ARM, ISET_THUMB, ISET_A64, ISET_UNSUPPORTED } |
ARM instruction set state. More... | |
enum | RegType { REG_R, REG_X, REG_S, REG_D, REG_P, REG_Q, REG_Z, REG_MISC } |
ARM register type. More... | |
Static Public Member Functions inherited from Trace::TarmacBaseRecord | |
static ISetState | pcToISetState (ArmISA::PCState pc) |
Returns the Instruction Set State according to the current PCState. More... | |
Protected Types inherited from Trace::InstRecord | |
enum | DataStatus { DataInvalid = 0, DataInt8 = 1, DataInt16 = 2, DataInt32 = 4, DataInt64 = 8, DataDouble = 3, DataVec = 5, DataVecPred = 6 } |
Protected Attributes inherited from Trace::TarmacTracerRecord | |
TarmacTracer & | tracer |
Reference to tracer. More... | |
Protected Attributes inherited from Trace::InstRecord | |
Tick | when |
ThreadContext * | thread |
StaticInstPtr | staticInst |
TheISA::PCState | pc |
StaticInstPtr | macroStaticInst |
Addr | addr |
The address that was accessed. More... | |
Addr | size |
The size of the memory request. More... | |
unsigned | flags |
The flags that were assigned to the request. More... | |
union { | |
uint64_t as_int | |
double as_double | |
::VecRegContainer< TheISA::VecRegSizeBytes > * as_vec | |
::VecPredRegContainer< TheISA::VecPredRegSizeBits, TheISA::VecPredRegHasPackedRepr > * as_pred | |
} | data |
InstSeqNum | fetch_seq |
InstSeqNum | cp_seq |
enum Trace::InstRecord::DataStatus | data_status |
bool | mem_valid |
bool | fetch_seq_valid |
bool | cp_seq_valid |
bool | predicate |
is the predicate for execution this inst true or false (not execed)? More... | |
bool | faulting |
Did the execution of this instruction fault? (requires ExecFaulting to be enabled) More... | |
TarmacTracer record for ARMv8 CPUs: The record is adding some data to the base TarmacTracer record.
Definition at line 55 of file tarmac_record_v8.hh.
|
inline |
Definition at line 146 of file tarmac_record_v8.hh.
|
protectedvirtual |
Generates an Entry for the executed instruction.
Reimplemented from Trace::TarmacTracerRecord.
Definition at line 182 of file tarmac_record_v8.cc.
References Trace::InstRecord::predicate.
|
protectedvirtual |
Generates an Entry for every memory access triggered.
Reimplemented from Trace::TarmacTracerRecord.
Definition at line 193 of file tarmac_record_v8.cc.
References Trace::InstRecord::getAddr(), Trace::InstRecord::getIntData(), Trace::InstRecord::getMemValid(), and Trace::InstRecord::getSize().
|
protectedvirtual |
Generate a Record for every register being written.
Reimplemented from Trace::TarmacTracerRecord.
Definition at line 209 of file tarmac_record_v8.cc.
References StaticInst::destRegIdx(), StaticInst::numDestRegs(), X86ISA::reg, and Trace::InstRecord::staticInst.