Go to the documentation of this file.
54 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
82 std::stringstream dis_stream;
87 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
94 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
117 fatal(
"Operand at idx %i does not exist\n", opIdx);
141 gpuDynInst->wavefront()->reservedScalarRegs);
144 gpuDynInst->wavefront()->reservedScalarRegs);
147 gpuDynInst->wavefront()->reservedScalarRegs);
149 fatal(
"Operand at idx %i does not exist\n", opIdx);
166 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
193 if (iFmt->
OP == 0x14)
203 std::stringstream dis_stream;
209 dis_stream <<
"0x" << std::hex << std::setfill(
'0')
215 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(4)
233 fatal(
"Operand at idx %i does not exist\n", opIdx);
259 gpuDynInst->wavefront()->reservedScalarRegs);
261 fatal(
"Operand at idx %i does not exist\n", opIdx);
278 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
307 std::stringstream dis_stream;
312 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
338 fatal(
"Operand at idx %i does not exist\n", opIdx);
365 gpuDynInst->wavefront()->reservedScalarRegs);
368 gpuDynInst->wavefront()->reservedScalarRegs);
371 gpuDynInst->wavefront()->reservedScalarRegs);
373 fatal(
"Operand at idx %i does not exist\n", opIdx);
390 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
422 std::stringstream dis_stream;
426 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
433 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
456 fatal(
"Operand at idx %i does not exist\n", opIdx);
480 gpuDynInst->wavefront()->reservedScalarRegs);
483 gpuDynInst->wavefront()->reservedScalarRegs);
485 fatal(
"Operand at idx %i does not exist\n", opIdx);
514 std::stringstream dis_stream;
522 dis_stream <<
"label_" << std::hex << dest;
540 dis_stream <<
"vmcnt(" << vm_cnt <<
")";
543 if (lgkm_cnt != 0xf) {
547 dis_stream <<
"lgkmcnt(" << lgkm_cnt <<
")";
550 if (exp_cnt != 0x7) {
551 if (vm_cnt != 0xf || lgkm_cnt != 0xf)
554 dis_stream <<
"expcnt(" << exp_cnt <<
")";
610 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
629 std::stringstream dis_stream;
649 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(2)
680 fatal(
"Operand at idx %i does not exist\n", opIdx);
706 gpuDynInst->wavefront()->reservedScalarRegs);
716 gpuDynInst->wavefront()->reservedScalarRegs);
718 fatal(
"Operand at idx %i does not exist\n", opIdx);
733 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
774 iFmt->
OP == 0x18 || iFmt->
OP == 0x24 || iFmt->
OP == 0x25)
783 std::stringstream dis_stream;
788 dis_stream <<
"vcc, ";
793 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
806 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
810 dis_stream << std::resetiosflags(std::ios_base::basefield) <<
"v"
814 dis_stream <<
", vcc";
857 fatal(
"Operand at idx %i does not exist\n", opIdx);
900 fatal(
"Operand at idx %i does not exist\n", opIdx);
914 gpuDynInst->wavefront()->reservedScalarRegs);
920 gpuDynInst->wavefront()->reservedScalarRegs);
930 gpuDynInst->wavefront()->reservedScalarRegs);
935 gpuDynInst->wavefront()->reservedScalarRegs);
937 fatal(
"Operand at idx %i does not exist\n", opIdx);
952 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
996 std::stringstream dis_stream;
1003 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
1025 fatal(
"Operand at idx %i does not exist\n", opIdx);
1043 fatal(
"Operand at idx %i does not exist\n", opIdx);
1057 gpuDynInst->wavefront()->reservedScalarRegs);
1061 fatal(
"Operand at idx %i does not exist\n", opIdx);
1076 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1120 std::stringstream dis_stream;
1121 dis_stream <<
_opcode <<
" vcc, ";
1145 fatal(
"Operand at idx %i does not exist\n", opIdx);
1166 fatal(
"Operand at idx %i does not exist\n", opIdx);
1180 gpuDynInst->wavefront()->reservedScalarRegs);
1186 gpuDynInst->wavefront()->reservedScalarRegs);
1188 fatal(
"Operand at idx %i does not exist\n", opIdx);
1222 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1238 std::stringstream dis_stream;
1249 num_regs - 1 <<
"], ";
1362 fatal(
"Operand at idx %i does not exist\n", opIdx);
1436 fatal(
"Operand at idx %i does not exist\n", opIdx);
1451 gpuDynInst->wavefront()->reservedScalarRegs);
1457 gpuDynInst->wavefront()->reservedScalarRegs);
1463 gpuDynInst->wavefront()->reservedScalarRegs);
1474 gpuDynInst->wavefront()->reservedScalarRegs);
1481 gpuDynInst->wavefront()->reservedScalarRegs);
1490 gpuDynInst->wavefront()->reservedScalarRegs);
1498 gpuDynInst->wavefront()->reservedScalarRegs);
1506 gpuDynInst->wavefront()->reservedScalarRegs);
1513 gpuDynInst->wavefront()->reservedScalarRegs);
1515 fatal(
"Operand at idx %i does not exist\n", opIdx);
1523 const std::string &
opcode)
1530 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1546 std::stringstream dis_stream;
1582 dis_stream <<
", vcc";
1656 fatal(
"Operand at idx %i does not exist\n", opIdx);
1730 fatal(
"Operand at idx %i does not exist\n", opIdx);
1745 gpuDynInst->wavefront()->reservedScalarRegs);
1751 gpuDynInst->wavefront()->reservedScalarRegs);
1762 gpuDynInst->wavefront()->reservedScalarRegs);
1772 gpuDynInst->wavefront()->reservedScalarRegs);
1784 gpuDynInst->wavefront()->reservedScalarRegs);
1791 gpuDynInst->wavefront()->reservedScalarRegs);
1793 fatal(
"Operand at idx %i does not exist\n", opIdx);
1809 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1825 std::stringstream dis_stream;
1850 dis_stream <<
" offset:" <<
offset;
1902 fatal(
"Operand at idx %i does not exist\n", opIdx);
1905 fatal(
"Operand at idx %i does not exist\n", opIdx);
1918 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1942 std::stringstream dis_stream;
1945 dis_stream <<
"s[" << srsrc_val <<
":"
1946 << srsrc_val + 3 <<
"], ";
1971 fatal(
"Operand at idx %i does not exist\n", opIdx);
1992 fatal(
"Operand at idx %i does not exist\n", opIdx);
2014 fatal(
"Operand at idx %i does not exist\n", opIdx);
2028 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2057 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2085 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2108 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2130 std::stringstream dis_stream;
2193 fatal(
"Unsupported flat instr type\n");
2201 fatal(
"Operand at idx %i does not exist\n", opIdx);
Inst_SMEM(InFmt_SMEM *, const std::string &opcode)
bool isScalarRegister(int opIdx) override
Inst_VOP3_SDST_ENC(InFmt_VOP3_SDST_ENC *, const std::string &opcode)
InstFormat * MachInst
used to represent the encoding of a GCN3 inst.
#define fatal(...)
This implements a cprintf based fatal() function.
bool hasSecondDword(InFmt_VOPC *)
Inst_VINTRP(InFmt_VINTRP *, const std::string &opcode)
int instSize() const override
Inst_MTBUF(InFmt_MTBUF *, const std::string &opcode)
bool isVectorRegister(int opIdx) override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
bool isScalarRegister(int opIdx) override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
bool isScalarReg(int opIdx)
virtual int numSrcRegOperands()=0
bool isVectorRegister(int opIdx) override
bool isVectorRegister(int opIdx) override
virtual int getNumOperands()=0
int instSize() const override
int instSize() const override
bool isVectorRegister(int opIdx) override
bool isScalarRegister(int opIdx) override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Inst_SOPP(InFmt_SOPP *, const std::string &opcode)
int instSize() const override
Inst_VOP1(InFmt_VOP1 *, const std::string &opcode)
Inst_MUBUF(InFmt_MUBUF *, const std::string &opcode)
bool hasSecondDword(InFmt_SOP2 *)
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
bool hasSecondDword(InFmt_VOP2 *)
int instSize() const override
bool isVectorReg(int opIdx)
int instSize() const override
void generateDisassembly() override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
bool isScalarRegister(int opIdx) override
virtual int numDstRegOperands()=0
const std::string _opcode
InFmt_VOP3_SDST_ENC instData
bool isScalarRegister(int opIdx) override
bool hasSecondDword(InFmt_SOP1 *)
bool isVectorRegister(int opIdx) override
bool isVectorRegister(int opIdx) override
bool isVectorRegister(int opIdx) override
int instSize() const override
void generateDisassembly() override
int instSize() const override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
bool isVectorRegister(int opIdx) override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Inst_SOPC(InFmt_SOPC *, const std::string &opcode)
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
classes that represnt vector/scalar operands in GCN3 ISA.
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Inst_SOP2(InFmt_SOP2 *, const std::string &opcode)
int instSize() const override
int opSelectorToRegIdx(int idx, int numScalarRegs)
void generateDisassembly() override
int instSize() const override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
bool isScalarRegister(int opIdx) override
Inst_SOP1(InFmt_SOP1 *, const std::string &opcode)
int instSize() const override
bool hasSecondDword(InFmt_SOPC *)
Inst_FLAT(InFmt_FLAT *, const std::string &opcode)
bool isVectorRegister(int opIdx) override
bool isScalarRegister(int opIdx) override
Inst_MIMG(InFmt_MIMG *, const std::string &opcode)
bool isScalarRegister(int opIdx) override
Inst_SOPK(InFmt_SOPK *, const std::string &opcode)
bool isScalarRegister(int opIdx) override
bool isScalarRegister(int opIdx) override
bool isScalarRegister(int opIdx) override
int getOperandSize(int opIdx) override
void generateDisassembly() override
int instSize() const override
Bitfield< 24, 21 > opcode
int instSize() const override
void generateDisassembly() override
Inst_EXP(InFmt_EXP *, const std::string &opcode)
void generateDisassembly() override
bool hasSecondDword(InFmt_VOP1 *)
bool isVectorRegister(int opIdx) override
Inst_DS(InFmt_DS *, const std::string &opcode)
int instSize() const override
void generateDisassembly() override
ScalarRegU32 _srcLiteral
if the instruction has a src literal - an immediate value that is part of the instruction stream - we...
std::string opSelectorToRegSym(int idx, int numRegs)
bool hasSecondDword(InFmt_SOPK *)
int instSize() const override
Inst_VOP2(InFmt_VOP2 *, const std::string &opcode)
std::shared_ptr< GPUDynInst > GPUDynInstPtr
const bool sgprDst
the v_cmp and readlane instructions in the VOP3 encoding are unique because they are the only instruc...
bool isVectorRegister(int opIdx) override
int instSize() const override
void generateDisassembly() override
Inst_VOP3(InFmt_VOP3 *, const std::string &opcode, bool sgpr_dst)
int instSize() const override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
Inst_VOPC(InFmt_VOPC *, const std::string &opcode)
bool isVectorRegister(int opIdx) override
bool isScalarRegister(int opIdx) override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
void generateDisassembly() override
int getRegisterIndex(int opIdx, GPUDynInstPtr gpuDynInst) override
void generateDisassembly() override
int instSize() const override
bool isScalarRegister(int opIdx) override
void generateDisassembly() override
void generateDisassembly() override
bool isVectorRegister(int opIdx) override
void generateDisassembly() override
bool isScalarRegister(int opIdx) override
void generateDisassembly() override
bool isVectorRegister(int opIdx) override
Generated on Wed Sep 30 2020 14:02:07 for gem5 by doxygen 1.8.17