gem5  v20.1.0.0
Classes | Public Member Functions | Protected Member Functions | List of all members
Trace::TarmacTracerRecordV8 Class Reference

TarmacTracer record for ARMv8 CPUs: The record is adding some data to the base TarmacTracer record. More...

#include <tarmac_record_v8.hh>

Inheritance diagram for Trace::TarmacTracerRecordV8:
Trace::TarmacTracerRecord Trace::TarmacBaseRecord Trace::InstRecord

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
 
ThreadContextgetThread () 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 &reg)
 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
TarmacTracertracer
 Reference to tracer. More...
 
- Protected Attributes inherited from Trace::InstRecord
Tick when
 
ThreadContextthread
 
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...
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ TarmacTracerRecordV8()

Trace::TarmacTracerRecordV8::TarmacTracerRecordV8 ( Tick  _when,
ThreadContext _thread,
const StaticInstPtr  _staticInst,
ArmISA::PCState  _pc,
TarmacTracer _parent,
const StaticInstPtr  _macroStaticInst = NULL 
)
inline

Definition at line 146 of file tarmac_record_v8.hh.

Member Function Documentation

◆ addInstEntry()

void Trace::TarmacTracerRecordV8::addInstEntry ( std::vector< InstPtr > &  queue,
const TarmacContext ptr 
)
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.

◆ addMemEntry()

void Trace::TarmacTracerRecordV8::addMemEntry ( std::vector< MemPtr > &  queue,
const TarmacContext ptr 
)
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().

◆ addRegEntry()

void Trace::TarmacTracerRecordV8::addRegEntry ( std::vector< RegPtr > &  queue,
const TarmacContext ptr 
)
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.


The documentation for this class was generated from the following files:

Generated on Wed Sep 30 2020 14:03:14 for gem5 by doxygen 1.8.17