gem5  v21.1.0.0
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
gem5::GPUDynInst Class Reference

#include <gpu_dyn_inst.hh>

Inheritance diagram for gem5::GPUDynInst:
gem5::GPUExecContext

Public Types

typedef std::unordered_map< Addr, std::vector< int > > StatusVector
 

Public Member Functions

 GPUDynInst (ComputeUnit *_cu, Wavefront *_wf, GPUStaticInst *static_inst, uint64_t instSeqNum)
 
 ~GPUDynInst ()
 
void execute (GPUDynInstPtr gpuDynInst)
 
const std::vector< OperandInfo > & srcVecRegOperands () const
 
const std::vector< OperandInfo > & dstVecRegOperands () const
 
const std::vector< OperandInfo > & srcScalarRegOperands () const
 
const std::vector< OperandInfo > & dstScalarRegOperands () const
 
int numSrcRegOperands ()
 
int numDstRegOperands ()
 
int numSrcVecRegOperands () const
 
int numDstVecRegOperands () const
 
int maxSrcVecRegOperandSize ()
 
int numSrcVecDWords ()
 
int numDstVecDWords ()
 
int numSrcScalarRegOperands () const
 
int numDstScalarRegOperands () const
 
int maxSrcScalarRegOperandSize ()
 
int numSrcScalarDWords ()
 
int numDstScalarDWords ()
 
int maxOperandSize ()
 
int getNumOperands () const
 
bool hasSourceSgpr () const
 
bool hasDestinationSgpr () const
 
bool hasSourceVgpr () const
 
bool hasDestinationVgpr () const
 
bool isOpcode (const std::string &opcodeStr) const
 
bool isOpcode (const std::string &opcodeStr, const std::string &extStr) const
 
const std::string & disassemble () const
 
InstSeqNum seqNum () const
 
enums::StorageClassType executedAs ()
 
void initiateAcc (GPUDynInstPtr gpuDynInst)
 
void completeAcc (GPUDynInstPtr gpuDynInst)
 
void updateStats ()
 
GPUStaticInststaticInstruction ()
 
TheGpuISA::ScalarRegU32 srcLiteral () const
 
bool isALU () const
 accessor methods for the attributes of the underlying GPU static instruction More...
 
bool isBranch () const
 
bool isCondBranch () const
 
bool isNop () const
 
bool isReturn () const
 
bool isEndOfKernel () const
 
bool isKernelLaunch () const
 
bool isSDWAInst () const
 
bool isDPPInst () const
 
bool isUnconditionalJump () const
 
bool isSpecialOp () const
 
bool isWaitcnt () const
 
bool isSleep () const
 
bool isBarrier () const
 
bool isMemSync () const
 
bool isMemRef () const
 
bool isFlat () const
 
bool isLoad () const
 
bool isStore () const
 
bool isAtomic () const
 
bool isAtomicNoRet () const
 
bool isAtomicRet () const
 
bool isScalar () const
 
bool isVector () const
 
bool readsSCC () const
 
bool writesSCC () const
 
bool readsVCC () const
 
bool writesVCC () const
 
bool readsExec () const
 
bool writesExec () const
 
bool readsMode () const
 
bool writesMode () const
 
bool ignoreExec () const
 
bool readsFlatScratch () const
 
bool writesFlatScratch () const
 
bool readsExecMask () const
 
bool writesExecMask () const
 
bool isAtomicAnd () const
 
bool isAtomicOr () const
 
bool isAtomicXor () const
 
bool isAtomicCAS () const
 
bool isAtomicExch () const
 
bool isAtomicAdd () const
 
bool isAtomicSub () const
 
bool isAtomicInc () const
 
bool isAtomicDec () const
 
bool isAtomicMax () const
 
bool isAtomicMin () const
 
bool isArgLoad () const
 
bool isGlobalMem () const
 
bool isLocalMem () const
 
bool isArgSeg () const
 
bool isGlobalSeg () const
 
bool isGroupSeg () const
 
bool isKernArgSeg () const
 
bool isPrivateSeg () const
 
bool isReadOnlySeg () const
 
bool isSpillSeg () const
 
