Go to the documentation of this file.
53 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
105 std::stringstream dis_stream;
110 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
117 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
138 _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 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
283 std::stringstream dis_stream;
288 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
309 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
358 std::stringstream dis_stream;
362 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
369 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
426 std::stringstream dis_stream;
434 dis_stream <<
"label_" << std::hex << dest;
452 dis_stream <<
"vmcnt(" << vm_cnt <<
")";
455 if (lgkm_cnt != 0xf) {
459 dis_stream <<
"lgkmcnt(" << lgkm_cnt <<
")";
462 if (exp_cnt != 0x7) {
463 if (vm_cnt != 0xf || lgkm_cnt != 0xf)
466 dis_stream <<
"expcnt(" << exp_cnt <<
")";
489 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
554 std::stringstream dis_stream;
574 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(2)
596 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
676 iFmt->
OP == 0x18 || iFmt->
OP == 0x24 || iFmt->
OP == 0x25)
685 std::stringstream dis_stream;
690 dis_stream <<
"vcc, ";
695 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
708 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
712 dis_stream << std::resetiosflags(std::ios_base::basefield) <<
"v"
716 dis_stream <<
", vcc";
731 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
798 std::stringstream dis_stream;
805 dis_stream <<
"0x" << std::hex << std::setfill(
'0') << std::setw(8)
825 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
893 std::stringstream dis_stream;
894 dis_stream <<
_opcode <<
" vcc, ";
931 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
949 for (opNum = 0; opNum < numSrc; opNum++) {
987 std::stringstream dis_stream;
998 num_regs - 1 <<
"], ";
1051 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1069 for (opNum = 0; opNum < numSrc; opNum++) {
1077 true,
false,
false);
1085 false,
true,
false);
1091 true,
false,
false);
1107 std::stringstream dis_stream;
1143 dis_stream <<
", vcc";
1159 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1175 false,
true,
false);
1182 false,
true,
false);
1198 std::stringstream dis_stream;
1223 dis_stream <<
" offset:" <<
offset;
1237 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1266 false,
true,
false);
1272 false,
true,
false);
1277 true,
false,
false);
1282 true,
false,
false);
1290 false,
true,
false);
1308 std::stringstream dis_stream;
1311 dis_stream <<
"s[" << srsrc_val <<
":"
1312 << srsrc_val + 3 <<
"], ";
1330 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1357 false,
true,
false);
1363 false,
true,
false);
1368 true,
false,
false);
1373 true,
false,
false);
1380 false,
true,
false);
1402 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1430 false,
true,
false);
1436 false,
true,
false);
1441 true,
false,
false);
1447 true,
false,
false);
1455 false,
true,
false);
1477 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1494 for (opNum = 0; opNum < 4; opNum++) {
1496 false,
true,
false);
1514 if (iFmt->
SEG == 0) {
1516 }
else if (iFmt->
SEG == 2) {
1519 panic(
"Unknown flat segment: %d\n", iFmt->
SEG);
1526 _srcLiteral = *
reinterpret_cast<uint32_t*
>(&iFmt[1]);
1550 panic(
"Unknown flat subtype!\n");
1571 false,
true,
false);
1577 false,
true,
false);
1584 false,
true,
false);
1608 false,
true,
false);
1616 true,
false,
false);
1624 false,
true,
false);
1631 true,
false,
false);
1639 false,
true,
false);
1668 panic(
"Unknown flat subtype!\n");
1675 std::stringstream dis_stream;
1693 std::string global_opcode =
_opcode;
1694 global_opcode.replace(0, 4,
"global");
1696 std::stringstream dis_stream;
1697 dis_stream << global_opcode <<
" ";
1708 dis_stream <<
", off";
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)
void generateFlatDisassembly()
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 *)
void initFlatOperandInfo()
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
bool isFlatGlobal() const
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
void initGlobalOperandInfo()
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 generateGlobalDisassembly()
void initOperandInfo() override
void initOperandInfo() override
virtual int numDstRegOperands()=0
void initOperandInfo() override
#define panic(...)
This implements a cprintf based panic() function.
void initOperandInfo() override
int instSize() const override
Generated on Wed May 4 2022 12:13:45 for gem5 by doxygen 1.8.17