gem5
v20.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) |
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 () |
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 | 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 |
Public Member Functions inherited from 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 |
Tick | accessTime = -1 |
std::vector< Tick > | roundTripTime |
std::map< Addr, std::vector< Tick > > | lineAddressTime |
Additional Inherited Members | |
Protected Attributes inherited from GPUExecContext | |
ComputeUnit * | cu |
Wavefront * | wf |
TheGpuISA::GPUISA * | gpuISA |
Definition at line 76 of file gpu_dyn_inst.hh.
typedef std::unordered_map<Addr, std::vector<int> > GPUDynInst::StatusVector |
Definition at line 403 of file gpu_dyn_inst.hh.
GPUDynInst::GPUDynInst | ( | ComputeUnit * | _cu, |
Wavefront * | _wf, | ||
GPUStaticInst * | static_inst, | ||
uint64_t | instSeqNum | ||
) |
Definition at line 42 of file gpu_dyn_inst.cc.
References a_data, GPUExecContext::computeUnit(), cu_id, ComputeUnit::cu_id, d_data, ArmISA::i, kern_id, Wavefront::kernId, ArmISA::NumVecElemPerVecReg, scalar_data, Wavefront::simdId, simdId, statusVector, time, tlbHitLevel, wfDynId, Wavefront::wfDynId, ComputeUnit::wfSize(), Wavefront::wfSlotId, wfSlotId, wg_id, Wavefront::wgId, and x_data.
GPUDynInst::~GPUDynInst | ( | ) |
Definition at line 85 of file gpu_dyn_inst.cc.
References _staticInst, a_data, d_data, scalar_data, and x_data.
|
inline |
Definition at line 361 of file gpu_dyn_inst.hh.
References addr, cu_id, DPRINTF, ArmISA::NumVecElemPerVecReg, simdId, statusVector, and wfSlotId.
void GPUDynInst::completeAcc | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 316 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::completeAcc(), GPUExecContext::cu, ComputeUnit::cu_id, DPRINTF, exec_mask, simdId, and wfSlotId.
|
inline |
Definition at line 342 of file gpu_dyn_inst.hh.
References statusVector.
const std::string & GPUDynInst::disassemble | ( | ) | const |
Definition at line 254 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::disassemble().
void GPUDynInst::doApertureCheck | ( | const VectorMask & | mask | ) |
Definition at line 737 of file gpu_dyn_inst.cc.
References addr, bits(), GPUExecContext::computeUnit(), GPUStaticInst::executed_as, executedAs(), fatal, Shader::isLdsApe(), ArmISA::mask, sc_core::SC_NONE, ComputeUnit::shader, staticInstruction(), and ComputeUnit::wfSize().
Referenced by resolveFlatSegment().
void GPUDynInst::execute | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 95 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::execute().
Enums::StorageClassType GPUDynInst::executedAs | ( | ) |
Definition at line 266 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::executed_as.
Referenced by doApertureCheck(), and resolveFlatSegment().
|
inline |
Definition at line 416 of file gpu_dyn_inst.hh.
References accessTime.
|
inline |
Definition at line 353 of file gpu_dyn_inst.hh.
References statusVector.
|
inline |
Definition at line 424 of file gpu_dyn_inst.hh.
References lineAddressTime.
int GPUDynInst::getNumOperands | ( | ) |
Definition at line 143 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::getNumOperands().
Referenced by hasSgprRawDependence(), hasVgprRawDependence(), and srcIsVgpr().
int GPUDynInst::getOperandSize | ( | int | operandIdx | ) |
Definition at line 167 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::getOperandSize().
int GPUDynInst::getRegisterIndex | ( | int | operandIdx, |
GPUDynInstPtr | gpuDynInst | ||
) |
Definition at line 161 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::getRegisterIndex().
|
inline |
Definition at line 421 of file gpu_dyn_inst.hh.
References roundTripTime.
bool GPUDynInst::hasDestinationSgpr | ( | ) | const |
Definition at line 207 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isDstOperand(), and GPUStaticInst::isScalarRegister().
bool GPUDynInst::hasDestinationVgpr | ( | ) | const |
Definition at line 229 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isDstOperand(), and GPUStaticInst::isVectorRegister().
bool GPUDynInst::hasSgprRawDependence | ( | GPUDynInstPtr | s | ) |
Definition at line 289 of file gpu_dyn_inst.cc.
References getNumOperands(), ArmISA::i, isScalarRegister(), isSrcOperand(), ArmISA::j, and ArmISA::s.
bool GPUDynInst::hasSourceSgpr | ( | ) | const |
Definition at line 185 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isScalarRegister(), and GPUStaticInst::isSrcOperand().
bool GPUDynInst::hasSourceVgpr | ( | ) | const |
Definition at line 196 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isSrcOperand(), and GPUStaticInst::isVectorRegister().
bool GPUDynInst::hasVgprRawDependence | ( | GPUDynInstPtr | s | ) |
Definition at line 272 of file gpu_dyn_inst.cc.
References getNumOperands(), ArmISA::i, isSrcOperand(), isVectorRegister(), ArmISA::j, and ArmISA::s.
bool GPUDynInst::ignoreExec | ( | ) | const |
Definition at line 516 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::ignoreExec().
void GPUDynInst::initiateAcc | ( | GPUDynInstPtr | gpuDynInst | ) |
Definition at line 307 of file gpu_dyn_inst.cc.
References _staticInst, GPUExecContext::cu, ComputeUnit::cu_id, DPRINTF, exec_mask, GPUStaticInst::initiateAcc(), simdId, and wfSlotId.
bool GPUDynInst::isALU | ( | ) | const |
accessor methods for the attributes of the underlying GPU static instruction
Definition at line 330 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isALU().
bool GPUDynInst::isArgLoad | ( | ) | const |
Definition at line 629 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isArgLoad().
bool GPUDynInst::isArgSeg | ( | ) | const |
Definition at line 647 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isArgSeg().
bool GPUDynInst::isAtomic | ( | ) | const |
Definition at line 438 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomic().
Referenced by resolveFlatSegment().
bool GPUDynInst::isAtomicAdd | ( | ) | const |
Definition at line 593 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicAdd().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicAnd | ( | ) | const |
Definition at line 564 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicAnd().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicCAS | ( | ) | const |
Definition at line 582 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicCAS().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicDec | ( | ) | const |
Definition at line 611 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicDec().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicExch | ( | ) | const |
Definition at line 587 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicExch().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicInc | ( | ) | const |
Definition at line 605 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicInc().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicMax | ( | ) | const |
Definition at line 617 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicMax().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicMin | ( | ) | const |
Definition at line 623 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicMin().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicNoRet | ( | ) | const |
Definition at line 444 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicNoRet().
Referenced by setRequestFlags().
bool GPUDynInst::isAtomicOr | ( | ) | const |
Definition at line 570 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicOr().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicRet | ( | ) | const |
Definition at line 450 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicRet().
Referenced by setRequestFlags().
bool GPUDynInst::isAtomicSub | ( | ) | const |
Definition at line 599 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicSub().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isAtomicXor | ( | ) | const |
Definition at line 576 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isAtomicXor().
Referenced by makeAtomicOpFunctor().
bool GPUDynInst::isBarrier | ( | ) | const |
Definition at line 402 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isBarrier().
bool GPUDynInst::isBranch | ( | ) | const |
Definition at line 336 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isBranch().
bool GPUDynInst::isCondBranch | ( | ) | const |
Definition at line 342 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isCondBranch().
bool GPUDynInst::isDPPInst | ( | ) | const |
Definition at line 372 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isDPPInst().
bool GPUDynInst::isDstOperand | ( | int | operandIdx | ) |
Definition at line 173 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isDstOperand().
bool GPUDynInst::isEndOfKernel | ( | ) | const |
Definition at line 354 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isEndOfKernel().
Referenced by setRequestFlags().
bool GPUDynInst::isF16 | ( | ) | const |
Definition at line 701 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isF16().
bool GPUDynInst::isF32 | ( | ) | const |
Definition at line 707 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isF32().
bool GPUDynInst::isF64 | ( | ) | const |
Definition at line 713 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isF64().
bool GPUDynInst::isFlat | ( | ) | const |
Definition at line 420 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isFlat().
bool GPUDynInst::isFMA | ( | ) | const |
Definition at line 719 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isFMA().
bool GPUDynInst::isGloballyCoherent | ( | ) | const |
Definition at line 689 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isGloballyCoherent().
Referenced by setRequestFlags().
bool GPUDynInst::isGlobalMem | ( | ) | const |
Definition at line 635 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isGlobalMem().
bool GPUDynInst::isGlobalSeg | ( | ) | const |
Definition at line 653 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isGlobalSeg().
bool GPUDynInst::isGroupSeg | ( | ) | const |
Definition at line 659 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isGroupSeg().
bool GPUDynInst::isKernArgSeg | ( | ) | const |
Definition at line 665 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isKernArgSeg().
bool GPUDynInst::isKernelLaunch | ( | ) | const |
Definition at line 360 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isKernelLaunch().
Referenced by setRequestFlags().
bool GPUDynInst::isLoad | ( | ) | const |
Definition at line 426 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isLoad().
Referenced by resolveFlatSegment().
bool GPUDynInst::isLocalMem | ( | ) | const |
Definition at line 641 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isLocalMem().
bool GPUDynInst::isMAC | ( | ) | const |
Definition at line 725 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isMAC().
bool GPUDynInst::isMAD | ( | ) | const |
Definition at line 731 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isMAD().
bool GPUDynInst::isMemRef | ( | ) | const |
Definition at line 414 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isMemRef().
bool GPUDynInst::isMemSync | ( | ) | const |
Definition at line 408 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isMemSync().
Referenced by resolveFlatSegment(), and setRequestFlags().
bool GPUDynInst::isNop | ( | ) | const |
Definition at line 348 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isNop().
bool GPUDynInst::isOpcode | ( | const std::string & | opcodeStr | ) | const |
Definition at line 248 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::opcode().
bool GPUDynInst::isOpcode | ( | const std::string & | opcodeStr, |
const std::string & | extStr | ||
) | const |
Definition at line 240 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::opcode().
bool GPUDynInst::isPrivateSeg | ( | ) | const |
Definition at line 671 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isPrivateSeg().
bool GPUDynInst::isReadOnlySeg | ( | ) | const |
Definition at line 677 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isReadOnlySeg().
bool GPUDynInst::isReturn | ( | ) | const |
Definition at line 378 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isReturn().
bool GPUDynInst::isScalar | ( | ) | const |
Definition at line 462 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isScalar().
bool GPUDynInst::isScalarRegister | ( | int | operandIdx | ) |
Definition at line 155 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isScalarRegister().
Referenced by hasSgprRawDependence().
bool GPUDynInst::isSDWAInst | ( | ) | const |
Definition at line 366 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isSDWAInst().
bool GPUDynInst::isSpecialOp | ( | ) | const |
Definition at line 390 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isSpecialOp().
bool GPUDynInst::isSpillSeg | ( | ) | const |
Definition at line 683 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isSpillSeg().
bool GPUDynInst::isSrcOperand | ( | int | operandIdx | ) |
Definition at line 179 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isSrcOperand().
Referenced by hasSgprRawDependence(), and hasVgprRawDependence().
bool GPUDynInst::isStore | ( | ) | const |
Definition at line 432 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isStore().
Referenced by resolveFlatSegment().
bool GPUDynInst::isSystemCoherent | ( | ) | const |
Definition at line 695 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isSystemCoherent().
Referenced by setRequestFlags().
bool GPUDynInst::isUnconditionalJump | ( | ) | const |
Definition at line 384 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isUnconditionalJump().
bool GPUDynInst::isVector | ( | ) | const |
Definition at line 456 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isScalar().
bool GPUDynInst::isVectorRegister | ( | int | operandIdx | ) |
Definition at line 149 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isVectorRegister().
Referenced by hasVgprRawDependence().
bool GPUDynInst::isWaitcnt | ( | ) | const |
Definition at line 396 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::isWaitcnt().
|
inline |
Definition at line 255 of file gpu_dyn_inst.hh.
References GPUExecContext::cu, fatal, isAtomicAdd(), isAtomicAnd(), isAtomicCAS(), isAtomicDec(), isAtomicExch(), isAtomicInc(), isAtomicMax(), isAtomicMin(), isAtomicOr(), isAtomicSub(), and isAtomicXor().
int GPUDynInst::numDstRegOperands | ( | ) |
Definition at line 107 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numDstRegOperands().
int GPUDynInst::numDstVecDWORDs | ( | ) |
Definition at line 131 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numDstVecDWORDs().
int GPUDynInst::numDstVecOperands | ( | ) |
Definition at line 119 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numDstVecOperands().
int GPUDynInst::numOpdDWORDs | ( | int | operandIdx | ) |
Definition at line 137 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numOpdDWORDs().
int GPUDynInst::numSrcRegOperands | ( | ) |
Definition at line 101 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numSrcRegOperands().
int GPUDynInst::numSrcVecDWORDs | ( | ) |
Definition at line 125 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numSrcVecDWORDs().
int GPUDynInst::numSrcVecOperands | ( | ) |
Definition at line 113 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::numSrcVecOperands().
|
inline |
Definition at line 387 of file gpu_dyn_inst.hh.
References ArmISA::NumVecElemPerVecReg, statusVector, and sc_dt::to_string().
Definition at line 981 of file gpu_dyn_inst.cc.
References addr, and lineAddressTime.
void GPUDynInst::profileRoundTripTime | ( | Tick | currentTime, |
int | hopId | ||
) |
Definition at line 971 of file gpu_dyn_inst.cc.
References roundTripTime.
bool GPUDynInst::readsEXEC | ( | ) | const |
Definition at line 504 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::readsEXEC().
bool GPUDynInst::readsExecMask | ( | ) | const |
Definition at line 532 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isExecMaskRegister(), and GPUStaticInst::isSrcOperand().
bool GPUDynInst::readsFlatScratch | ( | ) | const |
Definition at line 553 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isFlatScratchRegister(), GPUStaticInst::isScalarRegister(), and GPUStaticInst::isSrcOperand().
bool GPUDynInst::readsMode | ( | ) | const |
Definition at line 492 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::readsMode().
bool GPUDynInst::readsSCC | ( | ) | const |
Definition at line 468 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::readsSCC().
bool GPUDynInst::readsVCC | ( | ) | const |
Definition at line 480 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::readsVCC().
|
inline |
Definition at line 314 of file gpu_dyn_inst.hh.
References ArmISA::NumVecElemPerVecReg, resetStatusVector(), and statusVector.
|
inline |
Definition at line 324 of file gpu_dyn_inst.hh.
References setStatusVector().
Referenced by resetEntireStatusVector().
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: 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, 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.
InstSeqNum GPUDynInst::seqNum | ( | ) | const |
Definition at line 260 of file gpu_dyn_inst.cc.
References _seqNum.
|
inline |
Definition at line 418 of file gpu_dyn_inst.hh.
References accessTime.
|
inline |
Definition at line 285 of file gpu_dyn_inst.hh.
References Request::ACQUIRE, Request::ATOMIC_NO_RETURN_OP, Request::ATOMIC_RETURN_OP, Request::GLC_BIT, isAtomicNoRet(), isAtomicRet(), isEndOfKernel(), isGloballyCoherent(), isKernelLaunch(), isMemSync(), isSystemCoherent(), and Request::SLC_BIT.
|
inline |
Definition at line 331 of file gpu_dyn_inst.hh.
References statusVector.
Referenced by resetStatusVector().
bool GPUDynInst::srcIsVgpr | ( | int | index | ) | const |
Definition at line 218 of file gpu_dyn_inst.cc.
References _staticInst, getNumOperands(), MipsISA::index, GPUStaticInst::isSrcOperand(), and GPUStaticInst::isVectorRegister().
TheGpuISA::ScalarRegU32 GPUDynInst::srcLiteral | ( | ) | const |
Definition at line 924 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::srcLiteral().
|
inline |
Definition at line 166 of file gpu_dyn_inst.hh.
References _staticInst.
Referenced by doApertureCheck().
void GPUDynInst::updateStats | ( | ) |
Definition at line 930 of file gpu_dyn_inst.cc.
References _staticInst, GPUExecContext::cu, ComputeUnit::dynamicFlatMemInstrCnt, ComputeUnit::dynamicGMemInstrCnt, ComputeUnit::dynamicLMemInstrCnt, GPUStaticInst::isFlat(), GPUStaticInst::isLocalMem(), ComputeUnit::pageAccesses, ComputeUnit::pageDivergenceDist, ComputeUnit::pagesTouched, and Stats::DistBase< Derived, Stor >::sample().
bool GPUDynInst::writesEXEC | ( | ) | const |
Definition at line 510 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::writesEXEC().
bool GPUDynInst::writesExecMask | ( | ) | const |
Definition at line 522 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isDstOperand(), and GPUStaticInst::isExecMaskRegister().
bool GPUDynInst::writesFlatScratch | ( | ) | const |
Definition at line 542 of file gpu_dyn_inst.cc.
References _staticInst, GPUStaticInst::getNumOperands(), ArmISA::i, GPUStaticInst::isDstOperand(), GPUStaticInst::isFlatScratchRegister(), and GPUStaticInst::isScalarRegister().
bool GPUDynInst::writesMode | ( | ) | const |
Definition at line 498 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::writesMode().
bool GPUDynInst::writesSCC | ( | ) | const |
Definition at line 474 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::writesSCC().
bool GPUDynInst::writesVCC | ( | ) | const |
Definition at line 486 of file gpu_dyn_inst.cc.
References _staticInst, and GPUStaticInst::writesVCC().
|
private |
Definition at line 431 of file gpu_dyn_inst.hh.
Referenced by seqNum().
|
private |
Definition at line 430 of file gpu_dyn_inst.hh.
Referenced by completeAcc(), disassemble(), execute(), executedAs(), getNumOperands(), getOperandSize(), getRegisterIndex(), hasDestinationSgpr(), hasDestinationVgpr(), hasSourceSgpr(), hasSourceVgpr(), ignoreExec(), initiateAcc(), isALU(), isArgLoad(), isArgSeg(), isAtomic(), isAtomicAdd(), isAtomicAnd(), isAtomicCAS(), isAtomicDec(), isAtomicExch(), isAtomicInc(), isAtomicMax(), isAtomicMin(), isAtomicNoRet(), isAtomicOr(), isAtomicRet(), isAtomicSub(), isAtomicXor(), isBarrier(), isBranch(), isCondBranch(), isDPPInst(), isDstOperand(), isEndOfKernel(), isF16(), isF32(), isF64(), isFlat(), isFMA(), isGloballyCoherent(), isGlobalMem(), isGlobalSeg(), isGroupSeg(), isKernArgSeg(), isKernelLaunch(), isLoad(), isLocalMem(), isMAC(), isMAD(), isMemRef(), isMemSync(), isNop(), isOpcode(), isPrivateSeg(), isReadOnlySeg(), isReturn(), isScalar(), isScalarRegister(), isSDWAInst(), isSpecialOp(), isSpillSeg(), isSrcOperand(), isStore(), isSystemCoherent(), isUnconditionalJump(), isVector(), isVectorRegister(), isWaitcnt(), numDstRegOperands(), numDstVecDWORDs(), numDstVecOperands(), numOpdDWORDs(), numSrcRegOperands(), numSrcVecDWORDs(), numSrcVecOperands(), readsEXEC(), readsExecMask(), readsFlatScratch(), readsMode(), readsSCC(), readsVCC(), srcIsVgpr(), srcLiteral(), staticInstruction(), updateStats(), writesEXEC(), writesExecMask(), writesFlatScratch(), writesMode(), writesSCC(), writesVCC(), and ~GPUDynInst().
uint8_t* GPUDynInst::a_data |
Definition at line 131 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
|
private |
Definition at line 434 of file gpu_dyn_inst.hh.
Referenced by getAccessTime(), and setAccessTime().
std::vector<Addr> GPUDynInst::addr |
Definition at line 123 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), doApertureCheck(), profileLineAddressTime(), and resolveFlatSegment().
int GPUDynInst::cu_id |
Definition at line 144 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), and GPUDynInst().
uint8_t* GPUDynInst::d_data |
Definition at line 127 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
VectorMask GPUDynInst::exec_mask |
Definition at line 135 of file gpu_dyn_inst.hh.
Referenced by completeAcc(), and initiateAcc().
int GPUDynInst::execUnitId |
Definition at line 150 of file gpu_dyn_inst.hh.
bool GPUDynInst::isSaveRestore |
Definition at line 428 of file gpu_dyn_inst.hh.
int GPUDynInst::kern_id |
Definition at line 142 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
WaitClass GPUDynInst::latency |
Definition at line 154 of file gpu_dyn_inst.hh.
|
private |
Definition at line 442 of file gpu_dyn_inst.hh.
Referenced by getLineAddressTime(), and profileLineAddressTime().
StatusVector GPUDynInst::memStatusVector |
Definition at line 404 of file gpu_dyn_inst.hh.
int GPUDynInst::numScalarReqs |
Definition at line 414 of file gpu_dyn_inst.hh.
Addr GPUDynInst::pAddr |
Definition at line 124 of file gpu_dyn_inst.hh.
|
private |
Definition at line 438 of file gpu_dyn_inst.hh.
Referenced by getRoundTripTime(), and profileRoundTripTime().
uint8_t* GPUDynInst::scalar_data |
Definition at line 129 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().
Addr GPUDynInst::scalarAddr |
Definition at line 121 of file gpu_dyn_inst.hh.
int GPUDynInst::simdId |
Definition at line 138 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), completeAcc(), GPUDynInst(), initiateAcc(), and resolveFlatSegment().
std::vector<int> GPUDynInst::statusVector |
Definition at line 408 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), decrementStatusVector(), getLaneStatus(), GPUDynInst(), printStatusVector(), resetEntireStatusVector(), and setStatusVector().
Tick GPUDynInst::time |
Definition at line 152 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
std::vector<int> GPUDynInst::tlbHitLevel |
Definition at line 410 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
int GPUDynInst::wfDynId |
Definition at line 140 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
int GPUDynInst::wfSlotId |
Definition at line 148 of file gpu_dyn_inst.hh.
Referenced by allLanesZero(), completeAcc(), GPUDynInst(), and initiateAcc().
int GPUDynInst::wg_id |
Definition at line 146 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst().
uint8_t* GPUDynInst::x_data |
Definition at line 133 of file gpu_dyn_inst.hh.
Referenced by GPUDynInst(), and ~GPUDynInst().