bool isGloballyCoherent () const
 
bool isSystemCoherent () const
 
bool isF16 () const
 
bool isF32 () const
 
bool isF64 () const
 
bool isFMA () const
 
bool isMAC () const
 
bool isMAD () const
 
void doApertureCheck (const VectorMask &mask)
 
void resolveFlatSegment (const VectorMask &mask)
 
template<typename c0 >
AtomicOpFunctorPtr makeAtomicOpFunctor (c0 *reg0, c0 *reg1)
 
void setRequestFlags (RequestPtr req) const
 
void resetEntireStatusVector ()
 
void resetStatusVector (int lane)
 
void setStatusVector (int lane, int newVal)
 
void decrementStatusVector (int lane)
 
int getLaneStatus (int lane) const
 
bool allLanesZero () const
 
std::string printStatusVector () const
 
Tick getAccessTime () const
 
void setAccessTime (Tick currentTime)
 
void profileRoundTripTime (Tick currentTime, int hopId)
 
std::vector< TickgetRoundTripTime () const
 
void profileLineAddressTime (Addr addr, Tick currentTime, int hopId)
 
const std::map< Addr, std::vector< Tick > > & getLineAddressTime () const
 
- Public Member Functions inherited from gem5::GPUExecContext
 GPUExecContext (ComputeUnit *_cu, Wavefront *_wf)
 
Wavefrontwavefront ()
 
ComputeUnitcomputeUnit ()
 
template<typename T >
readConstVal (int opIdx) const
 
RegVal readMiscReg (int opIdx) const
 
void writeMiscReg (int opIdx, RegVal operandVal)
 

Public Attributes

Addr scalarAddr
 
std::vector< Addraddr
 
Addr pAddr
 
uint8_t * d_data
 
uint8_t * scalar_data
 
uint8_t * a_data
 
uint8_t * x_data
 
VectorMask exec_mask
 
int simdId
 
int wfDynId
 
int kern_id
 
int cu_id
 
int wg_id
 
int wfSlotId
 
int execUnitId
 
Tick time
 
WaitClass latency
 
StatusVector memStatusVector
 
std::vector< int > statusVector
 
std::vector< int > tlbHitLevel
 
int numScalarReqs
 
bool isSaveRestore
 

Private Attributes

GPUStaticInst_staticInst
 
const InstSeqNum _seqNum
 
int maxSrcVecRegOpSize
 
int maxSrcScalarRegOpSize
 
Tick accessTime = -1
 
std::vector< TickroundTripTime
 
std::map< Addr, std::vector< Tick > > lineAddressTime
 

Additional Inherited Members

- Protected Attributes inherited from gem5::GPUExecContext
ComputeUnitcu
 
Wavefrontwf
 
TheGpuISA::GPUISA * gpuISA
 

Detailed Description

Definition at line 118 of file gpu_dyn_inst.hh.

Member Typedef Documentation

◆ StatusVector

typedef std::unordered_map<Addr, std::vector<int> > gem5::GPUDynInst::StatusVector

Definition at line 451 of file gpu_dyn_inst.hh.

Constructor & Destructor Documentation

◆ GPUDynInst()

gem5::GPUDynInst::GPUDynInst ( ComputeUnit _cu,
Wavefront _wf,
GPUStaticInst static_inst,
uint64_t  instSeqNum 
)

◆ ~GPUDynInst()

gem5::GPUDynInst::~GPUDynInst ( )

Definition at line 98 of file gpu_dyn_inst.cc.

References _staticInst, a_data, d_data, scalar_data, and x_data.

Member Function Documentation

◆ allLanesZero()

bool gem5::GPUDynInst::allLanesZero ( ) const
inline

◆ completeAcc()

void gem5::GPUDynInst::completeAcc ( GPUDynInstPtr  gpuDynInst)

◆ decrementStatusVector()

void gem5::GPUDynInst::decrementStatusVector ( int  lane)
inline

Definition at line 390 of file gpu_dyn_inst.hh.

References statusVector.

◆ disassemble()

const std::string & gem5::GPUDynInst::disassemble ( ) const

