Go to the documentation of this file.
52 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
80 std::stringstream dis_stream;
85 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
92 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
115 fatal(
"Operand at idx %i does not exist\n", opIdx);
139 gpuDynInst->wavefront()->reservedScalarRegs);
142 gpuDynInst->wavefront()->reservedScalarRegs);
145 gpuDynInst->wavefront()->reservedScalarRegs);
147 fatal(
"Operand at idx %i does not exist\n", opIdx);
164 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
191 if (iFmt->
OP == 0x14)
201 std::stringstream dis_stream;
207 dis_stream <<
"0x" << std::hex << std::setfill(
'0')
213 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(4)
231 fatal(
"Operand at idx %i does not exist\n", opIdx);
257 gpuDynInst->wavefront()->reservedScalarRegs);
259 fatal(
"Operand at idx %i does not exist\n", opIdx);
276 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
305 std::stringstream dis_stream;
310 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
336 fatal(
"Operand at idx %i does not exist\n", opIdx);
363 gpuDynInst->wavefront()->reservedScalarRegs);
366 gpuDynInst->wavefront()->reservedScalarRegs);
369 gpuDynInst->wavefront()->reservedScalarRegs);
371 fatal(
"Operand at idx %i does not exist\n", opIdx);
388 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
420 std::stringstream dis_stream;
424 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
431 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
454 fatal(
"Operand at idx %i does not exist\n", opIdx);
478 gpuDynInst->wavefront()->reservedScalarRegs);
481 gpuDynInst->wavefront()->reservedScalarRegs);
483 fatal(
"Operand at idx %i does not exist\n", opIdx);
512 std::stringstream dis_stream;
520 dis_stream <<
"label_" << std::hex << dest;
538 dis_stream <<
"vmcnt(" << vm_cnt <<
")";
541 if (lgkm_cnt != 0xf) {
545 dis_stream <<
"lgkmcnt(" << lgkm_cnt <<
")";
548 if (exp_cnt != 0x7) {
549 if (vm_cnt != 0xf || lgkm_cnt != 0xf)
552 dis_stream <<
"expcnt(" << exp_cnt <<
")";
608 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
627 std::stringstream dis_stream;
647 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(2)
678 fatal(
"Operand at idx %i does not exist\n", opIdx);
704 gpuDynInst->wavefront()->reservedScalarRegs);
714 gpuDynInst->wavefront()->reservedScalarRegs);
716 fatal(
"Operand at idx %i does not exist\n", opIdx);
731 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
772 iFmt->
OP == 0x18 || iFmt->
OP == 0x24 || iFmt->
OP == 0x25)
781 std::stringstream dis_stream;
786 dis_stream <<
"vcc, ";
791 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
804 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
808 dis_stream << std::resetiosflags(std::ios_base::basefield) <<
"v"
812 dis_stream <<
", vcc";
855 fatal(
"Operand at idx %i does not exist\n", opIdx);
898 fatal(
"Operand at idx %i does not exist\n", opIdx);
912 gpuDynInst->wavefront()->reservedScalarRegs);
918 gpuDynInst->wavefront()->reservedScalarRegs);
928 gpuDynInst->wavefront()->reservedScalarRegs);
933 gpuDynInst->wavefront()->reservedScalarRegs);
935 fatal(
"Operand at idx %i does not exist\n", opIdx);
950 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
994 std::stringstream dis_stream;
1001 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
1023 fatal(
"Operand at idx %i does not exist\n", opIdx);
1041 fatal(
"Operand at idx %i does not exist\n", opIdx);
1055 gpuDynInst->wavefront()->reservedScalarRegs);
1059 fatal(
"Operand at idx %i does not exist\n", opIdx);
1074 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1118 std::stringstream dis_stream;
1119 dis_stream <<
_opcode <<
" vcc, ";
1143 fatal(
"Operand at idx %i does not exist\n", opIdx);
1164 fatal(
"Operand at idx %i does not exist\n", opIdx);
1178 gpuDynInst->wavefront()->reservedScalarRegs);
1184 gpuDynInst->wavefront()->reservedScalarRegs);
1186 fatal(
"Operand at idx %i does not exist\n", opIdx);
1220 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1236 std::stringstream dis_stream;
1247 num_regs - 1 <<
"], ";
1360 fatal(
"Operand at idx %i does not exist\n", opIdx);
1434 fatal(
"Operand at idx %i does not exist\n", opIdx);
1449 gpuDynInst->wavefront()->reservedScalarRegs);
1455 gpuDynInst->wavefront()->reservedScalarRegs);
1461 gpuDynInst->wavefront()->reservedScalarRegs);
1472 gpuDynInst->wavefront()->reservedScalarRegs);
1479 gpuDynInst->wavefront()->reservedScalarRegs);
1488 gpuDynInst->wavefront()->reservedScalarRegs);
1496 gpuDynInst->wavefront()->reservedScalarRegs);
1504 gpuDynInst->wavefront()->reservedScalarRegs);
1511 gpuDynInst->wavefront()->reservedScalarRegs);
1513 fatal(
"Operand at idx %i does not exist\n", opIdx);
1521 const std::string &
opcode)
1528 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1544 std::stringstream dis_stream;
1580 dis_stream <<
", vcc";
1654 fatal(
"Operand at idx %i does not exist\n", opIdx);
1728 fatal(
"Operand at idx %i does not exist\n", opIdx);
1743 gpuDynInst->wavefront()->reservedScalarRegs);
1749 gpuDynInst->wavefront()->reservedScalarRegs);
1760 gpuDynInst->wavefront()->reservedScalarRegs);
1770 gpuDynInst->wavefront()->reservedScalarRegs);
1782 gpuDynInst->wavefront()->reservedScalarRegs);
1789 gpuDynInst->wavefront()->reservedScalarRegs);
1791 fatal(
"Operand at idx %i does not exist\n", opIdx);
1807 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1823 std::stringstream dis_stream;
1848 dis_stream <<
" offset:" <<
offset;
1900 fatal(
"Operand at idx %i does not exist\n", opIdx);
1903 fatal(
"Operand at idx %i does not exist\n", opIdx);
1916 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1940 std::stringstream dis_stream;
1943 dis_stream <<
"s[" << srsrc_val <<
":"
1944 << srsrc_val + 3 <<
"], ";
1969 fatal(
"Operand at idx %i does not exist\n", opIdx);
1990 fatal(
"Operand at idx %i does not exist\n", opIdx);
2012 fatal(
"Operand at idx %i does not exist\n", opIdx);
2026 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2055 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2083 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2106 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
2128 std::stringstream dis_stream;
2191 fatal(
"Unsupported flat instr type\n");
2199 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 Tue Jun 22 2021 15:28:24 for gem5 by doxygen 1.8.17