36 #ifndef __GPU_DYN_INST_HH__
37 #define __GPU_DYN_INST_HH__
42 #include "enums/MemType.hh"
43 #include "enums/StorageClassType.hh"
189 uint64_t instSeqNum);
380 fatal(
"Unrecognized atomic operation");
460 #endif // __GPU_DYN_INST_HH__
bool isRelaxedOrder() const
bool isPrivateSeg() const
bool isUnconditionalJump() const
StatusVector memStatusVector
void setMemSpaceConfigFlags(MemSpaceConfigFlags extraFlags)
bool isSystemCoherent() const
std::vector< int > tlbHitLevel
void setRequestFlags(Request *req, bool setMemOrder=true)
The request is an atomic that returns data.
std::map< unsigned, waveQueue > xactCasLoadMap
AtomicOpFunctor * makeAtomicOpFunctor(c0 *reg0, c0 *reg1)
std::function< void(GPUStaticInst *, GPUDynInstPtr)> execContinuation
std::bitset< std::numeric_limits< unsigned long long >::digits > VectorMask
Access has Device (e.g., GPU) scope visibility.
bool isWorkitemScope() const
int getOperandSize(int operandIdx)
The request should be marked with ACQUIRE.
ComputeUnit * computeUnit
const std::string & disassemble() const
bool isAtomicExch() const
std::vector< int > statusVector
GPUDynInst(ComputeUnit *_cu, Wavefront *_wf, GPUStaticInst *static_inst, uint64_t instSeqNum)
Enums::StorageClassType executedAs()
Access has Workgroup scope visibility.
bool isKernArgSeg() const
bool isWorkgroupScope() const
AtomicOpCAS(T _c, T _s, ComputeUnit *compute_unit)
std::shared_ptr< GPUDynInst > GPUDynInstPtr
bool isCondRegister(int operandIdx)
uint64_t Tick
Tick count type.
bool isAtomicNoRet() const
bool isWavefrontScope() const
bool isVectorRegister(int operandIdx)
The request is an atomic that does not return data.
Has a synchronization scope been set?
GPUStaticInst * staticInstruction()
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool isScalarRegister(int operandIdx)
bool isSrcOperand(int operandIdx)
bool isALU() const
accessor methods for the attributes of the underlying GPU static instruction
bool isGloballyCoherent() const
void completeAcc(GPUDynInstPtr gpuDynInst)
GPUStaticInst * _staticInst
int getRegisterIndex(int operandIdx, GPUDynInstPtr gpuDynInst)
The request should be marked with RELEASE.
void execute(GPUDynInstPtr gpuDynInst)
Stats::Scalar numFailedCASOps
VectorMask statusBitVector
Access has System (e.g., CPU + GPU) scope visibility.
std::unordered_map< Addr, std::vector< int > > StatusVector
bool isDeviceScope() const
bool isDstOperand(int operandIdx)
Access has Wavefront scope visibility.
bool isSystemScope() const
void setFlags(Flags flags)
Note that unlike other accessors, this function sets specific flags (ORs them in); it does not assign...
void initiateAcc(GPUDynInstPtr gpuDynInst)
bool isReadOnlySeg() const
bool isAcquireRelease() const