gem5
v21.1.0.0
|
#include <gpu_dyn_inst.hh>
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 () |
GPUStaticInst * | staticInstruction () |
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< Tick > | getRoundTripTime () const |
void | profileLineAddressTime (Addr addr, Tick currentTime, int hopId) |
const std::map< Addr, std::vector< Tick > > & | getLineAddressTime () const |
![]() | |
GPUExecContext (ComputeUnit *_cu, Wavefront *_wf) | |
Wavefront * | wavefront () |
ComputeUnit * | computeUnit () |
template<typename T > | |
T | readConstVal (int opIdx) const |
RegVal | readMiscReg (int opIdx) const |
void | writeMiscReg (int opIdx, RegVal operandVal) |
Public Attributes | |
Addr | scalarAddr |
std::vector< Addr > | addr |
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< Tick > | roundTripTime |
std::map< Addr, std::vector< Tick > > | lineAddressTime |
Additional Inherited Members | |
![]() | |
ComputeUnit * | cu |
Wavefront * | wf |
TheGpuISA::GPUISA * | gpuISA |
Definition at line 118 of file gpu_dyn_inst.hh.
typedef std::unordered_map<Addr, std::vector<int> > gem5::GPUDynInst::StatusVector |
Definition at line 451 of file gpu_dyn_inst.hh.
gem5::GPUDynInst::GPUDynInst | ( | ComputeUnit * | _cu, |
Wavefront * | _wf, | ||
GPUStaticInst * | static_inst, | ||
uint64_t | instSeqNum | ||
) |
Definition at line 46 of file gpu_dyn_inst.cc.
References _staticInst, a_data, gem5::GPUExecContext::computeUnit(), cu_id, gem5::ComputeUnit::cu_id, d_data, disassemble(), DPRINTF, getNumOperands(), gem5::ArmISA::i, gem5::GPUStaticInst::initDynOperandInfo(), gem5::GPUStaticInst::initOperandInfo(), kern_id, gem5::Wavefront::kernId, gem5::ArmISA::NumVecElemPerVecReg, scalar_data, gem5::Wavefront::simdId, simdId, statusVector, time, tlbHitLevel, gem5::GPUExecContext::wavefront(), wfDynId, gem5::Wavefront::wfDynId, gem5::ComputeUnit::wfSize(), gem5::Wavefront::wfSlotId, wfSlotId, wg_id, gem5::Wavefront::wgId, and x_data.
gem5::GPUDynInst::~GPUDynInst | ( | ) |
Definition at line 98 of file gpu_dyn_inst.cc.
References _staticInst, a_data, d_data, scalar_data, and x_data.
|
inline |
Definition at line 409 of file gpu_dyn_inst.hh.
References addr, cu_id, DPRINTF, gem5::ArmISA::NumVecElemPerVecReg, simdId, statusVector, and wfSlotId.
void gem5::GPUDynInst::completeAcc | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 304 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::completeAcc(), gem5::GPUExecContext::cu, gem5::ComputeUnit::cu_id, DPRINTF, exec_mask, simdId, and wfSlotId.
|
inline |
Definition at line 390 of file gpu_dyn_inst.hh.
References statusVector.
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().
void gem5::GPUDynInst::doApertureCheck | ( | const VectorMask & | mask | ) |
Definition at line 737 of file gpu_dyn_inst.cc.
References addr, gem5::bits(), gem5::GPUExecContext::computeUnit(), gem5::GPUStaticInst::executed_as, executedAs(), fatal, gem5::Shader::isLdsApe(), gem5::mask(), sc_core::SC_NONE, gem5::ComputeUnit::shader, staticInstruction(), and gem5::ComputeUnit::wfSize().
Referenced by resolveFlatSegment().
const std::vector< OperandInfo > & gem5::GPUDynInst::dstScalarRegOperands | ( | ) | const |
Definition at line 132 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::dstScalarRegOperands().
Referenced by hasDestinationSgpr(), and writesFlatScratch().
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().
void gem5::GPUDynInst::execute | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 108 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::execute().
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().
|
inline |
Definition at line 464 of file gpu_dyn_inst.hh.
References accessTime.
|
inline |
Definition at line 401 of file gpu_dyn_inst.hh.
References statusVector.
|
inline |
Definition at line 472 of file gpu_dyn_inst.hh.
References lineAddressTime.
int gem5::GPUDynInst::getNumOperands | ( | ) | const |
Definition at line 232 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::getNumOperands().
Referenced by GPUDynInst().
|
inline |
Definition at line 469 of file gpu_dyn_inst.hh.
References roundTripTime.
bool gem5::GPUDynInst::hasDestinationSgpr | ( | ) | const |
Definition at line 256 of file gpu_dyn_inst.cc.
References dstScalarRegOperands().
bool gem5::GPUDynInst::hasDestinationVgpr | ( | ) | const |
Definition at line 244 of file gpu_dyn_inst.cc.
References dstVecRegOperands().
bool gem5::GPUDynInst::hasSourceSgpr | ( | ) | const |
Definition at line 250 of file gpu_dyn_inst.cc.
References srcScalarRegOperands().
bool gem5::GPUDynInst::hasSourceVgpr | ( | ) | const |
Definition at line 238 of file gpu_dyn_inst.cc.
References srcVecRegOperands().
bool gem5::GPUDynInst::ignoreExec | ( | ) | const |
Definition at line 518 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::ignoreExec().
void gem5::GPUDynInst::initiateAcc | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 295 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUExecContext::cu, gem5::ComputeUnit::cu_id, DPRINTF, exec_mask, gem5::GPUStaticInst::initiateAcc(), simdId, and wfSlotId.
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().
bool gem5::GPUDynInst::isArgLoad | ( | ) | const |
Definition at line 629 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isArgLoad().
bool gem5::GPUDynInst::isArgSeg | ( | ) | const |
Definition at line 647 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isArgSeg().
bool gem5::GPUDynInst::isAtomic | ( | ) | const |
Definition at line 432 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomic().
Referenced by resolveFlatSegment().
bool gem5::GPUDynInst::isAtomicAdd | ( | ) | const |
Definition at line 593 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicAdd().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicAnd | ( | ) | const |
Definition at line 564 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicAnd().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicCAS | ( | ) | const |
Definition at line 582 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicCAS().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicDec | ( | ) | const |
Definition at line 611 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicDec().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicExch | ( | ) | const |
Definition at line 587 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicExch().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicInc | ( | ) | const |
Definition at line 605 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicInc().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicMax | ( | ) | const |
Definition at line 617 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicMax().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicMin | ( | ) | const |
Definition at line 623 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicMin().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicNoRet | ( | ) | const |
Definition at line 438 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicNoRet().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isAtomicOr | ( | ) | const |
Definition at line 570 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicOr().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicRet | ( | ) | const |
Definition at line 444 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicRet().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isAtomicSub | ( | ) | const |
Definition at line 599 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicSub().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicXor | ( | ) | const |
Definition at line 576 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicXor().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isBarrier | ( | ) | const |
Definition at line 396 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isBarrier().
bool gem5::GPUDynInst::isBranch | ( | ) | const |
Definition at line 324 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isBranch().
bool gem5::GPUDynInst::isCondBranch | ( | ) | const |
Definition at line 330 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isCondBranch().
bool gem5::GPUDynInst::isDPPInst | ( | ) | const |
Definition at line 360 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isDPPInst().
bool gem5::GPUDynInst::isEndOfKernel | ( | ) | const |
Definition at line 342 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isEndOfKernel().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isF16 | ( | ) | const |
Definition at line 701 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isF16().
bool gem5::GPUDynInst::isF32 | ( | ) | const |
Definition at line 707 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isF32().
bool gem5::GPUDynInst::isF64 | ( | ) | const |
Definition at line 713 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isF64().
bool gem5::GPUDynInst::isFlat | ( | ) | const |
Definition at line 414 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isFlat().
bool gem5::GPUDynInst::isFMA | ( | ) | const |
Definition at line 719 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isFMA().
bool gem5::GPUDynInst::isGloballyCoherent | ( | ) | const |
Definition at line 689 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGloballyCoherent().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isGlobalMem | ( | ) | const |
Definition at line 635 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGlobalMem().
bool gem5::GPUDynInst::isGlobalSeg | ( | ) | const |
Definition at line 653 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGlobalSeg().
bool gem5::GPUDynInst::isGroupSeg | ( | ) | const |
Definition at line 659 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGroupSeg().
bool gem5::GPUDynInst::isKernArgSeg | ( | ) | const |
Definition at line 665 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isKernArgSeg().
bool gem5::GPUDynInst::isKernelLaunch | ( | ) | const |
Definition at line 348 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isKernelLaunch().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isLoad | ( | ) | const |
Definition at line 420 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isLoad().
Referenced by resolveFlatSegment().
bool gem5::GPUDynInst::isLocalMem | ( | ) | const |
Definition at line 641 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isLocalMem().
bool gem5::GPUDynInst::isMAC | ( | ) | const |
Definition at line 725 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMAC().
bool gem5::GPUDynInst::isMAD | ( | ) | const |
Definition at line 731 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMAD().
bool gem5::GPUDynInst::isMemRef | ( | ) | const |
Definition at line 408 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMemRef().
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().
bool gem5::GPUDynInst::isNop | ( | ) | const |
Definition at line 336 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isNop().
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().
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().
bool gem5::GPUDynInst::isPrivateSeg | ( | ) | const |
Definition at line 671 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isPrivateSeg().
bool gem5::GPUDynInst::isReadOnlySeg | ( | ) | const |
Definition at line 677 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isReadOnlySeg().
bool gem5::GPUDynInst::isReturn | ( | ) | const |
Definition at line 366 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isReturn().
bool gem5::GPUDynInst::isScalar | ( | ) | const |
Definition at line 456 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isScalar().
bool gem5::GPUDynInst::isSDWAInst | ( | ) | const |
Definition at line 354 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSDWAInst().
bool gem5::GPUDynInst::isSleep | ( | ) | const |
Definition at line 390 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSleep().
bool gem5::GPUDynInst::isSpecialOp | ( | ) | const |
Definition at line 378 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSpecialOp().
bool gem5::GPUDynInst::isSpillSeg | ( | ) | const |
Definition at line 683 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSpillSeg().
bool gem5::GPUDynInst::isStore | ( | ) | const |
Definition at line 426 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isStore().
Referenced by resolveFlatSegment().
bool gem5::GPUDynInst::isSystemCoherent | ( | ) | const |
Definition at line 695 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSystemCoherent().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isUnconditionalJump | ( | ) | const |
Definition at line 372 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isUnconditionalJump().
bool gem5::GPUDynInst::isVector | ( | ) | const |
Definition at line 450 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isScalar().
bool gem5::GPUDynInst::isWaitcnt | ( | ) | const |
Definition at line 384 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isWaitcnt().
|
inline |
Definition at line 303 of file gpu_dyn_inst.hh.
References gem5::GPUExecContext::cu, fatal, isAtomicAdd(), isAtomicAnd(), isAtomicCAS(), isAtomicDec(), isAtomicExch(), isAtomicInc(), isAtomicMax(), isAtomicMin(), isAtomicOr(), isAtomicSub(), and isAtomicXor().
int gem5::GPUDynInst::maxOperandSize | ( | ) |
Definition at line 226 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::maxOperandSize().
int gem5::GPUDynInst::maxSrcScalarRegOperandSize | ( | ) |
Definition at line 200 of file gpu_dyn_inst.cc.
References maxSrcScalarRegOpSize, and srcScalarRegOperands().
int gem5::GPUDynInst::maxSrcVecRegOperandSize | ( | ) |
Definition at line 162 of file gpu_dyn_inst.cc.
References maxSrcVecRegOpSize, and srcVecRegOperands().
int gem5::GPUDynInst::numDstRegOperands | ( | ) |
Definition at line 144 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstRegOperands().
int gem5::GPUDynInst::numDstScalarDWords | ( | ) |
Definition at line 220 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstScalarDWords().
int gem5::GPUDynInst::numDstScalarRegOperands | ( | ) | const |
Definition at line 194 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstScalarOperands().
int gem5::GPUDynInst::numDstVecDWords | ( | ) |
Definition at line 182 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstVecDWords().
int gem5::GPUDynInst::numDstVecRegOperands | ( | ) | const |
Definition at line 156 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstVecOperands().
int gem5::GPUDynInst::numSrcRegOperands | ( | ) |
Definition at line 138 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcRegOperands().
int gem5::GPUDynInst::numSrcScalarDWords | ( | ) |
Definition at line 214 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcScalarDWords().
int gem5::GPUDynInst::numSrcScalarRegOperands | ( | ) | const |
Definition at line 188 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcScalarOperands().
int gem5::GPUDynInst::numSrcVecDWords | ( | ) |
Definition at line 176 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcVecDWords().
int gem5::GPUDynInst::numSrcVecRegOperands | ( | ) | const |
Definition at line 150 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcVecOperands().
|
inline |
Definition at line 435 of file gpu_dyn_inst.hh.
References gem5::ArmISA::NumVecElemPerVecReg, statusVector, and sc_dt::to_string().
Definition at line 980 of file gpu_dyn_inst.cc.
References addr, and lineAddressTime.
void gem5::GPUDynInst::profileRoundTripTime | ( | Tick | currentTime, |
int | hopId | ||
) |
Definition at line 970 of file gpu_dyn_inst.cc.
References roundTripTime.
bool gem5::GPUDynInst::readsExec | ( | ) | const |
Definition at line 506 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::readsEXEC().
bool gem5::GPUDynInst::readsExecMask | ( | ) | const |
Definition at line 534 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::readsEXEC(), and gem5::GPUStaticInst::srcOperands().
bool gem5::GPUDynInst::readsFlatScratch | ( | ) | const |
Definition at line 554 of file gpu_dyn_inst.cc.
References srcScalarRegOperands().
bool gem5::GPUDynInst::readsMode | ( | ) | const |
Definition at line 494 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::readsMode().
bool gem5::GPUDynInst::readsSCC | ( | ) | const |
Definition at line 462 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::readsSCC().
bool gem5::GPUDynInst::readsVCC | ( | ) | const |
Definition at line 474 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::readsVCC(), and gem5::GPUStaticInst::srcOperands().
|
inline |
Definition at line 362 of file gpu_dyn_inst.hh.
References gem5::ArmISA::NumVecElemPerVecReg, resetStatusVector(), and statusVector.
|
inline |
Definition at line 372 of file gpu_dyn_inst.hh.
References setStatusVector().
Referenced by resetEntireStatusVector().
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.
InstSeqNum gem5::GPUDynInst::seqNum | ( | ) | const |
Definition at line 282 of file gpu_dyn_inst.cc.
References _seqNum.
|
inline |
Definition at line 466 of file gpu_dyn_inst.hh.
References accessTime.
|
inline |
Definition at line 333 of file gpu_dyn_inst.hh.
References gem5::Request::ATOMIC_NO_RETURN_OP, gem5::Request::ATOMIC_RETURN_OP, gem5::Request::GLC_BIT, gem5::Request::INV_L1, isAtomicNoRet(), isAtomicRet(), isEndOfKernel(), isGloballyCoherent(), isKernelLaunch(), isMemSync(), isSystemCoherent(), and gem5::Request::SLC_BIT.
|
inline |
Definition at line 379 of file gpu_dyn_inst.hh.
References statusVector.
Referenced by resetStatusVector().
TheGpuISA::ScalarRegU32 gem5::GPUDynInst::srcLiteral | ( | ) | const |
Definition at line 923 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::srcLiteral().
const std::vector< OperandInfo > & gem5::GPUDynInst::srcScalarRegOperands | ( | ) | const |
Definition at line 126 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::srcScalarRegOperands().
Referenced by hasSourceSgpr(), maxSrcScalarRegOperandSize(), and readsFlatScratch().
const std::vector< OperandInfo > & gem5::GPUDynInst::srcVecRegOperands | ( | ) | const |
Definition at line 114 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::srcVecRegOperands().
Referenced by hasSourceVgpr(), and maxSrcVecRegOperandSize().
|
inline |
Definition at line 213 of file gpu_dyn_inst.hh.
References _staticInst.
Referenced by doApertureCheck().
void gem5::GPUDynInst::updateStats | ( | ) |
Definition at line 929 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUExecContext::cu, gem5::ComputeUnit::ComputeUnitStats::dynamicFlatMemInstrCnt, gem5::ComputeUnit::ComputeUnitStats::dynamicGMemInstrCnt, gem5::ComputeUnit::ComputeUnitStats::dynamicLMemInstrCnt, gem5::GPUStaticInst::isFlat(), gem5::GPUStaticInst::isLocalMem(), gem5::ComputeUnit::pageAccesses, gem5::ComputeUnit::ComputeUnitStats::pageDivergenceDist, gem5::ComputeUnit::pagesTouched, gem5::statistics::DistBase< Derived, Stor >::sample(), and gem5::ComputeUnit::stats.
bool gem5::GPUDynInst::writesExec | ( | ) | const |
Definition at line 512 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::writesEXEC().
bool gem5::GPUDynInst::writesExecMask | ( | ) | const |
Definition at line 524 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::dstOperands(), and gem5::GPUStaticInst::writesEXEC().
bool gem5::GPUDynInst::writesFlatScratch | ( | ) | const |
Definition at line 544 of file gpu_dyn_inst.cc.
References dstScalarRegOperands().
bool gem5::GPUDynInst::writesMode | ( | ) | const |
Definition at line 500 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::writesMode().
bool gem5::GPUDynInst::writesSCC | ( | ) | const |
Definition at line 468 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::writesSCC().
bool gem5::GPUDynInst::writesVCC | ( | ) | const |
Definition at line 484 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::dstOperands(), and gem5::GPUStaticInst::writesVCC().
|
private |
Definition at line 479 of file gpu_dyn_inst.hh.
Referenced by seqNum().
|
private |
Definition at line 478 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(), isFMA(), isGloballyCoherent(), isGlobalMem(), isGlobalSeg(), isGroupSeg(), isKernArgSeg(), isKernelLaunch(), isLoad(), isLocalMem(), isMAC(), isMAD(), isMemRef(), isMemSync(), isNop(), 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().
uint8_t* gem5::GPUDynInst::a_data |
Definition at line 178 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
|
private |
Definition at line 484 of file gpu_dyn_inst.hh.
Referenced by getAccessTime(), and setAccessTime().
std::vector<Addr> gem5::GPUDynInst::addr |
Definition at line 170 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), doApertureCheck(), profileLineAddressTime(), and resolveFlatSegment().
int gem5::GPUDynInst::cu_id |
Definition at line 191 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), and GPUDynInst().
uint8_t* gem5::GPUDynInst::d_data |
Definition at line 174 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
VectorMask gem5::GPUDynInst::exec_mask |
Definition at line 182 of file gpu_dyn_inst.hh.
Referenced by completeAcc(), and initiateAcc().
int gem5::GPUDynInst::execUnitId |
Definition at line 197 of file gpu_dyn_inst.hh.
bool gem5::GPUDynInst::isSaveRestore |
Definition at line 476 of file gpu_dyn_inst.hh.
int gem5::GPUDynInst::kern_id |
Definition at line 189 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
WaitClass gem5::GPUDynInst::latency |
Definition at line 201 of file gpu_dyn_inst.hh.
|
private |
Definition at line 492 of file gpu_dyn_inst.hh.
Referenced by getLineAddressTime(), and profileLineAddressTime().
|
private |
Definition at line 481 of file gpu_dyn_inst.hh.
Referenced by maxSrcScalarRegOperandSize().
|
private |
Definition at line 480 of file gpu_dyn_inst.hh.
Referenced by maxSrcVecRegOperandSize().
StatusVector gem5::GPUDynInst::memStatusVector |
Definition at line 452 of file gpu_dyn_inst.hh.
int gem5::GPUDynInst::numScalarReqs |
Definition at line 462 of file gpu_dyn_inst.hh.
Addr gem5::GPUDynInst::pAddr |
Definition at line 171 of file gpu_dyn_inst.hh.
|
private |
Definition at line 488 of file gpu_dyn_inst.hh.
Referenced by getRoundTripTime(), and profileRoundTripTime().
uint8_t* gem5::GPUDynInst::scalar_data |
Definition at line 176 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
Addr gem5::GPUDynInst::scalarAddr |
Definition at line 168 of file gpu_dyn_inst.hh.
int gem5::GPUDynInst::simdId |
Definition at line 185 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), completeAcc(), GPUDynInst(), initiateAcc(), and resolveFlatSegment().
std::vector<int> gem5::GPUDynInst::statusVector |
Definition at line 456 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), decrementStatusVector(), getLaneStatus(), GPUDynInst(), printStatusVector(), resetEntireStatusVector(), and setStatusVector().
Tick gem5::GPUDynInst::time |
Definition at line 199 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
std::vector<int> gem5::GPUDynInst::tlbHitLevel |
Definition at line 458 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
int gem5::GPUDynInst::wfDynId |
Definition at line 187 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
int gem5::GPUDynInst::wfSlotId |
Definition at line 195 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), completeAcc(), GPUDynInst(), and initiateAcc().
int gem5::GPUDynInst::wg_id |
Definition at line 193 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
uint8_t* gem5::GPUDynInst::x_data |
Definition at line 180 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().