Definition at line 276 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::disassemble().

Referenced by GPUDynInst().

◆ doApertureCheck()

void gem5::GPUDynInst::doApertureCheck ( const VectorMask mask)

◆ dstScalarRegOperands()

const std::vector< OperandInfo > & gem5::GPUDynInst::dstScalarRegOperands ( ) const

◆ dstVecRegOperands()

const std::vector< OperandInfo > & gem5::GPUDynInst::dstVecRegOperands ( ) const

Definition at line 120 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::dstVecRegOperands().

Referenced by hasDestinationVgpr().

◆ execute()

void gem5::GPUDynInst::execute ( GPUDynInstPtr  gpuDynInst)

Definition at line 108 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::execute().

◆ executedAs()

enums::StorageClassType gem5::GPUDynInst::executedAs ( )

Definition at line 288 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::executed_as.

Referenced by doApertureCheck(), and resolveFlatSegment().

◆ getAccessTime()

Tick gem5::GPUDynInst::getAccessTime ( ) const
inline

Definition at line 464 of file gpu_dyn_inst.hh.

References accessTime.

◆ getLaneStatus()

int gem5::GPUDynInst::getLaneStatus ( int  lane) const
inline

Definition at line 401 of file gpu_dyn_inst.hh.

References statusVector.

◆ getLineAddressTime()

const std::map<Addr, std::vector<Tick> >& gem5::GPUDynInst::getLineAddressTime ( ) const
inline

Definition at line 472 of file gpu_dyn_inst.hh.

References lineAddressTime.

◆ getNumOperands()

int gem5::GPUDynInst::getNumOperands ( ) const

Definition at line 232 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::getNumOperands().

Referenced by GPUDynInst().

◆ getRoundTripTime()

std::vector<Tick> gem5::GPUDynInst::getRoundTripTime ( ) const
inline

Definition at line 469 of file gpu_dyn_inst.hh.

References roundTripTime.

◆ hasDestinationSgpr()

bool gem5::GPUDynInst::hasDestinationSgpr ( ) const

Definition at line 256 of file gpu_dyn_inst.cc.

References dstScalarRegOperands().

◆ hasDestinationVgpr()

bool gem5::GPUDynInst::hasDestinationVgpr ( ) const

Definition at line 244 of file gpu_dyn_inst.cc.

References dstVecRegOperands().

◆ hasSourceSgpr()

bool gem5::GPUDynInst::hasSourceSgpr ( ) const

Definition at line 250 of file gpu_dyn_inst.cc.

References srcScalarRegOperands().

◆ hasSourceVgpr()

bool gem5::GPUDynInst::hasSourceVgpr ( ) const

Definition at line 238 of file gpu_dyn_inst.cc.

References srcVecRegOperands().

◆ ignoreExec()

bool gem5::GPUDynInst::ignoreExec ( ) const

Definition at line 518 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::ignoreExec().

◆ initiateAcc()

void gem5::GPUDynInst::initiateAcc ( GPUDynInstPtr  gpuDynInst)

◆ isALU()

bool gem5::GPUDynInst::isALU ( ) const

accessor methods for the attributes of the underlying GPU static instruction

Definition at line 318 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isALU().

◆ isArgLoad()

bool gem5::GPUDynInst::isArgLoad ( ) const

Definition at line 629 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isArgLoad().

◆ isArgSeg()

bool gem5::GPUDynInst::isArgSeg ( ) const

Definition at line 647 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isArgSeg().

◆ isAtomic()

bool gem5::GPUDynInst::isAtomic ( ) const

Definition at line 432 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomic().

Referenced by resolveFlatSegment().

◆ isAtomicAdd()

bool gem5::GPUDynInst::isAtomicAdd ( ) const

Definition at line 593 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicAdd().

Referenced by makeAtomicOpFunctor().

◆ isAtomicAnd()

bool gem5::GPUDynInst::isAtomicAnd ( ) const

Definition at line 564 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicAnd().

Referenced by makeAtomicOpFunctor().

◆ isAtomicCAS()

bool gem5::GPUDynInst::isAtomicCAS ( ) const

