gem5  v20.1.0.0
Public Types | Public Member Functions | Public Attributes | Private Attributes | List of all members
GPUDynInst Class Reference

#include <gpu_dyn_inst.hh>

Inheritance diagram for GPUDynInst:

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)
int numSrcRegOperands ()
int numDstRegOperands ()
int numDstVecOperands ()
int numSrcVecOperands ()
int numSrcVecDWORDs ()
int numDstVecDWORDs ()
int numOpdDWORDs (int operandIdx)
int getNumOperands ()
bool isVectorRegister (int operandIdx)
bool isScalarRegister (int operandIdx)
int getRegisterIndex (int operandIdx, GPUDynInstPtr gpuDynInst)
int getOperandSize (int operandIdx)
bool isDstOperand (int operandIdx)
bool isSrcOperand (int operandIdx)
bool hasDestinationSgpr () const
bool hasSourceSgpr () const
bool hasDestinationVgpr () const
bool hasSourceVgpr () const
bool hasSgprRawDependence (GPUDynInstPtr s)
bool hasVgprRawDependence (GPUDynInstPtr s)
bool isOpcode (const std::string &opcodeStr) const
bool isOpcode (const std::string &opcodeStr, const std::string &extStr) const
bool srcIsVgpr (int index) 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 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 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

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

Additional Inherited Members

- Protected Attributes inherited from GPUExecContext

Detailed Description

Definition at line 76 of file gpu_dyn_inst.hh.

Member Typedef Documentation

◆ StatusVector

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

Definition at line 403 of file gpu_dyn_inst.hh.

Constructor & Destructor Documentation

◆ GPUDynInst()

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

◆ ~GPUDynInst()

GPUDynInst::~GPUDynInst ( )

Definition at line 85 of file

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

Member Function Documentation

◆ allLanesZero()

bool GPUDynInst::allLanesZero ( ) const

Definition at line 361 of file gpu_dyn_inst.hh.

References addr, cu_id, DPRINTF, ArmISA::NumVecElemPerVecReg, simdId, statusVector, and wfSlotId.

◆ completeAcc()

void GPUDynInst::completeAcc ( GPUDynInstPtr  gpuDynInst)

◆ decrementStatusVector()

void GPUDynInst::decrementStatusVector ( int  lane)

Definition at line 342 of file gpu_dyn_inst.hh.

References statusVector.

◆ disassemble()

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

Definition at line 254 of file

References _staticInst, and GPUStaticInst::disassemble().

◆ doApertureCheck()

void GPUDynInst::doApertureCheck ( const VectorMask mask)

◆ execute()

void GPUDynInst::execute ( GPUDynInstPtr  gpuDynInst)

Definition at line 95 of file

References _staticInst, and GPUStaticInst::execute().

◆ executedAs()

Enums::StorageClassType GPUDynInst::executedAs ( )

Definition at line 266 of file

References _staticInst, and GPUStaticInst::executed_as.

Referenced by doApertureCheck(), and resolveFlatSegment().

◆ getAccessTime()

Tick GPUDynInst::getAccessTime ( ) const

Definition at line 416 of file gpu_dyn_inst.hh.

References accessTime.

◆ getLaneStatus()

int GPUDynInst::getLaneStatus ( int  lane) const

Definition at line 353 of file gpu_dyn_inst.hh.

References statusVector.

◆ getLineAddressTime()

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

Definition at line 424 of file gpu_dyn_inst.hh.

References lineAddressTime.

◆ getNumOperands()

int GPUDynInst::getNumOperands ( )

◆ getOperandSize()

int GPUDynInst::getOperandSize ( int  operandIdx)

Definition at line 167 of file

References _staticInst, and GPUStaticInst::getOperandSize().

◆ getRegisterIndex()

