gem5 v25.0.0.1
Loading...
Searching...
No Matches
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
Addr pc ()
void pc (Addr _pc)
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
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 isFlatGlobal () const
bool isFlatScratch () 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 needsToken () 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 isI8 () const
bool isF16 () const
bool isF32 () const
bool isF64 () const
bool isFMA () const
bool isMAC () const
bool isMAD () const
bool isMFMA () 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
bool isSystemReq ()
void setSystemReq ()
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
bool systemReq = false
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 116 of file gpu_dyn_inst.hh.

Member Typedef Documentation

◆ StatusVector

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

Definition at line 458 of file gpu_dyn_inst.hh.

Constructor & Destructor Documentation

◆ GPUDynInst()

◆ ~GPUDynInst()

gem5::GPUDynInst::~GPUDynInst ( )

Definition at line 96 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

Definition at line 416 of file gpu_dyn_inst.hh.

References addr, cu_id, DPRINTF, simdId, statusVector, and wfSlotId.

◆ completeAcc()

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

Definition at line 314 of file gpu_dyn_inst.cc.

References _staticInst, gem5::GPUExecContext::cu, DPRINTF, exec_mask, simdId, and wfSlotId.

◆ decrementStatusVector()

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

Definition at line 397 of file gpu_dyn_inst.hh.

References statusVector.

◆ disassemble()

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

Definition at line 274 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by GPUDynInst().

◆ doApertureCheck()

◆ dstScalarRegOperands()

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

Definition at line 130 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by hasDestinationSgpr(), and writesFlatScratch().

◆ dstVecRegOperands()

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

Definition at line 118 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by hasDestinationVgpr().

◆ execute()

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

Definition at line 106 of file gpu_dyn_inst.cc.

References _staticInst.

◆ executedAs()

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

Definition at line 298 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by doApertureCheck(), and resolveFlatSegment().

◆ getAccessTime()

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

Definition at line 471 of file gpu_dyn_inst.hh.

References accessTime.

◆ getLaneStatus()

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

Definition at line 408 of file gpu_dyn_inst.hh.

References statusVector.

◆ getLineAddressTime()

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

Definition at line 479 of file gpu_dyn_inst.hh.

References lineAddressTime.

◆ getNumOperands()

int gem5::GPUDynInst::getNumOperands ( ) const

Definition at line 230 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by GPUDynInst().

◆ getRoundTripTime()

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

Definition at line 476 of file gpu_dyn_inst.hh.

References roundTripTime.

◆ hasDestinationSgpr()

bool gem5::GPUDynInst::hasDestinationSgpr ( ) const

Definition at line 254 of file gpu_dyn_inst.cc.

References dstScalarRegOperands().

◆ hasDestinationVgpr()

bool gem5::GPUDynInst::hasDestinationVgpr ( ) const

Definition at line 242 of file gpu_dyn_inst.cc.

References dstVecRegOperands().

◆ hasSourceSgpr()

bool gem5::GPUDynInst::hasSourceSgpr ( ) const

Definition at line 248 of file gpu_dyn_inst.cc.

References srcScalarRegOperands().

◆ hasSourceVgpr()

bool gem5::GPUDynInst::hasSourceVgpr ( ) const

Definition at line 236 of file gpu_dyn_inst.cc.

References srcVecRegOperands().

◆ ignoreExec()

bool gem5::GPUDynInst::ignoreExec ( ) const

Definition at line 540 of file gpu_dyn_inst.cc.

References _staticInst.

◆ initiateAcc()

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

Definition at line 305 of file gpu_dyn_inst.cc.

References _staticInst, gem5::GPUExecContext::cu, DPRINTF, exec_mask, simdId, and wfSlotId.

◆ isALU()

bool gem5::GPUDynInst::isALU ( ) const

accessor methods for the attributes of the underlying GPU static instruction

Definition at line 328 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isArgLoad()

bool gem5::GPUDynInst::isArgLoad ( ) const

Definition at line 657 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isArgSeg()

bool gem5::GPUDynInst::isArgSeg ( ) const

Definition at line 675 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isAtomic()

bool gem5::GPUDynInst::isAtomic ( ) const