Definition at line 582 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicCAS().

Referenced by makeAtomicOpFunctor().

◆ isAtomicDec()

bool gem5::GPUDynInst::isAtomicDec ( ) const

Definition at line 611 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicDec().

Referenced by makeAtomicOpFunctor().

◆ isAtomicExch()

bool gem5::GPUDynInst::isAtomicExch ( ) const

Definition at line 587 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicExch().

Referenced by makeAtomicOpFunctor().

◆ isAtomicInc()

bool gem5::GPUDynInst::isAtomicInc ( ) const

Definition at line 605 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicInc().

Referenced by makeAtomicOpFunctor().

◆ isAtomicMax()

bool gem5::GPUDynInst::isAtomicMax ( ) const

Definition at line 617 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicMax().

Referenced by makeAtomicOpFunctor().

◆ isAtomicMin()

bool gem5::GPUDynInst::isAtomicMin ( ) const

Definition at line 623 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicMin().

Referenced by makeAtomicOpFunctor().

◆ isAtomicNoRet()

bool gem5::GPUDynInst::isAtomicNoRet ( ) const

Definition at line 438 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicNoRet().

Referenced by setRequestFlags().

◆ isAtomicOr()

bool gem5::GPUDynInst::isAtomicOr ( ) const

Definition at line 570 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicOr().

Referenced by makeAtomicOpFunctor().

◆ isAtomicRet()

bool gem5::GPUDynInst::isAtomicRet ( ) const

Definition at line 444 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicRet().

Referenced by setRequestFlags().

◆ isAtomicSub()

bool gem5::GPUDynInst::isAtomicSub ( ) const

Definition at line 599 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicSub().

Referenced by makeAtomicOpFunctor().

◆ isAtomicXor()

bool gem5::GPUDynInst::isAtomicXor ( ) const

Definition at line 576 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isAtomicXor().

Referenced by makeAtomicOpFunctor().

◆ isBarrier()

bool gem5::GPUDynInst::isBarrier ( ) const

Definition at line 396 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isBarrier().

◆ isBranch()

bool gem5::GPUDynInst::isBranch ( ) const

Definition at line 324 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isBranch().

◆ isCondBranch()

bool gem5::GPUDynInst::isCondBranch ( ) const

Definition at line 330 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isCondBranch().

◆ isDPPInst()

bool gem5::GPUDynInst::isDPPInst ( ) const

Definition at line 360 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isDPPInst().

◆ isEndOfKernel()

bool gem5::GPUDynInst::isEndOfKernel ( ) const

Definition at line 342 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isEndOfKernel().

Referenced by setRequestFlags().

◆ isF16()

bool gem5::GPUDynInst::isF16 ( ) const

Definition at line 701 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isF16().

◆ isF32()

bool gem5::GPUDynInst::isF32 ( ) const

Definition at line 707 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isF32().

◆ isF64()

bool gem5::GPUDynInst::isF64 ( ) const

Definition at line 713 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isF64().

◆ isFlat()

bool gem5::GPUDynInst::isFlat ( ) const

Definition at line 414 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isFlat().

◆ isFMA()

bool gem5::GPUDynInst::isFMA ( ) const

Definition at line 719 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isFMA().

◆ isGloballyCoherent()

bool gem5::GPUDynInst::isGloballyCoherent ( ) const

Definition at line 689 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isGloballyCoherent().

Referenced by setRequestFlags().

◆ isGlobalMem()

bool gem5::GPUDynInst::isGlobalMem ( ) const

Definition at line 635 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isGlobalMem().

◆ isGlobalSeg()

bool gem5::GPUDynInst::isGlobalSeg ( ) const

Definition at line 653 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isGlobalSeg().

◆ isGroupSeg()

bool gem5::GPUDynInst::isGroupSeg ( ) const

Definition at line 659 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isGroupSeg().

◆ isKernArgSeg()

bool gem5::GPUDynInst::isKernArgSeg ( ) const

Definition at line 665 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isKernArgSeg().

◆ isKernelLaunch()

bool gem5::GPUDynInst::isKernelLaunch ( ) const

Definition at line 348 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isKernelLaunch().

