gem5 v24.0.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 |
Addr | pc () |
void | pc (Addr _pc) |
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 | |
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< Tick > | getRoundTripTime () 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) | |
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 |
bool | systemReq = false |
Tick | accessTime = -1 |
std::vector< Tick > | roundTripTime |
std::map< Addr, std::vector< Tick > > | lineAddressTime |
Additional Inherited Members | |
Protected Attributes inherited from gem5::GPUExecContext | |
ComputeUnit * | cu |
Wavefront * | wf |
TheGpuISA::GPUISA * | gpuISA |
Definition at line 116 of file gpu_dyn_inst.hh.
typedef std::unordered_map<Addr, std::vector<int> > gem5::GPUDynInst::StatusVector |
Definition at line 457 of file gpu_dyn_inst.hh.
gem5::GPUDynInst::GPUDynInst | ( | ComputeUnit * | _cu, |
Wavefront * | _wf, | ||
GPUStaticInst * | static_inst, | ||
uint64_t | instSeqNum ) |
Definition at line 44 of file gpu_dyn_inst.cc.
References _staticInst, a_data, gem5::GPUExecContext::computeUnit(), gem5::ComputeUnit::cu_id, cu_id, d_data, disassemble(), DPRINTF, getNumOperands(), gem5::ArmISA::i, gem5::GPUStaticInst::initDynOperandInfo(), gem5::GPUStaticInst::initOperandInfo(), kern_id, gem5::Wavefront::kernId, scalar_data, simdId, gem5::Wavefront::simdId, statusVector, time, tlbHitLevel, gem5::GPUExecContext::wavefront(), wfDynId, gem5::Wavefront::wfDynId, gem5::ComputeUnit::wfSize(), wfSlotId, gem5::Wavefront::wfSlotId, wg_id, gem5::Wavefront::wgId, and x_data.
gem5::GPUDynInst::~GPUDynInst | ( | ) |
Definition at line 96 of file gpu_dyn_inst.cc.
References _staticInst, a_data, d_data, scalar_data, and x_data.
|
inline |
Definition at line 415 of file gpu_dyn_inst.hh.
References addr, cu_id, DPRINTF, simdId, statusVector, and wfSlotId.
void gem5::GPUDynInst::completeAcc | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 314 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 396 of file gpu_dyn_inst.hh.
References statusVector.
const std::string & gem5::GPUDynInst::disassemble | ( | ) | const |
Definition at line 274 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 777 of file gpu_dyn_inst.cc.
References addr, gem5::bits(), gem5::GPUExecContext::computeUnit(), gem5::GPUStaticInst::executed_as, executedAs(), fatal, gem5::Shader::isLdsApe(), gem5::ArmISA::mask, gem5::ComputeUnit::shader, staticInstruction(), and gem5::ComputeUnit::wfSize().
Referenced by resolveFlatSegment().
const std::vector< OperandInfo > & gem5::GPUDynInst::dstScalarRegOperands | ( | ) | const |
Definition at line 130 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 118 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::dstVecRegOperands().
Referenced by hasDestinationVgpr().
void gem5::GPUDynInst::execute | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 106 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::execute().
enums::StorageClassType gem5::GPUDynInst::executedAs | ( | ) |
Definition at line 298 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::executed_as.
Referenced by doApertureCheck(), and resolveFlatSegment().
|
inline |
Definition at line 470 of file gpu_dyn_inst.hh.
References accessTime.
|
inline |
Definition at line 407 of file gpu_dyn_inst.hh.
References statusVector.
|
inline |
Definition at line 478 of file gpu_dyn_inst.hh.
References lineAddressTime.
int gem5::GPUDynInst::getNumOperands | ( | ) | const |
Definition at line 230 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::getNumOperands().
Referenced by GPUDynInst().
|
inline |
Definition at line 475 of file gpu_dyn_inst.hh.
References roundTripTime.
bool gem5::GPUDynInst::hasDestinationSgpr | ( | ) | const |
Definition at line 254 of file gpu_dyn_inst.cc.
References dstScalarRegOperands().
bool gem5::GPUDynInst::hasDestinationVgpr | ( | ) | const |
Definition at line 242 of file gpu_dyn_inst.cc.
References dstVecRegOperands().
bool gem5::GPUDynInst::hasSourceSgpr | ( | ) | const |
Definition at line 248 of file gpu_dyn_inst.cc.
References srcScalarRegOperands().
bool gem5::GPUDynInst::hasSourceVgpr | ( | ) | const |
Definition at line 236 of file gpu_dyn_inst.cc.
References srcVecRegOperands().
bool gem5::GPUDynInst::ignoreExec | ( | ) | const |
Definition at line 540 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::ignoreExec().
void gem5::GPUDynInst::initiateAcc | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 305 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 328 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isALU().
bool gem5::GPUDynInst::isArgLoad | ( | ) | const |
Definition at line 657 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isArgLoad().
bool gem5::GPUDynInst::isArgSeg | ( | ) | const |
Definition at line 675 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isArgSeg().
bool gem5::GPUDynInst::isAtomic | ( | ) | const |
Definition at line 454 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomic().
Referenced by resolveFlatSegment().
bool gem5::GPUDynInst::isAtomicAdd | ( | ) | const |
Definition at line 621 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicAdd().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicAnd | ( | ) | const |
Definition at line 592 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicAnd().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicCAS | ( | ) | const |
Definition at line 610 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicCAS().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicDec | ( | ) | const |
Definition at line 639 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicDec().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicExch | ( | ) | const |
Definition at line 615 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicExch().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicInc | ( | ) | const |
Definition at line 633 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicInc().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicMax | ( | ) | const |
Definition at line 645 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicMax().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicMin | ( | ) | const |
Definition at line 651 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicMin().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicNoRet | ( | ) | const |
Definition at line 460 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicNoRet().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isAtomicOr | ( | ) | const |
Definition at line 598 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicOr().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicRet | ( | ) | const |
Definition at line 466 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicRet().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isAtomicSub | ( | ) | const |
Definition at line 627 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicSub().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isAtomicXor | ( | ) | const |
Definition at line 604 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isAtomicXor().
Referenced by makeAtomicOpFunctor().
bool gem5::GPUDynInst::isBarrier | ( | ) | const |
Definition at line 406 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isBarrier().
bool gem5::GPUDynInst::isBranch | ( | ) | const |
Definition at line 334 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isBranch().
bool gem5::GPUDynInst::isCondBranch | ( | ) | const |
Definition at line 340 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isCondBranch().
bool gem5::GPUDynInst::isDPPInst | ( | ) | const |
Definition at line 370 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isDPPInst().
bool gem5::GPUDynInst::isEndOfKernel | ( | ) | const |
Definition at line 352 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isEndOfKernel().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isF16 | ( | ) | const |
Definition at line 735 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isF16().
bool gem5::GPUDynInst::isF32 | ( | ) | const |
Definition at line 741 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isF32().
bool gem5::GPUDynInst::isF64 | ( | ) | const |
Definition at line 747 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isF64().
bool gem5::GPUDynInst::isFlat | ( | ) | const |
Definition at line 424 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isFlat().
Referenced by needsToken(), and resolveFlatSegment().
bool gem5::GPUDynInst::isFlatGlobal | ( | ) | const |
Definition at line 430 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isFlatGlobal().
Referenced by needsToken().
bool gem5::GPUDynInst::isFlatScratch | ( | ) | const |
Definition at line 436 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isFlatScratch().
Referenced by needsToken().
bool gem5::GPUDynInst::isFMA | ( | ) | const |
Definition at line 753 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isFMA().
bool gem5::GPUDynInst::isGloballyCoherent | ( | ) | const |
Definition at line 717 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGloballyCoherent().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isGlobalMem | ( | ) | const |
Definition at line 663 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGlobalMem().
Referenced by needsToken().
bool gem5::GPUDynInst::isGlobalSeg | ( | ) | const |
Definition at line 681 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGlobalSeg().
bool gem5::GPUDynInst::isGroupSeg | ( | ) | const |
Definition at line 687 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isGroupSeg().
bool gem5::GPUDynInst::isI8 | ( | ) | const |
Definition at line 729 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isI8().
bool gem5::GPUDynInst::isKernArgSeg | ( | ) | const |
Definition at line 693 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isKernArgSeg().
bool gem5::GPUDynInst::isKernelLaunch | ( | ) | const |
Definition at line 358 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isKernelLaunch().
Referenced by setRequestFlags().
bool gem5::GPUDynInst::isLoad | ( | ) | const |
Definition at line 442 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isLoad().
Referenced by resolveFlatSegment().
bool gem5::GPUDynInst::isLocalMem | ( | ) | const |
Definition at line 669 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isLocalMem().
bool gem5::GPUDynInst::isMAC | ( | ) | const |
Definition at line 759 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMAC().
bool gem5::GPUDynInst::isMAD | ( | ) | const |
Definition at line 765 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMAD().
bool gem5::GPUDynInst::isMemRef | ( | ) | const |
Definition at line 418 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMemRef().
bool gem5::GPUDynInst::isMemSync | ( | ) | const |
Definition at line 412 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMemSync().
Referenced by resolveFlatSegment(), and setRequestFlags().
bool gem5::GPUDynInst::isMFMA | ( | ) | const |
Definition at line 771 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isMFMA().
bool gem5::GPUDynInst::isNop | ( | ) | const |
Definition at line 346 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isNop().
bool gem5::GPUDynInst::isOpcode | ( | const std::string & | opcodeStr | ) | const |
Definition at line 268 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 260 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::opcode().
bool gem5::GPUDynInst::isPrivateSeg | ( | ) | const |
Definition at line 699 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isPrivateSeg().
bool gem5::GPUDynInst::isReadOnlySeg | ( | ) | const |
Definition at line 705 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isReadOnlySeg().
bool gem5::GPUDynInst::isReturn | ( | ) | const |
Definition at line 376 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isReturn().
bool gem5::GPUDynInst::isScalar | ( | ) | const |
Definition at line 478 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isScalar().
bool gem5::GPUDynInst::isSDWAInst | ( | ) | const |
Definition at line 364 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSDWAInst().
bool gem5::GPUDynInst::isSleep | ( | ) | const |
Definition at line 400 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSleep().
bool gem5::GPUDynInst::isSpecialOp | ( | ) | const |
Definition at line 388 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSpecialOp().
bool gem5::GPUDynInst::isSpillSeg | ( | ) | const |
Definition at line 711 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSpillSeg().
bool gem5::GPUDynInst::isStore | ( | ) | const |
Definition at line 448 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isStore().
Referenced by resolveFlatSegment().
bool gem5::GPUDynInst::isSystemCoherent | ( | ) | const |
Definition at line 723 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isSystemCoherent().
Referenced by setRequestFlags().
|
inline |
Definition at line 484 of file gpu_dyn_inst.hh.
References systemReq.
bool gem5::GPUDynInst::isUnconditionalJump | ( | ) | const |
Definition at line 382 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isUnconditionalJump().
bool gem5::GPUDynInst::isVector | ( | ) | const |
Definition at line 472 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isScalar().
bool gem5::GPUDynInst::isWaitcnt | ( | ) | const |
Definition at line 394 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::isWaitcnt().
|
inline |
Definition at line 309 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 224 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::maxOperandSize().
int gem5::GPUDynInst::maxSrcScalarRegOperandSize | ( | ) |
Definition at line 198 of file gpu_dyn_inst.cc.
References maxSrcScalarRegOpSize, and srcScalarRegOperands().
int gem5::GPUDynInst::maxSrcVecRegOperandSize | ( | ) |
Definition at line 160 of file gpu_dyn_inst.cc.
References maxSrcVecRegOpSize, and srcVecRegOperands().
bool gem5::GPUDynInst::needsToken | ( | ) | const |
Definition at line 586 of file gpu_dyn_inst.cc.
References isFlat(), isFlatGlobal(), isFlatScratch(), and isGlobalMem().
int gem5::GPUDynInst::numDstRegOperands | ( | ) |
Definition at line 142 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstRegOperands().
int gem5::GPUDynInst::numDstScalarDWords | ( | ) |
Definition at line 218 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstScalarDWords().
int gem5::GPUDynInst::numDstScalarRegOperands | ( | ) | const |
Definition at line 192 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstScalarOperands().
int gem5::GPUDynInst::numDstVecDWords | ( | ) |
Definition at line 180 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstVecDWords().
int gem5::GPUDynInst::numDstVecRegOperands | ( | ) | const |
Definition at line 154 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numDstVecOperands().
int gem5::GPUDynInst::numSrcRegOperands | ( | ) |
Definition at line 136 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcRegOperands().
int gem5::GPUDynInst::numSrcScalarDWords | ( | ) |
Definition at line 212 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcScalarDWords().
int gem5::GPUDynInst::numSrcScalarRegOperands | ( | ) | const |
Definition at line 186 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcScalarOperands().
int gem5::GPUDynInst::numSrcVecDWords | ( | ) |
Definition at line 174 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcVecDWords().
int gem5::GPUDynInst::numSrcVecRegOperands | ( | ) | const |
Definition at line 148 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::numSrcVecOperands().
Addr gem5::GPUDynInst::pc | ( | ) |
Definition at line 286 of file gpu_dyn_inst.cc.
References gem5::Wavefront::pc(), and gem5::GPUExecContext::wavefront().
void gem5::GPUDynInst::pc | ( | Addr | _pc | ) |
Definition at line 292 of file gpu_dyn_inst.cc.
References gem5::Wavefront::pc(), and gem5::GPUExecContext::wavefront().
|
inline |
Definition at line 441 of file gpu_dyn_inst.hh.
References statusVector.
Definition at line 1045 of file gpu_dyn_inst.cc.
References addr, and lineAddressTime.
void gem5::GPUDynInst::profileRoundTripTime | ( | Tick | currentTime, |
int | hopId ) |
Definition at line 1035 of file gpu_dyn_inst.cc.
References roundTripTime.
bool gem5::GPUDynInst::readsExec | ( | ) | const |
Definition at line 528 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::readsEXEC().
bool gem5::GPUDynInst::readsExecMask | ( | ) | const |
Definition at line 556 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::readsEXEC(), and gem5::GPUStaticInst::srcOperands().
bool gem5::GPUDynInst::readsFlatScratch | ( | ) | const |
Definition at line 576 of file gpu_dyn_inst.cc.
References srcScalarRegOperands().
bool gem5::GPUDynInst::readsMode | ( | ) | const |
Definition at line 516 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::readsMode().
bool gem5::GPUDynInst::readsSCC | ( | ) | const |
Definition at line 484 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::readsSCC().
bool gem5::GPUDynInst::readsVCC | ( | ) | const |
Definition at line 496 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::readsVCC(), and gem5::GPUStaticInst::srcOperands().
|
inline |
Definition at line 368 of file gpu_dyn_inst.hh.
References resetStatusVector(), and statusVector.
|
inline |
Definition at line 378 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 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, gem5::LdsState::getAddrRange(), gem5::Shader::getHiddenPrivateBase(), gem5::ComputeUnit::getLds(), gem5::Shader::getScratchBase(), isAtomic(), isFlat(), isLoad(), isMemSync(), isStore(), gem5::Shader::ldsApe(), gem5::RegisterManager::mapSgpr(), gem5::ArmISA::mask, gem5::Wavefront::maxSgprs, gem5::ArmISA::offset, panic, gem5::Wavefront::rdGmReqsInPipe, gem5::Wavefront::rdLmReqsInPipe, gem5::ComputeUnit::registerManager, gem5::ComputeUnit::shader, simdId, gem5::AddrRange::size(), gem5::ComputeUnit::srf, gem5::GPUExecContext::wavefront(), gem5::ComputeUnit::wfSize(), gem5::Wavefront::wrGmReqsInPipe, and gem5::Wavefront::wrLmReqsInPipe.
InstSeqNum gem5::GPUDynInst::seqNum | ( | ) | const |
Definition at line 280 of file gpu_dyn_inst.cc.
References _seqNum.
|
inline |
Definition at line 472 of file gpu_dyn_inst.hh.
References accessTime.
|
inline |
Definition at line 339 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 385 of file gpu_dyn_inst.hh.
References statusVector.
Referenced by resetStatusVector().
|
inline |
Definition at line 485 of file gpu_dyn_inst.hh.
References systemReq.
TheGpuISA::ScalarRegU32 gem5::GPUDynInst::srcLiteral | ( | ) | const |
Definition at line 988 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::srcLiteral().
const std::vector< OperandInfo > & gem5::GPUDynInst::srcScalarRegOperands | ( | ) | const |
Definition at line 124 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 112 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::srcVecRegOperands().
Referenced by hasSourceVgpr(), and maxSrcVecRegOperandSize().
|
inline |
Definition at line 214 of file gpu_dyn_inst.hh.
References _staticInst.
Referenced by doApertureCheck().
void gem5::GPUDynInst::updateStats | ( | ) |
Definition at line 994 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 534 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::writesEXEC().
bool gem5::GPUDynInst::writesExecMask | ( | ) | const |
Definition at line 546 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::dstOperands(), and gem5::GPUStaticInst::writesEXEC().
bool gem5::GPUDynInst::writesFlatScratch | ( | ) | const |
Definition at line 566 of file gpu_dyn_inst.cc.
References dstScalarRegOperands().
bool gem5::GPUDynInst::writesMode | ( | ) | const |
Definition at line 522 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::writesMode().
bool gem5::GPUDynInst::writesSCC | ( | ) | const |
Definition at line 490 of file gpu_dyn_inst.cc.
References _staticInst, and gem5::GPUStaticInst::writesSCC().
bool gem5::GPUDynInst::writesVCC | ( | ) | const |
Definition at line 506 of file gpu_dyn_inst.cc.
References _staticInst, gem5::GPUStaticInst::dstOperands(), and gem5::GPUStaticInst::writesVCC().
|
private |
Definition at line 489 of file gpu_dyn_inst.hh.
Referenced by seqNum().
|
private |
Definition at line 488 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().
uint8_t* gem5::GPUDynInst::a_data |
Definition at line 179 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
|
private |
Definition at line 495 of file gpu_dyn_inst.hh.
Referenced by getAccessTime(), and setAccessTime().
std::vector<Addr> gem5::GPUDynInst::addr |
Definition at line 171 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), doApertureCheck(), profileLineAddressTime(), and resolveFlatSegment().
int gem5::GPUDynInst::cu_id |
Definition at line 192 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), and GPUDynInst().
uint8_t* gem5::GPUDynInst::d_data |
Definition at line 175 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
VectorMask gem5::GPUDynInst::exec_mask |
Definition at line 183 of file gpu_dyn_inst.hh.
Referenced by completeAcc(), and initiateAcc().
int gem5::GPUDynInst::execUnitId |
Definition at line 198 of file gpu_dyn_inst.hh.
bool gem5::GPUDynInst::isSaveRestore |
Definition at line 482 of file gpu_dyn_inst.hh.
int gem5::GPUDynInst::kern_id |
Definition at line 190 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
WaitClass gem5::GPUDynInst::latency |
Definition at line 202 of file gpu_dyn_inst.hh.
|
private |
Definition at line 503 of file gpu_dyn_inst.hh.
Referenced by getLineAddressTime(), and profileLineAddressTime().
|
private |
Definition at line 491 of file gpu_dyn_inst.hh.
Referenced by maxSrcScalarRegOperandSize().
|
private |
Definition at line 490 of file gpu_dyn_inst.hh.
Referenced by maxSrcVecRegOperandSize().
StatusVector gem5::GPUDynInst::memStatusVector |
Definition at line 458 of file gpu_dyn_inst.hh.
int gem5::GPUDynInst::numScalarReqs |
Definition at line 468 of file gpu_dyn_inst.hh.
Addr gem5::GPUDynInst::pAddr |
Definition at line 172 of file gpu_dyn_inst.hh.
|
private |
Definition at line 499 of file gpu_dyn_inst.hh.
Referenced by getRoundTripTime(), and profileRoundTripTime().
uint8_t* gem5::GPUDynInst::scalar_data |
Definition at line 177 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
Addr gem5::GPUDynInst::scalarAddr |
Definition at line 169 of file gpu_dyn_inst.hh.
int gem5::GPUDynInst::simdId |
Definition at line 186 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), completeAcc(), GPUDynInst(), initiateAcc(), and resolveFlatSegment().
std::vector<int> gem5::GPUDynInst::statusVector |
Definition at line 462 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), decrementStatusVector(), getLaneStatus(), GPUDynInst(), printStatusVector(), resetEntireStatusVector(), and setStatusVector().
|
private |
Definition at line 492 of file gpu_dyn_inst.hh.
Referenced by isSystemReq(), and setSystemReq().
Tick gem5::GPUDynInst::time |
Definition at line 200 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
std::vector<int> gem5::GPUDynInst::tlbHitLevel |
Definition at line 464 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
int gem5::GPUDynInst::wfDynId |
Definition at line 188 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
int gem5::GPUDynInst::wfSlotId |
Definition at line 196 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), completeAcc(), GPUDynInst(), and initiateAcc().
int gem5::GPUDynInst::wg_id |
Definition at line 194 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
uint8_t* gem5::GPUDynInst::x_data |
Definition at line 181 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().