Definition at line 454 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by resolveFlatSegment().

◆ isAtomicAdd()

bool gem5::GPUDynInst::isAtomicAdd ( ) const

Definition at line 621 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicAnd()

bool gem5::GPUDynInst::isAtomicAnd ( ) const

Definition at line 592 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicCAS()

bool gem5::GPUDynInst::isAtomicCAS ( ) const

Definition at line 610 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicDec()

bool gem5::GPUDynInst::isAtomicDec ( ) const

Definition at line 639 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicExch()

bool gem5::GPUDynInst::isAtomicExch ( ) const

Definition at line 615 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicInc()

bool gem5::GPUDynInst::isAtomicInc ( ) const

Definition at line 633 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicMax()

bool gem5::GPUDynInst::isAtomicMax ( ) const

Definition at line 645 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicMin()

bool gem5::GPUDynInst::isAtomicMin ( ) const

Definition at line 651 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicNoRet()

bool gem5::GPUDynInst::isAtomicNoRet ( ) const

Definition at line 460 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by setRequestFlags().

◆ isAtomicOr()

bool gem5::GPUDynInst::isAtomicOr ( ) const

Definition at line 598 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicRet()

bool gem5::GPUDynInst::isAtomicRet ( ) const

Definition at line 466 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by setRequestFlags().

◆ isAtomicSub()

bool gem5::GPUDynInst::isAtomicSub ( ) const

Definition at line 627 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isAtomicXor()

bool gem5::GPUDynInst::isAtomicXor ( ) const

Definition at line 604 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by makeAtomicOpFunctor().

◆ isBarrier()

bool gem5::GPUDynInst::isBarrier ( ) const

Definition at line 406 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isBranch()

bool gem5::GPUDynInst::isBranch ( ) const

Definition at line 334 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isCondBranch()

bool gem5::GPUDynInst::isCondBranch ( ) const

Definition at line 340 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isDPPInst()

bool gem5::GPUDynInst::isDPPInst ( ) const

Definition at line 370 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isEndOfKernel()

bool gem5::GPUDynInst::isEndOfKernel ( ) const

Definition at line 352 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by setRequestFlags().

◆ isF16()

bool gem5::GPUDynInst::isF16 ( ) const

Definition at line 735 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isF32()

bool gem5::GPUDynInst::isF32 ( ) const

Definition at line 741 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isF64()

bool gem5::GPUDynInst::isF64 ( ) const

Definition at line 747 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isFlat()

bool gem5::GPUDynInst::isFlat ( ) const

Definition at line 424 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by needsToken(), and resolveFlatSegment().

◆ isFlatGlobal()

bool gem5::GPUDynInst::isFlatGlobal ( ) const

Definition at line 430 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by needsToken().

◆ isFlatScratch()

bool gem5::GPUDynInst::isFlatScratch ( ) const

Definition at line 436 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by needsToken().

◆ isFMA()

bool gem5::GPUDynInst::isFMA ( ) const

Definition at line 753 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isGloballyCoherent()

bool gem5::GPUDynInst::isGloballyCoherent ( ) const

Definition at line 717 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by setRequestFlags().

◆ isGlobalMem()

bool gem5::GPUDynInst::isGlobalMem ( ) const

Definition at line 663 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by needsToken().

◆ isGlobalSeg()

bool gem5::GPUDynInst::isGlobalSeg ( ) const

Definition at line 681 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isGroupSeg()

bool gem5::GPUDynInst::isGroupSeg ( ) const

Definition at line 687 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isI8()

bool gem5::GPUDynInst::isI8 ( ) const

Definition at line 729 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isKernArgSeg()

bool gem5::GPUDynInst::isKernArgSeg ( ) const

Definition at line 693 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isKernelLaunch()

bool gem5::GPUDynInst::isKernelLaunch ( ) const

Definition at line 358 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by setRequestFlags().

◆ isLoad()

bool gem5::GPUDynInst::isLoad ( ) const

Definition at line 442 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by resolveFlatSegment().

◆ isLocalMem()

bool gem5::GPUDynInst::isLocalMem ( ) const

Definition at line 669 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isMAC()

bool gem5::GPUDynInst::isMAC ( ) const