Referenced by setRequestFlags().

◆ isLoad()

bool gem5::GPUDynInst::isLoad ( ) const

Definition at line 420 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isLoad().

Referenced by resolveFlatSegment().

◆ isLocalMem()

bool gem5::GPUDynInst::isLocalMem ( ) const

Definition at line 641 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isLocalMem().

◆ isMAC()

bool gem5::GPUDynInst::isMAC ( ) const

Definition at line 725 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isMAC().

◆ isMAD()

bool gem5::GPUDynInst::isMAD ( ) const

Definition at line 731 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isMAD().

◆ isMemRef()

bool gem5::GPUDynInst::isMemRef ( ) const

Definition at line 408 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isMemRef().

◆ isMemSync()

bool gem5::GPUDynInst::isMemSync ( ) const

Definition at line 402 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isMemSync().

Referenced by resolveFlatSegment(), and setRequestFlags().

◆ isNop()

bool gem5::GPUDynInst::isNop ( ) const

Definition at line 336 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isNop().

◆ isOpcode() [1/2]

bool gem5::GPUDynInst::isOpcode ( const std::string &  opcodeStr) const

Definition at line 270 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::opcode().

◆ isOpcode() [2/2]

bool gem5::GPUDynInst::isOpcode ( const std::string &  opcodeStr,
const std::string &  extStr 
) const

Definition at line 262 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::opcode().

◆ isPrivateSeg()

bool gem5::GPUDynInst::isPrivateSeg ( ) const

Definition at line 671 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isPrivateSeg().

◆ isReadOnlySeg()

bool gem5::GPUDynInst::isReadOnlySeg ( ) const

Definition at line 677 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isReadOnlySeg().

◆ isReturn()

bool gem5::GPUDynInst::isReturn ( ) const

Definition at line 366 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isReturn().

◆ isScalar()

bool gem5::GPUDynInst::isScalar ( ) const

Definition at line 456 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isScalar().

◆ isSDWAInst()

bool gem5::GPUDynInst::isSDWAInst ( ) const

Definition at line 354 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isSDWAInst().

◆ isSleep()

bool gem5::GPUDynInst::isSleep ( ) const

Definition at line 390 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isSleep().

◆ isSpecialOp()

bool gem5::GPUDynInst::isSpecialOp ( ) const

Definition at line 378 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isSpecialOp().

◆ isSpillSeg()

bool gem5::GPUDynInst::isSpillSeg ( ) const

Definition at line 683 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isSpillSeg().

◆ isStore()

bool gem5::GPUDynInst::isStore ( ) const

Definition at line 426 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isStore().

Referenced by resolveFlatSegment().

◆ isSystemCoherent()

bool gem5::GPUDynInst::isSystemCoherent ( ) const

Definition at line 695 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isSystemCoherent().

Referenced by setRequestFlags().

◆ isUnconditionalJump()

bool gem5::GPUDynInst::isUnconditionalJump ( ) const

Definition at line 372 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isUnconditionalJump().

◆ isVector()

bool gem5::GPUDynInst::isVector ( ) const

Definition at line 450 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isScalar().

◆ isWaitcnt()

bool gem5::GPUDynInst::isWaitcnt ( ) const

Definition at line 384 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::isWaitcnt().

◆ makeAtomicOpFunctor()

template<typename c0 >
AtomicOpFunctorPtr gem5::GPUDynInst::makeAtomicOpFunctor ( c0 *  reg0,
c0 *  reg1 
)
inline

◆ maxOperandSize()

int gem5::GPUDynInst::maxOperandSize ( )

Definition at line 226 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::maxOperandSize().

◆ maxSrcScalarRegOperandSize()

int gem5::GPUDynInst::maxSrcScalarRegOperandSize ( )

Definition at line 200 of file gpu_dyn_inst.cc.

References maxSrcScalarRegOpSize, and srcScalarRegOperands().

◆ maxSrcVecRegOperandSize()

int gem5::GPUDynInst::maxSrcVecRegOperandSize ( )

Definition at line 162 of file gpu_dyn_inst.cc.