int GPUDynInst::getRegisterIndex ( int  operandIdx,
GPUDynInstPtr  gpuDynInst 

Definition at line 161 of file

References _staticInst, and GPUStaticInst::getRegisterIndex().

◆ getRoundTripTime()

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

Definition at line 421 of file gpu_dyn_inst.hh.

References roundTripTime.

◆ hasDestinationSgpr()

bool GPUDynInst::hasDestinationSgpr ( ) const

◆ hasDestinationVgpr()

bool GPUDynInst::hasDestinationVgpr ( ) const

◆ hasSgprRawDependence()

bool GPUDynInst::hasSgprRawDependence ( GPUDynInstPtr  s)

◆ hasSourceSgpr()

bool GPUDynInst::hasSourceSgpr ( ) const

◆ hasSourceVgpr()

bool GPUDynInst::hasSourceVgpr ( ) const

◆ hasVgprRawDependence()

bool GPUDynInst::hasVgprRawDependence ( GPUDynInstPtr  s)

◆ ignoreExec()

bool GPUDynInst::ignoreExec ( ) const

Definition at line 516 of file

References _staticInst, and GPUStaticInst::ignoreExec().

◆ initiateAcc()

void GPUDynInst::initiateAcc ( GPUDynInstPtr  gpuDynInst)

◆ isALU()

bool GPUDynInst::isALU ( ) const

accessor methods for the attributes of the underlying GPU static instruction

Definition at line 330 of file

References _staticInst, and GPUStaticInst::isALU().

◆ isArgLoad()

bool GPUDynInst::isArgLoad ( ) const

Definition at line 629 of file

References _staticInst, and GPUStaticInst::isArgLoad().

◆ isArgSeg()

bool GPUDynInst::isArgSeg ( ) const

Definition at line 647 of file

References _staticInst, and GPUStaticInst::isArgSeg().

◆ isAtomic()

bool GPUDynInst::isAtomic ( ) const

Definition at line 438 of file

References _staticInst, and GPUStaticInst::isAtomic().

Referenced by resolveFlatSegment().

◆ isAtomicAdd()

bool GPUDynInst::isAtomicAdd ( ) const

Definition at line 593 of file

References _staticInst, and GPUStaticInst::isAtomicAdd().

Referenced by makeAtomicOpFunctor().

◆ isAtomicAnd()

bool GPUDynInst::isAtomicAnd ( ) const

Definition at line 564 of file

References _staticInst, and GPUStaticInst::isAtomicAnd().

Referenced by makeAtomicOpFunctor().

◆ isAtomicCAS()

bool GPUDynInst::isAtomicCAS ( ) const

Definition at line 582 of file

References _staticInst, and GPUStaticInst::isAtomicCAS().

Referenced by makeAtomicOpFunctor().

◆ isAtomicDec()

bool GPUDynInst::isAtomicDec ( ) const

Definition at line 611 of file

References _staticInst, and GPUStaticInst::isAtomicDec().

Referenced by makeAtomicOpFunctor().

◆ isAtomicExch()

bool GPUDynInst::isAtomicExch ( ) const

Definition at line 587 of file

References _staticInst, and GPUStaticInst::isAtomicExch().

Referenced by makeAtomicOpFunctor().

◆ isAtomicInc()

bool GPUDynInst::isAtomicInc ( ) const

Definition at line 605 of file

References _staticInst, and GPUStaticInst::isAtomicInc().

Referenced by makeAtomicOpFunctor().

◆ isAtomicMax()

bool GPUDynInst::isAtomicMax ( ) const

Definition at line 617 of file

References _staticInst, and GPUStaticInst::isAtomicMax().

Referenced by makeAtomicOpFunctor().

◆ isAtomicMin()

bool GPUDynInst::isAtomicMin ( ) const

Definition at line 623 of file

References _staticInst, and GPUStaticInst::isAtomicMin().

Referenced by makeAtomicOpFunctor().

◆ isAtomicNoRet()

bool GPUDynInst::isAtomicNoRet ( ) const

Definition at line 444 of file

References _staticInst, and GPUStaticInst::isAtomicNoRet().

Referenced by setRequestFlags().

◆ isAtomicOr()

bool GPUDynInst::isAtomicOr ( ) const

Definition at line 570 of file

References _staticInst, and GPUStaticInst::isAtomicOr().

Referenced by makeAtomicOpFunctor().

◆ isAtomicRet()

bool GPUDynInst::isAtomicRet ( ) const

Definition at line 450 of file

References _staticInst, and GPUStaticInst::isAtomicRet().

Referenced by setRequestFlags().

◆ isAtomicSub()

bool GPUDynInst::isAtomicSub ( ) const

Definition at line 599 of file

References _staticInst, and GPUStaticInst::isAtomicSub().

Referenced by makeAtomicOpFunctor().

◆ isAtomicXor()

bool GPUDynInst::isAtomicXor ( ) const

Definition at line 576 of file

References _staticInst, and GPUStaticInst::isAtomicXor().

Referenced by makeAtomicOpFunctor().

◆ isBarrier()

bool GPUDynInst::isBarrier ( ) const

Definition at line 402 of file

References _staticInst, and GPUStaticInst::isBarrier().

◆ isBranch()

bool GPUDynInst::isBranch ( ) const

Definition at line 336 of file

References _staticInst, and GPUStaticInst::isBranch().

◆ isCondBranch()

bool GPUDynInst::isCondBranch ( ) const

Definition at line 342 of file

References _staticInst, and GPUStaticInst::isCondBranch().

◆ isDPPInst()

bool GPUDynInst::isDPPInst ( ) const

Definition at line 372 of file

References _staticInst, and GPUStaticInst::isDPPInst().

◆ isDstOperand()

bool GPUDynInst::isDstOperand ( int  operandIdx)

Definition at line 173 of file

References _staticInst, and GPUStaticInst::isDstOperand().

◆ isEndOfKernel()

bool GPUDynInst::isEndOfKernel ( ) const

Definition at line 354 of file

References _staticInst, and GPUStaticInst::isEndOfKernel().

Referenced by setRequestFlags().

◆ isF16()

bool GPUDynInst::isF16 ( ) const

Definition at line 701 of file

References _staticInst, and GPUStaticInst::isF16().

◆ isF32()

bool GPUDynInst::isF32 ( ) const

Definition at line 707 of file

References _staticInst, and GPUStaticInst::isF32().

◆ isF64()

bool GPUDynInst::isF64 ( ) const

Definition at line 713 of file

References _staticInst, and GPUStaticInst::isF64().

◆ isFlat()

bool GPUDynInst::isFlat ( ) const

Definition at line 420 of file

References _staticInst, and GPUStaticInst::isFlat().

◆ isFMA()

bool GPUDynInst::isFMA ( ) const

Definition at line 719 of file

References _staticInst, and GPUStaticInst::isFMA().

◆ isGloballyCoherent()

bool GPUDynInst::isGloballyCoherent ( ) const

Definition at line 689 of file

References _staticInst, and GPUStaticInst::isGloballyCoherent().

Referenced by setRequestFlags().

◆ isGlobalMem()

bool GPUDynInst::isGlobalMem ( ) const

Definition at line 635 of file

References _staticInst, and GPUStaticInst::isGlobalMem().

◆ isGlobalSeg()

bool GPUDynInst::isGlobalSeg ( ) const

Definition at line 653 of file

References _staticInst, and GPUStaticInst::isGlobalSeg().

◆ isGroupSeg()

bool GPUDynInst::isGroupSeg ( ) const

Definition at line 659 of file

References _staticInst, and GPUStaticInst::isGroupSeg().

◆ isKernArgSeg()

bool GPUDynInst::isKernArgSeg ( ) const

Definition at line 665 of file

References _staticInst, and GPUStaticInst::isKernArgSeg().

◆ isKernelLaunch()

bool GPUDynInst::isKernelLaunch ( ) const

Definition at line 360 of file

References _staticInst, and GPUStaticInst::isKernelLaunch().

Referenced by setRequestFlags().

◆ isLoad()

bool GPUDynInst::isLoad ( ) const

Definition at line 426 of file

References _staticInst, and GPUStaticInst::isLoad().

Referenced by resolveFlatSegment().

◆ isLocalMem()

bool GPUDynInst::isLocalMem ( ) const

Definition at line 641 of file

References _staticInst, and GPUStaticInst::isLocalMem().

◆ isMAC()

bool GPUDynInst::isMAC ( ) const

Definition at line 725 of file

References _staticInst, and GPUStaticInst::isMAC().

◆ isMAD()

bool GPUDynInst::isMAD ( ) const

Definition at line 731 of file

References _staticInst, and GPUStaticInst::isMAD().

◆ isMemRef()

bool GPUDynInst::isMemRef ( ) const

Definition at line 414 of file

References _staticInst, and GPUStaticInst::isMemRef().

◆ isMemSync()

bool GPUDynInst::isMemSync ( ) const

Definition at line 408 of file

References _staticInst, and GPUStaticInst::isMemSync().

Referenced by resolveFlatSegment(), and setRequestFlags().

◆ isNop()

bool GPUDynInst::isNop ( ) const

Definition at line 348 of file

References _staticInst, and GPUStaticInst::isNop().

◆ isOpcode() [1/2]

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

Definition at line 248 of file

References _staticInst, and GPUStaticInst::opcode().

◆ isOpcode() [2/2]

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

Definition at line 240 of file

References _staticInst, and GPUStaticInst::opcode().

◆ isPrivateSeg()

bool GPUDynInst::isPrivateSeg ( ) const

Definition at line 671 of file

References _staticInst, and GPUStaticInst::isPrivateSeg().

◆ isReadOnlySeg()

bool GPUDynInst::isReadOnlySeg ( ) const

Definition at line 677 of file

References _staticInst, and GPUStaticInst::isReadOnlySeg().

◆ isReturn()

bool GPUDynInst::isReturn ( ) const

Definition at line 378 of file

References _staticInst, and GPUStaticInst::isReturn().

◆ isScalar()

bool GPUDynInst::isScalar ( ) const

Definition at line 462 of file

References _staticInst, and GPUStaticInst::isScalar().

◆ isScalarRegister()

bool GPUDynInst::isScalarRegister ( int  operandIdx)

Definition at line 155 of file

References _staticInst, and GPUStaticInst::isScalarRegister().

Referenced by hasSgprRawDependence().

◆ isSDWAInst()

bool GPUDynInst::isSDWAInst ( ) const

Definition at line 366 of file

References _staticInst, and GPUStaticInst::isSDWAInst().

◆ isSpecialOp()

bool GPUDynInst::isSpecialOp ( ) const

Definition at line 390 of file

References _staticInst, and GPUStaticInst::isSpecialOp().

◆ isSpillSeg()

bool GPUDynInst::isSpillSeg ( ) const

Definition at line 683 of file

References _staticInst, and GPUStaticInst::isSpillSeg().

◆ isSrcOperand()

bool GPUDynInst::isSrcOperand ( int  operandIdx)

Definition at line 179 of file

References _staticInst, and GPUStaticInst::isSrcOperand().

Referenced by hasSgprRawDependence(), and hasVgprRawDependence().

◆ isStore()

bool GPUDynInst::isStore ( ) const

Definition at line 432 of file

References _staticInst, and GPUStaticInst::isStore().

Referenced by resolveFlatSegment().

◆ isSystemCoherent()

bool GPUDynInst::isSystemCoherent ( ) const

Definition at line 695 of file

References _staticInst, and GPUStaticInst::isSystemCoherent().

Referenced by setRequestFlags().

◆ isUnconditionalJump()

bool GPUDynInst::isUnconditionalJump ( ) const

Definition at line 384 of file

References _staticInst, and GPUStaticInst::isUnconditionalJump().

◆ isVector()

bool GPUDynInst::isVector ( ) const

Definition at line 456 of file

References _staticInst, and GPUStaticInst::isScalar().

◆ isVectorRegister()

bool GPUDynInst::isVectorRegister ( int  operandIdx)

Definition at line 149 of file

References _staticInst, and GPUStaticInst::isVectorRegister().

Referenced by hasVgprRawDependence().

◆ isWaitcnt()

bool GPUDynInst::isWaitcnt ( ) const

Definition at line 396 of file

References _staticInst, and GPUStaticInst::isWaitcnt().

◆ makeAtomicOpFunctor()

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

◆ numDstRegOperands()

int GPUDynInst::numDstRegOperands ( )

Definition at line 107 of file

References _staticInst, and GPUStaticInst::numDstRegOperands().

◆ numDstVecDWORDs()

int GPUDynInst::numDstVecDWORDs ( )

Definition at line 131 of file

References _staticInst, and GPUStaticInst::numDstVecDWORDs().

◆ numDstVecOperands()

int GPUDynInst::numDstVecOperands ( )

Definition at line 119 of file

References _staticInst, and GPUStaticInst::numDstVecOperands().

◆ numOpdDWORDs()

int GPUDynInst::numOpdDWORDs ( int  operandIdx)

Definition at line 137 of file

References _staticInst, and GPUStaticInst::numOpdDWORDs().

◆ numSrcRegOperands()

int GPUDynInst::numSrcRegOperands ( )

Definition at line 101 of file

References _staticInst, and GPUStaticInst::numSrcRegOperands().

◆ numSrcVecDWORDs()

int GPUDynInst::numSrcVecDWORDs ( )

Definition at line 125 of file

References _staticInst, and GPUStaticInst::numSrcVecDWORDs().

◆ numSrcVecOperands()

int GPUDynInst::numSrcVecOperands ( )

Definition at line 113 of file

References _staticInst, and GPUStaticInst::numSrcVecOperands().

◆ printStatusVector()

std::string GPUDynInst::printStatusVector ( ) const

Definition at line 387 of file gpu_dyn_inst.hh.

References ArmISA::NumVecElemPerVecReg, statusVector, and sc_dt::to_string().

◆ profileLineAddressTime()

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

Definition at line 981 of file

References addr, and lineAddressTime.

◆ profileRoundTripTime()

void GPUDynInst::profileRoundTripTime ( Tick  currentTime,
int  hopId 

Definition at line 971 of file

References roundTripTime.

◆ readsEXEC()

bool GPUDynInst::readsEXEC ( ) const

Definition at line 504 of file

References _staticInst, and GPUStaticInst::readsEXEC().

◆ readsExecMask()

bool GPUDynInst::readsExecMask ( ) const

◆ readsFlatScratch()

bool GPUDynInst::readsFlatScratch ( ) const

◆ readsMode()

bool GPUDynInst::readsMode ( ) const

Definition at line 492 of file

References _staticInst, and GPUStaticInst::readsMode().

◆ readsSCC()

bool GPUDynInst::readsSCC ( ) const

Definition at line 468 of file

References _staticInst, and GPUStaticInst::readsSCC().

◆ readsVCC()

bool GPUDynInst::readsVCC ( ) const

Definition at line 480 of file

References _staticInst, and GPUStaticInst::readsVCC().

◆ resetEntireStatusVector()

void GPUDynInst::resetEntireStatusVector ( )

Definition at line 314 of file gpu_dyn_inst.hh.

References ArmISA::NumVecElemPerVecReg, resetStatusVector(), and statusVector.

◆ resetStatusVector()

void GPUDynInst::resetStatusVector ( int  lane)

Definition at line 324 of file gpu_dyn_inst.hh.

References setStatusVector().

Referenced by resetEntireStatusVector().

◆ resolveFlatSegment()

void 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: ROCm_Compiler_SDK/ROCm-Native-ISA.html#flat-scratch ROCm-ComputeABI-Doc/blob/master/ #flat-addressing

Definition at line 809 of file

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

◆ seqNum()

InstSeqNum GPUDynInst::seqNum ( ) const

Definition at line 260 of file

References _seqNum.

◆ setAccessTime()

void GPUDynInst::setAccessTime ( Tick  currentTime)

Definition at line 418 of file gpu_dyn_inst.hh.

References accessTime.

◆ setRequestFlags()

void GPUDynInst::setRequestFlags ( RequestPtr  req) const

◆ setStatusVector()

void GPUDynInst::setStatusVector ( int  lane,
int  newVal 

Definition at line 331 of file gpu_dyn_inst.hh.

References statusVector.

Referenced by resetStatusVector().

◆ srcIsVgpr()

bool GPUDynInst::srcIsVgpr ( int  index) const

◆ srcLiteral()

TheGpuISA::ScalarRegU32 GPUDynInst::srcLiteral ( ) const

Definition at line 924 of file

References _staticInst, and GPUStaticInst::srcLiteral().

◆ staticInstruction()

GPUStaticInst* GPUDynInst::staticInstruction ( )

Definition at line 166 of file gpu_dyn_inst.hh.

References _staticInst.

Referenced by doApertureCheck().

◆ updateStats()

void GPUDynInst::updateStats ( )

◆ writesEXEC()

bool GPUDynInst::writesEXEC ( ) const

Definition at line 510 of file

References _staticInst, and GPUStaticInst::writesEXEC().

◆ writesExecMask()

bool GPUDynInst::writesExecMask ( ) const

◆ writesFlatScratch()

bool GPUDynInst::writesFlatScratch ( ) const

◆ writesMode()

bool GPUDynInst::writesMode ( ) const

Definition at line 498 of file

References _staticInst, and GPUStaticInst::writesMode().

◆ writesSCC()

bool GPUDynInst::writesSCC ( ) const

Definition at line 474 of file

References _staticInst, and GPUStaticInst::writesSCC().

◆ writesVCC()

bool GPUDynInst::writesVCC ( ) const

Definition at line 486 of file

References _staticInst, and GPUStaticInst::writesVCC().

Member Data Documentation

◆ _seqNum

const InstSeqNum GPUDynInst::_seqNum

Definition at line 431 of file gpu_dyn_inst.hh.

Referenced by seqNum().

◆ _staticInst

GPUStaticInst* GPUDynInst::_staticInst

◆ a_data

uint8_t* GPUDynInst::a_data

Definition at line 131 of file gpu_dyn_inst.hh.

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

◆ accessTime

Tick GPUDynInst::accessTime = -1

Definition at line 434 of file gpu_dyn_inst.hh.

Referenced by getAccessTime(), and setAccessTime().

◆ addr

std::vector<Addr> GPUDynInst::addr

◆ cu_id

int GPUDynInst::cu_id

Definition at line 144 of file gpu_dyn_inst.hh.

Referenced by allLanesZero(), and GPUDynInst().

◆ d_data

uint8_t* GPUDynInst::d_data

Definition at line 127 of file gpu_dyn_inst.hh.

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

◆ exec_mask

VectorMask GPUDynInst::exec_mask

Definition at line 135 of file gpu_dyn_inst.hh.

Referenced by completeAcc(), and initiateAcc().

◆ execUnitId

int GPUDynInst::execUnitId

Definition at line 150 of file gpu_dyn_inst.hh.

◆ isSaveRestore

bool GPUDynInst::isSaveRestore

Definition at line 428 of file gpu_dyn_inst.hh.

◆ kern_id

int GPUDynInst::kern_id

Definition at line 142 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ latency

WaitClass GPUDynInst::latency

Definition at line 154 of file gpu_dyn_inst.hh.

◆ lineAddressTime

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

Definition at line 442 of file gpu_dyn_inst.hh.

Referenced by getLineAddressTime(), and profileLineAddressTime().

◆ memStatusVector

StatusVector GPUDynInst::memStatusVector

Definition at line 404 of file gpu_dyn_inst.hh.

◆ numScalarReqs

int GPUDynInst::numScalarReqs

Definition at line 414 of file gpu_dyn_inst.hh.

◆ pAddr

Addr GPUDynInst::pAddr

Definition at line 124 of file gpu_dyn_inst.hh.

◆ roundTripTime

std::vector<Tick> GPUDynInst::roundTripTime

Definition at line 438 of file gpu_dyn_inst.hh.

Referenced by getRoundTripTime(), and profileRoundTripTime().

◆ scalar_data

uint8_t* GPUDynInst::scalar_data

Definition at line 129 of file gpu_dyn_inst.hh.

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

◆ scalarAddr

Addr GPUDynInst::scalarAddr

Definition at line 121 of file gpu_dyn_inst.hh.

◆ simdId

int GPUDynInst::simdId

◆ statusVector

std::vector<int> GPUDynInst::statusVector

◆ time

Tick GPUDynInst::time

Definition at line 152 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ tlbHitLevel

std::vector<int> GPUDynInst::tlbHitLevel

Definition at line 410 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ wfDynId

int GPUDynInst::wfDynId

Definition at line 140 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ wfSlotId

int GPUDynInst::wfSlotId

Definition at line 148 of file gpu_dyn_inst.hh.

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

◆ wg_id

int GPUDynInst::wg_id

Definition at line 146 of file gpu_dyn_inst.hh.

Referenced by GPUDynInst().

◆ x_data

uint8_t* GPUDynInst::x_data

Definition at line 133 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 Sep 30 2020 14:02:25 for gem5 by doxygen 1.8.17