Definition at line 759 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isMAD()

bool gem5::GPUDynInst::isMAD ( ) const

Definition at line 765 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isMemRef()

bool gem5::GPUDynInst::isMemRef ( ) const

Definition at line 418 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isMemSync()

bool gem5::GPUDynInst::isMemSync ( ) const

Definition at line 412 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by resolveFlatSegment(), and setRequestFlags().

◆ isMFMA()

bool gem5::GPUDynInst::isMFMA ( ) const

Definition at line 771 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isNop()

bool gem5::GPUDynInst::isNop ( ) const

Definition at line 346 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isOpcode() [1/2]

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

Definition at line 268 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isOpcode() [2/2]

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

Definition at line 260 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isPrivateSeg()

bool gem5::GPUDynInst::isPrivateSeg ( ) const

Definition at line 699 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isReadOnlySeg()

bool gem5::GPUDynInst::isReadOnlySeg ( ) const

Definition at line 705 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isReturn()

bool gem5::GPUDynInst::isReturn ( ) const

Definition at line 376 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isScalar()

bool gem5::GPUDynInst::isScalar ( ) const

Definition at line 478 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isSDWAInst()

bool gem5::GPUDynInst::isSDWAInst ( ) const

Definition at line 364 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isSleep()

bool gem5::GPUDynInst::isSleep ( ) const

Definition at line 400 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isSpecialOp()

bool gem5::GPUDynInst::isSpecialOp ( ) const

Definition at line 388 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isSpillSeg()

bool gem5::GPUDynInst::isSpillSeg ( ) const

Definition at line 711 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isStore()

bool gem5::GPUDynInst::isStore ( ) const

Definition at line 448 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by resolveFlatSegment().

◆ isSystemCoherent()

bool gem5::GPUDynInst::isSystemCoherent ( ) const

Definition at line 723 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by setRequestFlags().

◆ isSystemReq()

bool gem5::GPUDynInst::isSystemReq ( )
inline

Definition at line 485 of file gpu_dyn_inst.hh.

References systemReq.

◆ isUnconditionalJump()

bool gem5::GPUDynInst::isUnconditionalJump ( ) const

Definition at line 382 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isVector()

bool gem5::GPUDynInst::isVector ( ) const

Definition at line 472 of file gpu_dyn_inst.cc.

References _staticInst.

◆ isWaitcnt()

bool gem5::GPUDynInst::isWaitcnt ( ) const

Definition at line 394 of file gpu_dyn_inst.cc.

References _staticInst.

◆ makeAtomicOpFunctor()

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

◆ maxOperandSize()

int gem5::GPUDynInst::maxOperandSize ( )

Definition at line 224 of file gpu_dyn_inst.cc.

References _staticInst.

◆ maxSrcScalarRegOperandSize()

int gem5::GPUDynInst::maxSrcScalarRegOperandSize ( )

Definition at line 198 of file gpu_dyn_inst.cc.

References maxSrcScalarRegOpSize, and srcScalarRegOperands().

◆ maxSrcVecRegOperandSize()

int gem5::GPUDynInst::maxSrcVecRegOperandSize ( )

Definition at line 160 of file gpu_dyn_inst.cc.

References maxSrcVecRegOpSize, and srcVecRegOperands().

◆ needsToken()

bool gem5::GPUDynInst::needsToken ( ) const

Definition at line 586 of file gpu_dyn_inst.cc.

References isFlat(), isFlatGlobal(), isFlatScratch(), and isGlobalMem().

◆ numDstRegOperands()

int gem5::GPUDynInst::numDstRegOperands ( )

Definition at line 142 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numDstScalarDWords()

int gem5::GPUDynInst::numDstScalarDWords ( )

Definition at line 218 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numDstScalarRegOperands()

int gem5::GPUDynInst::numDstScalarRegOperands ( ) const

Definition at line 192 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numDstVecDWords()

int gem5::GPUDynInst::numDstVecDWords ( )

Definition at line 180 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numDstVecRegOperands()

int gem5::GPUDynInst::numDstVecRegOperands ( ) const

Definition at line 154 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numSrcRegOperands()