References maxSrcVecRegOpSize, and srcVecRegOperands().

◆ numDstRegOperands()

int gem5::GPUDynInst::numDstRegOperands ( )

Definition at line 144 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numDstRegOperands().

◆ numDstScalarDWords()

int gem5::GPUDynInst::numDstScalarDWords ( )

Definition at line 220 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numDstScalarDWords().

◆ numDstScalarRegOperands()

int gem5::GPUDynInst::numDstScalarRegOperands ( ) const

Definition at line 194 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numDstScalarOperands().

◆ numDstVecDWords()

int gem5::GPUDynInst::numDstVecDWords ( )

Definition at line 182 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numDstVecDWords().

◆ numDstVecRegOperands()

int gem5::GPUDynInst::numDstVecRegOperands ( ) const

Definition at line 156 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numDstVecOperands().

◆ numSrcRegOperands()

int gem5::GPUDynInst::numSrcRegOperands ( )

Definition at line 138 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numSrcRegOperands().

◆ numSrcScalarDWords()

int gem5::GPUDynInst::numSrcScalarDWords ( )

Definition at line 214 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numSrcScalarDWords().

◆ numSrcScalarRegOperands()

int gem5::GPUDynInst::numSrcScalarRegOperands ( ) const

Definition at line 188 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numSrcScalarOperands().

◆ numSrcVecDWords()

int gem5::GPUDynInst::numSrcVecDWords ( )

Definition at line 176 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numSrcVecDWords().

◆ numSrcVecRegOperands()

int gem5::GPUDynInst::numSrcVecRegOperands ( ) const

Definition at line 150 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::numSrcVecOperands().

◆ printStatusVector()

std::string gem5::GPUDynInst::printStatusVector ( ) const
inline

◆ profileLineAddressTime()

void gem5::GPUDynInst::profileLineAddressTime ( Addr  addr,
Tick  currentTime,
int  hopId 
)

Definition at line 980 of file gpu_dyn_inst.cc.

References addr, and lineAddressTime.

◆ profileRoundTripTime()

void gem5::GPUDynInst::profileRoundTripTime ( Tick  currentTime,
int  hopId 
)

Definition at line 970 of file gpu_dyn_inst.cc.

References roundTripTime.

◆ readsExec()

bool gem5::GPUDynInst::readsExec ( ) const

Definition at line 506 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::readsEXEC().

◆ readsExecMask()

bool gem5::GPUDynInst::readsExecMask ( ) const

◆ readsFlatScratch()

bool gem5::GPUDynInst::readsFlatScratch ( ) const

Definition at line 554 of file gpu_dyn_inst.cc.

References srcScalarRegOperands().

◆ readsMode()

bool gem5::GPUDynInst::readsMode ( ) const

Definition at line 494 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::readsMode().

◆ readsSCC()

bool gem5::GPUDynInst::readsSCC ( ) const

Definition at line 462 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::readsSCC().

◆ readsVCC()

bool gem5::GPUDynInst::readsVCC ( ) const

◆ resetEntireStatusVector()

void gem5::GPUDynInst::resetEntireStatusVector ( )
inline

◆ resetStatusVector()

void gem5::GPUDynInst::resetStatusVector ( int  lane)
inline

Definition at line 372 of file gpu_dyn_inst.hh.

References setStatusVector().

Referenced by resetEntireStatusVector().

◆ resolveFlatSegment()

void gem5::GPUDynInst::resolveFlatSegment ( const VectorMask mask)

Flat instructions may resolve to the private segment (scratch), which is backed by main memory and provides per-lane scratch memory. Flat addressing uses apertures - registers that specify the address range in the VA space where LDS/private memory is mapped. The value of which is set by the kernel mode driver. These apertures use addresses that are not used by x86 CPUs. When the address of a Flat operation falls into one of the apertures, the Flat operation is redirected to either LDS or to the private memory segment.

For private memory the SW runtime will allocate some space in the VA space for each AQL queue. The base address of which is stored in scalar registers per the AMD GPU ABI. The amd_queue_t scratch_backing_memory_location provides the base address in memory for the queue's private segment. Various other fields loaded into register state during kernel launch specify per-WF and per-work-item offsets so that individual lanes may access their private segment allocation.

