Go to the documentation of this file.
55 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
107 std::stringstream dis_stream;
112 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
119 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
140 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
195 if (iFmt->
OP == 0x14)
205 std::stringstream dis_stream;
211 dis_stream <<
"0x" << std::hex << std::setfill(
'0')
217 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(4)
235 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
285 std::stringstream dis_stream;
290 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
311 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
360 std::stringstream dis_stream;
364 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
371 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
428 std::stringstream dis_stream;
436 dis_stream <<
"label_" << std::hex << dest;
454 dis_stream <<
"vmcnt(" << vm_cnt <<
")";
457 if (lgkm_cnt != 0xf) {
461 dis_stream <<
"lgkmcnt(" << lgkm_cnt <<
")";
464 if (exp_cnt != 0x7) {
465 if (vm_cnt != 0xf || lgkm_cnt != 0xf)
468 dis_stream <<
"expcnt(" << exp_cnt <<
")";
491 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
556 std::stringstream dis_stream;
576 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(2)
598 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
678 iFmt->
OP == 0x18 || iFmt->
OP == 0x24 || iFmt->
OP == 0x25)
687 std::stringstream dis_stream;
692 dis_stream <<
"vcc, ";
697 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
710 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
714 dis_stream << std::resetiosflags(std::ios_base::basefield) <<
"v"
718 dis_stream <<
", vcc";
733 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
800 std::stringstream dis_stream;
807 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
827 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
895 std::stringstream dis_stream;
896 dis_stream <<
_opcode <<
" vcc, ";
933 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
951 for (opNum = 0; opNum < numSrc; opNum++) {
989 std::stringstream dis_stream;
1000 num_regs - 1 <<
"], ";
1047 const std::string &
opcode)
1054 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1072 for (opNum = 0; opNum < numSrc; opNum++) {
1080 true,
false,
false);
1088 false,
true,
false);
1094 true,
false,
false);
1110 std::stringstream dis_stream;
1146 dis_stream <<
", vcc";
1162 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1178 false,
true,
false);
1185 false,
true,
false);
1201 std::stringstream dis_stream;
1226 dis_stream <<
" offset:" <<
offset;
1240 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1269 false,
true,
false);
1275 false,
true,
false);
1293 false,
true,
false);
1311 std::stringstream dis_stream;
1314 dis_stream <<
"s[" << srsrc_val <<
":"
1315 << srsrc_val + 3 <<
"], ";
1333 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1360 false,
true,
false);
1366 false,
true,
false);
1383 false,
true,
false);
1405 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1433 false,
true,
false);
1439 false,
true,
false);
1458 false,
true,
false);
1480 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1497 for (opNum = 0; opNum < 4; opNum++) {
1499 false,
true,
false);
1521 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1551 false,
true,
false);
1557 false,
true,
false);
1564 false,
true,
false);
1580 std::stringstream dis_stream;
This is a simple scalar statistic, like a counter.
void initOperandInfo() override
void generateDisassembly() override
void generateDisassembly() override
bool hasSecondDword(InFmt_SOP2 *)
bool hasSecondDword(InFmt_VOP1 *)
bool isScalarReg(int opIdx)
void initOperandInfo() override
InstFormat * MachInst
used to represent the encoding of a GCN3 inst.
virtual int numSrcRegOperands()=0
void initOperandInfo() override
Inst_DS(InFmt_DS *, const std::string &opcode)
bool hasSecondDword(InFmt_VOPC *)
std::string opSelectorToRegSym(int opIdx, int numRegs=0)
void generateDisassembly() override
ScalarRegU32 _srcLiteral
if the instruction has a src literal - an immediate value that is part of the instruction stream - we...
Inst_MTBUF(InFmt_MTBUF *, const std::string &opcode)
std::vector< OperandInfo > srcOps
void initOperandInfo() override
void generateDisassembly() override
Inst_VOP3_SDST_ENC(InFmt_VOP3_SDST_ENC *, const std::string &opcode)
Inst_VOPC(InFmt_VOPC *, const std::string &opcode)
Inst_VOP2(InFmt_VOP2 *, const std::string &opcode)
int instSize() const override
void initOperandInfo() override
int instSize() const override
void initOperandInfo() override
Inst_VINTRP(InFmt_VINTRP *, const std::string &opcode)
int instSize() const override
Inst_SOPC(InFmt_SOPC *, const std::string &opcode)
int instSize() const override
bool hasSecondDword(InFmt_SOPK *)
Inst_VOP3(InFmt_VOP3 *, const std::string &opcode, bool sgpr_dst)
Inst_SOPK(InFmt_SOPK *, const std::string &opcode)
void initOperandInfo() override
Inst_MIMG(InFmt_MIMG *, const std::string &opcode)
Bitfield< 24, 21 > opcode
Inst_SOPP(InFmt_SOPP *, const std::string &opcode)
bool isVectorReg(int opIdx)
void initOperandInfo() override
void initOperandInfo() override
bool hasSecondDword(InFmt_SOPC *)
virtual int getNumOperands()=0
int instSize() const override
bool hasSecondDword(InFmt_SOP1 *)
std::vector< OperandInfo > dstOps
void initOperandInfo() override
void generateDisassembly() override
void generateDisassembly() override
int instSize() const override
void generateDisassembly() override
Inst_FLAT(InFmt_FLAT *, const std::string &opcode)
Inst_EXP(InFmt_EXP *, const std::string &opcode)
int instSize() const override
InFmt_VOP3_SDST_ENC instData
int instSize() const override
void initOperandInfo() override
void initOperandInfo() override
void initOperandInfo() override
void initOperandInfo() override
void generateDisassembly() override
void generateDisassembly() override
Inst_SOP2(InFmt_SOP2 *, const std::string &opcode)
Inst_VOP1(InFmt_VOP1 *, const std::string &opcode)
Inst_SOP1(InFmt_SOP1 *, const std::string &opcode)
const std::string _opcode
int instSize() const override
void generateDisassembly() override
Inst_MUBUF(InFmt_MUBUF *, const std::string &opcode)
int instSize() const override
void generateDisassembly() override
void initOperandInfo() override
int instSize() const override
int instSize() const override
int instSize() const override
int instSize() const override
void generateDisassembly() override
Inst_SMEM(InFmt_SMEM *, const std::string &opcode)
const bool sgprDst
the v_cmp and readlane instructions in the VOP3 encoding are unique because they are the only instruc...
void initOperandInfo() override
int getOperandSize(int opIdx) override
int instSize() const override
int instSize() const override
int instSize() const override
void generateDisassembly() override
void initOperandInfo() override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
bool hasSecondDword(InFmt_VOP2 *)
int instSize() const override
virtual int numDstRegOperands()=0
void generateDisassembly() override
Generated on Tue Sep 21 2021 12:24:20 for gem5 by doxygen 1.8.17