int gem5::GPUDynInst::numSrcRegOperands ( )

Definition at line 136 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numSrcScalarDWords()

int gem5::GPUDynInst::numSrcScalarDWords ( )

Definition at line 212 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numSrcScalarRegOperands()

int gem5::GPUDynInst::numSrcScalarRegOperands ( ) const

Definition at line 186 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numSrcVecDWords()

int gem5::GPUDynInst::numSrcVecDWords ( )

Definition at line 174 of file gpu_dyn_inst.cc.

References _staticInst.

◆ numSrcVecRegOperands()

int gem5::GPUDynInst::numSrcVecRegOperands ( ) const

Definition at line 148 of file gpu_dyn_inst.cc.

References _staticInst.

◆ pc() [1/2]

Addr gem5::GPUDynInst::pc ( )

Definition at line 286 of file gpu_dyn_inst.cc.

References gem5::Wavefront::pc(), and gem5::GPUExecContext::wavefront().

◆ pc() [2/2]

void gem5::GPUDynInst::pc ( Addr _pc)

Definition at line 292 of file gpu_dyn_inst.cc.

References gem5::Wavefront::pc(), and gem5::GPUExecContext::wavefront().

◆ printStatusVector()

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

Definition at line 442 of file gpu_dyn_inst.hh.

References statusVector.

◆ profileLineAddressTime()

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

Definition at line 1047 of file gpu_dyn_inst.cc.

References addr, and lineAddressTime.

◆ profileRoundTripTime()

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

Definition at line 1037 of file gpu_dyn_inst.cc.

References roundTripTime.

◆ readsExec()

bool gem5::GPUDynInst::readsExec ( ) const

Definition at line 528 of file gpu_dyn_inst.cc.

References _staticInst.

◆ readsExecMask()

bool gem5::GPUDynInst::readsExecMask ( ) const

Definition at line 556 of file gpu_dyn_inst.cc.

References _staticInst.

◆ readsFlatScratch()

bool gem5::GPUDynInst::readsFlatScratch ( ) const

Definition at line 576 of file gpu_dyn_inst.cc.

References srcScalarRegOperands().

◆ readsMode()

bool gem5::GPUDynInst::readsMode ( ) const

Definition at line 516 of file gpu_dyn_inst.cc.

References _staticInst.

◆ readsSCC()

bool gem5::GPUDynInst::readsSCC ( ) const

Definition at line 484 of file gpu_dyn_inst.cc.

References _staticInst.

◆ readsVCC()

bool gem5::GPUDynInst::readsVCC ( ) const

Definition at line 496 of file gpu_dyn_inst.cc.

References _staticInst.

◆ resetEntireStatusVector()

void gem5::GPUDynInst::resetEntireStatusVector ( )
inline

Definition at line 368 of file gpu_dyn_inst.hh.

References resetStatusVector(), and statusVector.

◆ resetStatusVector()

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

Definition at line 378 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 849 of file gpu_dyn_inst.cc.

References addr, gem5::Wavefront::archFlatScratchAddr, gem5::ApertureRegister::base, gem5::GPUExecContext::computeUnit(), gem5::Wavefront::computeUnit, gem5::GPUExecContext::cu, gem5::Wavefront::decLGKMInstsIssued(), gem5::Wavefront::decVMemInstsIssued(), doApertureCheck(), gem5::Wavefront::execUnitId, executedAs(), gem5::Wavefront::flatGmUnitId, gem5::Wavefront::flatLmUnitId, isAtomic(), isFlat(), isLoad(), isMemSync(), isStore(), gem5::Shader::ldsApe(), gem5::Wavefront::lgkmIssued, gem5::ArmISA::mask, gem5::Wavefront::maxSgprs, gem5::ArmISA::offset, panic, gem5::Wavefront::rdGmReqsInPipe, gem5::Wavefront::rdLmReqsInPipe, seqNum(), gem5::ComputeUnit::shader, simdId, gem5::Wavefront::vmemIssued, gem5::GPUExecContext::wavefront(), gem5::ComputeUnit::wfSize(), gem5::Wavefront::wrGmReqsInPipe, and gem5::Wavefront::wrLmReqsInPipe.