For more details about flat addressing see: http://rocm-documentation.readthedocs.io/en/latest/ ROCm_Compiler_SDK/ROCm-Native-ISA.html#flat-scratch

https://github.com/ROCm-Developer-Tools/ ROCm-ComputeABI-Doc/blob/master/AMDGPU-ABI.md #flat-addressing

Definition at line 809 of file gpu_dyn_inst.cc.

References addr, gem5::Wavefront::computeUnit, gem5::Wavefront::decLGKMInstsIssued(), gem5::Wavefront::decVMemInstsIssued(), doApertureCheck(), gem5::Wavefront::execUnitId, executedAs(), gem5::Wavefront::flatGmUnitId, gem5::Wavefront::flatLmUnitId, gem5::Shader::getHiddenPrivateBase(), gem5::Shader::getScratchBase(), isAtomic(), isLoad(), isMemSync(), isStore(), gem5::RegisterManager::mapSgpr(), gem5::mask(), gem5::Wavefront::maxSgprs, gem5::ArmISA::offset, panic, gem5::Wavefront::rdGmReqsInPipe, gem5::Wavefront::rdLmReqsInPipe, gem5::ComputeUnit::registerManager, gem5::ComputeUnit::shader, simdId, gem5::ComputeUnit::srf, gem5::GPUExecContext::wavefront(), gem5::ComputeUnit::wfSize(), gem5::Wavefront::wrGmReqsInPipe, and gem5::Wavefront::wrLmReqsInPipe.

◆ seqNum()

InstSeqNum gem5::GPUDynInst::seqNum ( ) const

Definition at line 282 of file gpu_dyn_inst.cc.

References _seqNum.

◆ setAccessTime()

void gem5::GPUDynInst::setAccessTime ( Tick  currentTime)
inline

Definition at line 466 of file gpu_dyn_inst.hh.

References accessTime.

◆ setRequestFlags()

void gem5::GPUDynInst::setRequestFlags ( RequestPtr  req) const
inline

◆ setStatusVector()

void gem5::GPUDynInst::setStatusVector ( int  lane,
int  newVal 
)
inline

Definition at line 379 of file gpu_dyn_inst.hh.

References statusVector.

Referenced by resetStatusVector().

◆ srcLiteral()

TheGpuISA::ScalarRegU32 gem5::GPUDynInst::srcLiteral ( ) const

Definition at line 923 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::srcLiteral().

◆ srcScalarRegOperands()

const std::vector< OperandInfo > & gem5::GPUDynInst::srcScalarRegOperands ( ) const

◆ srcVecRegOperands()

const std::vector< OperandInfo > & gem5::GPUDynInst::srcVecRegOperands ( ) const

◆ staticInstruction()

GPUStaticInst* gem5::GPUDynInst::staticInstruction ( )
inline

Definition at line 213 of file gpu_dyn_inst.hh.

References _staticInst.

Referenced by doApertureCheck().

◆ updateStats()

void gem5::GPUDynInst::updateStats ( )

◆ writesExec()

bool gem5::GPUDynInst::writesExec ( ) const

Definition at line 512 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::writesEXEC().

◆ writesExecMask()

bool gem5::GPUDynInst::writesExecMask ( ) const

◆ writesFlatScratch()

bool gem5::GPUDynInst::writesFlatScratch ( ) const

Definition at line 544 of file gpu_dyn_inst.cc.

References dstScalarRegOperands().

◆ writesMode()

bool gem5::GPUDynInst::writesMode ( ) const

Definition at line 500 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::writesMode().

◆ writesSCC()

bool gem5::GPUDynInst::writesSCC ( ) const

Definition at line 468 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUStaticInst::writesSCC().

◆ writesVCC()

bool gem5::GPUDynInst::writesVCC ( ) const

Member Data Documentation

◆ _seqNum

const InstSeqNum gem5::GPUDynInst::_seqNum
private

Definition at line 479 of file gpu_dyn_inst.hh.

Referenced by seqNum().

◆ _staticInst

