36 #ifndef __GPU_STATIC_INST_HH__
37 #define __GPU_STATIC_INST_HH__
51 #include "enums/GPUStaticInstFlags.hh"
52 #include "enums/StorageClassType.hh"
93 virtual bool isValid()
const = 0;
103 return _flags[UnconditionalJump];
205 fatal(
"calling initiateAcc() on a non-memory instruction.\n");
212 fatal(
"calling completeAcc() on a non-memory instruction.\n");
227 fatal(
"calling execLdAcq() on a non-load instruction.\n");
233 fatal(
"calling execLdAcq() on a non-load instruction.\n");
239 fatal(
"calling execAtomic() on a non-atomic instruction.\n");
245 fatal(
"calling execAtomicAcq() on a non-atomic instruction.\n");
276 fatal(
"kernel launch instruction should not be executed\n");
301 bool isValid()
const override {
return true; }
305 #endif // __GPU_STATIC_INST_HH__
bool isScalarRegister(int operandIndex) override
virtual void completeAcc(GPUDynInstPtr gpuDynInst)
bool isSystemScope() const
bool isAtomicNoRet() const
bool isAcquireRelease() const
bool isCondRegister(int operandIndex) override
void instAddr(int inst_addr)
virtual int instSize() const =0
virtual void execLdAcq(GPUDynInstPtr gpuDynInst)
int getOperandSize(int operandIndex) override
int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst) override
bool isVectorRegister(int operandIndex) override
virtual void execAtomicAcq(GPUDynInstPtr gpuDynInst)
static uint64_t dynamic_id_count
virtual bool isCondRegister(int operandIndex)=0
int numSrcRegOperands() override
virtual void generateDisassembly()=0
bool isWavefrontScope() const
virtual void execSt(GPUDynInstPtr gpuDynInst)
int instSize() const override
void execute(GPUDynInstPtr gpuDynInst) override
bool isValid() const override
std::shared_ptr< GPUDynInst > GPUDynInstPtr
virtual void execAtomic(GPUDynInstPtr gpuDynInst)
virtual bool isDstOperand(int operandIndex)=0
virtual bool isScalarRegister(int operandIndex)=0
virtual int numDstRegOperands()=0
bool isSystemCoherent() const
bool isPrivateSeg() const
bool isDstOperand(int operandIndex) override
Enums::StorageClassType executed_as
void generateDisassembly() override
virtual int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst)=0
int numDstRegOperands() override
bool isWorkitemScope() const
virtual bool isSrcOperand(int operandIndex)=0
bool isDeviceScope() const
virtual int getNumOperands()=0
GPUStaticInst(const std::string &opcode)
virtual uint32_t getTargetPc()
bool isAtomicExch() const
bool isUnconditionalJump() const
int _ipdInstNum
Identifier of the immediate post-dominator instruction.
bool isReadOnlySeg() const
bool isKernArgSeg() const
const std::string & disassemble()
int getNumOperands() override
virtual int numSrcRegOperands()=0
bool isRelaxedOrder() const
virtual bool isVectorRegister(int operandIndex)=0
bool isGloballyCoherent() const
Coherence domain of a memory instruction.
virtual void execute(GPUDynInstPtr gpuDynInst)=0
virtual void initiateAcc(GPUDynInstPtr gpuDynInst)
bool isWorkgroupScope() const
bool isSrcOperand(int operandIndex) override
virtual int getOperandSize(int operandIndex)=0
virtual bool isValid() const =0
std::bitset< Num_Flags > _flags