◆ seqNum()

InstSeqNum gem5::GPUDynInst::seqNum ( ) const

Definition at line 280 of file gpu_dyn_inst.cc.

References _seqNum.

Referenced by resolveFlatSegment().

◆ setAccessTime()

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

Definition at line 473 of file gpu_dyn_inst.hh.

References accessTime.

◆ setRequestFlags()

◆ setStatusVector()

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

Definition at line 385 of file gpu_dyn_inst.hh.

References statusVector.

Referenced by resetStatusVector().

◆ setSystemReq()

void gem5::GPUDynInst::setSystemReq ( )
inline

Definition at line 486 of file gpu_dyn_inst.hh.

References systemReq.

◆ srcLiteral()

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

Definition at line 990 of file gpu_dyn_inst.cc.

References _staticInst.

◆ srcScalarRegOperands()

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

Definition at line 124 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by hasSourceSgpr(), maxSrcScalarRegOperandSize(), and readsFlatScratch().

◆ srcVecRegOperands()

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

Definition at line 112 of file gpu_dyn_inst.cc.

References _staticInst.

Referenced by hasSourceVgpr(), and maxSrcVecRegOperandSize().

◆ staticInstruction()

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

Definition at line 214 of file gpu_dyn_inst.hh.

References _staticInst.

Referenced by doApertureCheck().

◆ updateStats()

void gem5::GPUDynInst::updateStats ( )

Definition at line 996 of file gpu_dyn_inst.cc.

References _staticInst, and gem5::GPUExecContext::cu.

◆ writesExec()

bool gem5::GPUDynInst::writesExec ( ) const

Definition at line 534 of file gpu_dyn_inst.cc.

References _staticInst.

◆ writesExecMask()

bool gem5::GPUDynInst::writesExecMask ( ) const

Definition at line 546 of file gpu_dyn_inst.cc.

References _staticInst.

◆ writesFlatScratch()

bool gem5::GPUDynInst::writesFlatScratch ( ) const

Definition at line 566 of file gpu_dyn_inst.cc.

References dstScalarRegOperands().

◆ writesMode()

bool gem5::GPUDynInst::writesMode ( ) const

Definition at line 522 of file gpu_dyn_inst.cc.

References _staticInst.

◆ writesSCC()

bool gem5::GPUDynInst::writesSCC ( ) const

Definition at line 490 of file gpu_dyn_inst.cc.

References _staticInst.

◆ writesVCC()

bool gem5::GPUDynInst::writesVCC ( ) const

Definition at line 506 of file gpu_dyn_inst.cc.

References _staticInst.

Member Data Documentation

◆ _seqNum

const InstSeqNum gem5::GPUDynInst::_seqNum
private

Definition at line 490 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and seqNum().

◆ _staticInst

GPUStaticInst* gem5::GPUDynInst::_staticInst
private

Definition at line 489 of file gpu_dyn_inst.hh.

Referenced by completeAcc(), disassemble(), dstScalarRegOperands(), dstVecRegOperands(), execute(), executedAs(), getNumOperands(), GPUDynInst(), ignoreExec(), initiateAcc(), isALU(), isArgLoad(), isArgSeg(), isAtomic(), isAtomicAdd(), isAtomicAnd(), isAtomicCAS(), isAtomicDec(), isAtomicExch(), isAtomicInc(), isAtomicMax(), isAtomicMin(), isAtomicNoRet(), isAtomicOr(), isAtomicRet(), isAtomicSub(), isAtomicXor(), isBarrier(), isBranch(), isCondBranch(), isDPPInst(), isEndOfKernel(), isF16(), isF32(), isF64(), isFlat(), isFlatGlobal(), isFlatScratch(), isFMA(), isGloballyCoherent(), isGlobalMem(), isGlobalSeg(), isGroupSeg(), isI8(), isKernArgSeg(), isKernelLaunch(), isLoad(), isLocalMem(), isMAC(), isMAD(), isMemRef(), isMemSync(), isMFMA(), isNop(), isOpcode(), isOpcode(), isPrivateSeg(), isReadOnlySeg(), isReturn(), isScalar(), isSDWAInst(), isSleep(), isSpecialOp(), isSpillSeg(), isStore(), isSystemCoherent(), isUnconditionalJump(), isVector(), isWaitcnt(), maxOperandSize(), numDstRegOperands(), numDstScalarDWords(), numDstScalarRegOperands(), numDstVecDWords(), numDstVecRegOperands(), numSrcRegOperands(), numSrcScalarDWords(), numSrcScalarRegOperands(), numSrcVecDWords(), numSrcVecRegOperands(), readsExec(), readsExecMask(), readsMode(), readsSCC(), readsVCC(), srcLiteral(), srcScalarRegOperands(), srcVecRegOperands(), staticInstruction(), updateStats(), writesExec(), writesExecMask(), writesMode(), writesSCC(), writesVCC(), and ~GPUDynInst().

