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 isSystemCoherent() const
bool isScalarRegister(int operandIndex) override
bool isWorkgroupScope() const
virtual void completeAcc(GPUDynInstPtr gpuDynInst)
bool isGloballyCoherent() const
Coherence domain of a memory instruction.
#define fatal(...)
This implements a cprintf based fatal() function.
bool isKernArgSeg() const
bool isCondRegister(int operandIndex) override
def format Nop(code, *opt_flags)
void instAddr(int inst_addr)
virtual int instSize() const =0
virtual void execLdAcq(GPUDynInstPtr gpuDynInst)
bool isReadOnlySeg() const
bool isDeviceScope() const
bool isAtomicNoRet() const
int getOperandSize(int operandIndex) override
int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst) override
bool isSystemScope() const
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 isWorkitemScope() const
bool isPrivateSeg() 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)
bool isUnconditionalJump() const
virtual bool isDstOperand(int operandIndex)=0
virtual bool isScalarRegister(int operandIndex)=0
virtual int numDstRegOperands()=0
bool isAcquireRelease() const
bool isAtomicExch() const
bool isDstOperand(int operandIndex) override
Enums::StorageClassType executed_as
void generateDisassembly() override
virtual int getRegisterIndex(int operandIndex, GPUDynInstPtr gpuDynInst)=0
int numDstRegOperands() override
virtual bool isSrcOperand(int operandIndex)=0
bool isRelaxedOrder() const
virtual int getNumOperands()=0
GPUStaticInst(const std::string &opcode)
bool isWavefrontScope() const
virtual uint32_t getTargetPc()
int _ipdInstNum
Identifier of the immediate post-dominator instruction.
const std::string & disassemble()
int getNumOperands() override
virtual int numSrcRegOperands()=0
virtual bool isVectorRegister(int operandIndex)=0
virtual void execute(GPUDynInstPtr gpuDynInst)=0
virtual void initiateAcc(GPUDynInstPtr gpuDynInst)
bool isSrcOperand(int operandIndex) override
virtual int getOperandSize(int operandIndex)=0
virtual bool isValid() const =0
std::bitset< Num_Flags > _flags