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 <<
"], ";
1053 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1071 for (opNum = 0; opNum < numSrc; opNum++) {
1079 true,
false,
false);
1087 false,
true,
false);
1093 true,
false,
false);
1109 std::stringstream dis_stream;
1145 dis_stream <<
", vcc";
1161 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1177 false,
true,
false);
1184 false,
true,
false);
1200 std::stringstream dis_stream;
1225 dis_stream <<
" offset:" <<
offset;
1239 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1269 false,
true,
false);
1275 false,
true,
false);
1280 true,
false,
false);
1285 true,
false,
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]);
1361 false,
true,
false);
1367 false,
true,
false);
1372 true,
false,
false);
1377 true,
false,
false);
1384 false,
true,
false);
1406 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1435 false,
true,
false);
1441 false,
true,
false);
1446 true,
false,
false);
1452 true,
false,
false);
1460 false,
true,
false);
1482 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1499 for (opNum = 0; opNum < 4; opNum++) {
1501 false,
true,
false);
1523 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1553 false,
true,
false);
1559 false,
true,
false);
1566 false,
true,
false);
1582 std::stringstream dis_stream;
This is a simple scalar statistic, like a counter.
int instSize() const override
int instSize() const override
void initOperandInfo() override
Inst_SOP1(InFmt_SOP1 *, const std::string &opcode)
void initOperandInfo() override
Inst_SOPK(InFmt_SOPK *, const std::string &opcode)
Inst_SMEM(InFmt_SMEM *, const std::string &opcode)
std::string opSelectorToRegSym(int opIdx, int numRegs=0)
virtual int numSrcRegOperands()=0
void initOperandInfo() override
const bool sgprDst
the v_cmp and readlane instructions in the VOP3 encoding are unique because they are the only instruc...
Inst_MIMG(InFmt_MIMG *, const std::string &opcode)
Inst_VOP2(InFmt_VOP2 *, const std::string &opcode)
Inst_VOPC(InFmt_VOPC *, const std::string &opcode)
std::vector< OperandInfo > srcOps
void generateDisassembly() override
ScalarRegU32 _srcLiteral
if the instruction has a src literal - an immediate value that is part of the instruction stream - we...
int instSize() const override
Inst_VOP1(InFmt_VOP1 *, const std::string &opcode)
bool hasSecondDword(InFmt_SOPC *)
Inst_VOP3A(InFmt_VOP3A *, const std::string &opcode, bool sgpr_dst)
int getOperandSize(int opIdx) override
void generateDisassembly() override
int instSize() const override
int instSize() const override
void generateDisassembly() override
int instSize() const override
void initOperandInfo() override
void generateDisassembly() override
void generateDisassembly() override
bool hasSecondDword(InFmt_VOP2 *)
Inst_FLAT(InFmt_FLAT *, const std::string &opcode)
int instSize() const override
void initOperandInfo() override
Inst_SOPP(InFmt_SOPP *, const std::string &opcode)
int instSize() const override
void initOperandInfo() override
Bitfield< 24, 21 > opcode
void generateDisassembly() override
Inst_SOPC(InFmt_SOPC *, const std::string &opcode)
virtual int getNumOperands()=0
int instSize() const override
bool isScalarReg(int opIdx)
void generateDisassembly() override
InstFormat * MachInst
used to represent the encoding of a VEGA inst.
void generateDisassembly() override
Inst_SOP2(InFmt_SOP2 *, const std::string &opcode)
std::vector< OperandInfo > dstOps
int instSize() const override
void generateDisassembly() override
int instSize() const override
void generateDisassembly() override
void initOperandInfo() override
Inst_MUBUF(InFmt_MUBUF *, const std::string &opcode)
Inst_EXP(InFmt_EXP *, const std::string &opcode)
bool hasSecondDword(InFmt_VOPC *)
bool isVectorReg(int opIdx)
void initOperandInfo() override
bool hasSecondDword(InFmt_SOP2 *)
void generateDisassembly() override
Inst_VINTRP(InFmt_VINTRP *, const std::string &opcode)
void generateDisassembly() override
int instSize() const override
int instSize() const override
Inst_MTBUF(InFmt_MTBUF *, const std::string &opcode)
const std::string _opcode
void initOperandInfo() override
int instSize() const override
int instSize() const override
int instSize() const override
void generateDisassembly() override
Inst_DS(InFmt_DS *, const std::string &opcode)
bool hasSecondDword(InFmt_SOPK *)
void initOperandInfo() override
Inst_VOP3B(InFmt_VOP3B *, const std::string &opcode)
bool hasSecondDword(InFmt_VOP1 *)
bool hasSecondDword(InFmt_SOP1 *)
int instSize() const override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void generateDisassembly() override
void initOperandInfo() override
void initOperandInfo() override
void initOperandInfo() override
void initOperandInfo() override
void initOperandInfo() override
virtual int numDstRegOperands()=0
void initOperandInfo() override
void initOperandInfo() override
int instSize() const override
Generated on Tue Sep 21 2021 12:24:20 for gem5 by doxygen 1.8.17