◆ a_data

uint8_t* gem5::GPUDynInst::a_data

Definition at line 179 of file gpu_dyn_inst.hh.

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

◆ accessTime

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

Definition at line 496 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 192 of file gpu_dyn_inst.hh.

Referenced by allLanesZero(), and GPUDynInst().

◆ d_data

uint8_t* gem5::GPUDynInst::d_data

Definition at line 175 of file gpu_dyn_inst.hh.

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

◆ exec_mask

VectorMask gem5::GPUDynInst::exec_mask

Definition at line 183 of file gpu_dyn_inst.hh.

Referenced by completeAcc(), and initiateAcc().

◆ execUnitId

int gem5::GPUDynInst::execUnitId

Definition at line 198 of file gpu_dyn_inst.hh.

◆ isSaveRestore

bool gem5::GPUDynInst::isSaveRestore

Definition at line 483 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ kern_id

int gem5::GPUDynInst::kern_id

Definition at line 190 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ latency

WaitClass gem5::GPUDynInst::latency

Definition at line 202 of file gpu_dyn_inst.hh.

◆ lineAddressTime

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

Definition at line 504 of file gpu_dyn_inst.hh.

Referenced by getLineAddressTime(), and profileLineAddressTime().

◆ maxSrcScalarRegOpSize

int gem5::GPUDynInst::maxSrcScalarRegOpSize
private

Definition at line 492 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and maxSrcScalarRegOperandSize().

◆ maxSrcVecRegOpSize

int gem5::GPUDynInst::maxSrcVecRegOpSize
private

Definition at line 491 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst(), and maxSrcVecRegOperandSize().

◆ memStatusVector

StatusVector gem5::GPUDynInst::memStatusVector

Definition at line 459 of file gpu_dyn_inst.hh.

◆ numScalarReqs

int gem5::GPUDynInst::numScalarReqs

Definition at line 469 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ pAddr

Addr gem5::GPUDynInst::pAddr

Definition at line 172 of file gpu_dyn_inst.hh.

◆ roundTripTime

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

Definition at line 500 of file gpu_dyn_inst.hh.

Referenced by getRoundTripTime(), and profileRoundTripTime().

◆ scalar_data

uint8_t* gem5::GPUDynInst::scalar_data

Definition at line 177 of file gpu_dyn_inst.hh.

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

◆ scalarAddr

Addr gem5::GPUDynInst::scalarAddr

Definition at line 169 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ simdId

int gem5::GPUDynInst::simdId

◆ statusVector

◆ systemReq

bool gem5::GPUDynInst::systemReq = false
private

Definition at line 493 of file gpu_dyn_inst.hh.

Referenced by isSystemReq(), and setSystemReq().

◆ time

Tick gem5::GPUDynInst::time

Definition at line 200 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ tlbHitLevel

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

Definition at line 465 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ wfDynId

int gem5::GPUDynInst::wfDynId

Definition at line 188 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ wfSlotId

int gem5::GPUDynInst::wfSlotId

Definition at line 196 of file gpu_dyn_inst.hh.

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

◆ wg_id

int gem5::GPUDynInst::wg_id

Definition at line 194 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ x_data

uint8_t* gem5::GPUDynInst::x_data

Definition at line 181 of file gpu_dyn_inst.hh.

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


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

Generated on Sat Oct 18 2025 08:06:51 for gem5 by doxygen 1.14.0