GPUStaticInst* gem5::GPUDynInst::_staticInst
private

◆ a_data

uint8_t* gem5::GPUDynInst::a_data

Definition at line 178 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and ~GPUDynInst().

◆ accessTime

Tick gem5::GPUDynInst::accessTime = -1
private

Definition at line 484 of file gpu_dyn_inst.hh.

Referenced by getAccessTime(), and setAccessTime().

◆ addr

std::vector<Addr> gem5::GPUDynInst::addr

◆ cu_id

int gem5::GPUDynInst::cu_id

Definition at line 191 of file gpu_dyn_inst.hh.

Referenced by allLanesZero(), and GPUDynInst().

◆ d_data

uint8_t* gem5::GPUDynInst::d_data

Definition at line 174 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and ~GPUDynInst().

◆ exec_mask

VectorMask gem5::GPUDynInst::exec_mask

Definition at line 182 of file gpu_dyn_inst.hh.

Referenced by completeAcc(), and initiateAcc().

◆ execUnitId

int gem5::GPUDynInst::execUnitId

Definition at line 197 of file gpu_dyn_inst.hh.

◆ isSaveRestore

bool gem5::GPUDynInst::isSaveRestore

Definition at line 476 of file gpu_dyn_inst.hh.

◆ kern_id

int gem5::GPUDynInst::kern_id

Definition at line 189 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ latency

WaitClass gem5::GPUDynInst::latency

Definition at line 201 of file gpu_dyn_inst.hh.

◆ lineAddressTime

std::map<Addr, std::vector<Tick> > gem5::GPUDynInst::lineAddressTime
private

Definition at line 492 of file gpu_dyn_inst.hh.

Referenced by getLineAddressTime(), and profileLineAddressTime().

◆ maxSrcScalarRegOpSize

int gem5::GPUDynInst::maxSrcScalarRegOpSize
private

Definition at line 481 of file gpu_dyn_inst.hh.

Referenced by maxSrcScalarRegOperandSize().

◆ maxSrcVecRegOpSize

int gem5::GPUDynInst::maxSrcVecRegOpSize
private

Definition at line 480 of file gpu_dyn_inst.hh.

Referenced by maxSrcVecRegOperandSize().

◆ memStatusVector

StatusVector gem5::GPUDynInst::memStatusVector

Definition at line 452 of file gpu_dyn_inst.hh.

◆ numScalarReqs

int gem5::GPUDynInst::numScalarReqs

Definition at line 462 of file gpu_dyn_inst.hh.

◆ pAddr

Addr gem5::GPUDynInst::pAddr

Definition at line 171 of file gpu_dyn_inst.hh.

◆ roundTripTime

std::vector<Tick> gem5::GPUDynInst::roundTripTime
private

Definition at line 488 of file gpu_dyn_inst.hh.

Referenced by getRoundTripTime(), and profileRoundTripTime().

◆ scalar_data

uint8_t* gem5::GPUDynInst::scalar_data

Definition at line 176 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and ~GPUDynInst().

◆ scalarAddr

Addr gem5::GPUDynInst::scalarAddr

Definition at line 168 of file gpu_dyn_inst.hh.

◆ simdId

int gem5::GPUDynInst::simdId

◆ statusVector

std::vector<int> gem5::GPUDynInst::statusVector

◆ time

Tick gem5::GPUDynInst::time

Definition at line 199 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ tlbHitLevel

std::vector<int> gem5::GPUDynInst::tlbHitLevel

Definition at line 458 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ wfDynId

int gem5::GPUDynInst::wfDynId

Definition at line 187 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ wfSlotId

int gem5::GPUDynInst::wfSlotId

Definition at line 195 of file gpu_dyn_inst.hh.

Referenced by allLanesZero(), completeAcc(), GPUDynInst(), and initiateAcc().

◆ wg_id

int gem5::GPUDynInst::wg_id

Definition at line 193 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ x_data

uint8_t* gem5::GPUDynInst::x_data

Definition at line 180 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and ~GPUDynInst().


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

Generated on Wed Jul 28 2021 12:10:39 for gem5 by doxygen 1.8.17