RSP: Update dissam of load/store vector ops
This commit is contained in:
parent
f8f9688386
commit
7dc30b1d6d
|
@ -22,8 +22,7 @@ private:
|
||||||
void DecodeRegImmName(void);
|
void DecodeRegImmName(void);
|
||||||
void DecodeCop0Name(void);
|
void DecodeCop0Name(void);
|
||||||
void DecodeCop2Name(void);
|
void DecodeCop2Name(void);
|
||||||
void DecodeLC2Name(void);
|
void DecodeLSC2Name(const char LoadStoreIdent);
|
||||||
void DecodeSC2Name(void);
|
|
||||||
|
|
||||||
static const char * ElementSpecifier(uint32_t Element);
|
static const char * ElementSpecifier(uint32_t Element);
|
||||||
|
|
||||||
|
|
|
@ -159,10 +159,10 @@ void RSPInstruction::DecodeName(void)
|
||||||
sprintf(m_Param, "%s, 0x%04X (%s)", GPR_Name(m_Instruction.rt), m_Instruction.offset, GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "%s, 0x%04X (%s)", GPR_Name(m_Instruction.rt), m_Instruction.offset, GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LC2:
|
case RSP_LC2:
|
||||||
DecodeLC2Name();
|
DecodeLSC2Name('L');
|
||||||
break;
|
break;
|
||||||
case RSP_SC2:
|
case RSP_SC2:
|
||||||
DecodeSC2Name();
|
DecodeLSC2Name('S');
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
strcpy(m_Name, "UNKNOWN");
|
strcpy(m_Name, "UNKNOWN");
|
||||||
|
@ -523,52 +523,56 @@ void RSPInstruction::DecodeCop2Name(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RSPInstruction::DecodeLC2Name(void)
|
void RSPInstruction::DecodeLSC2Name(const char LoadStoreIdent)
|
||||||
{
|
{
|
||||||
switch (m_Instruction.rd)
|
switch (m_Instruction.rd)
|
||||||
{
|
{
|
||||||
case RSP_LSC2_BV:
|
case RSP_LSC2_BV:
|
||||||
strcpy(m_Name, "LBV");
|
sprintf(m_Name, "%cBV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 0), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 0), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_SV:
|
case RSP_LSC2_SV:
|
||||||
strcpy(m_Name, "LSV");
|
sprintf(m_Name, "%cSV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 1), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 1), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_LV:
|
case RSP_LSC2_LV:
|
||||||
strcpy(m_Name, "LLV");
|
sprintf(m_Name, "%cLV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 2), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 2), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_DV:
|
case RSP_LSC2_DV:
|
||||||
strcpy(m_Name, "LDV");
|
sprintf(m_Name, "%cDV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 3), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 3), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_QV:
|
case RSP_LSC2_QV:
|
||||||
strcpy(m_Name, "LQV");
|
sprintf(m_Name, "%cQV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_RV:
|
case RSP_LSC2_RV:
|
||||||
strcpy(m_Name, "LRV");
|
sprintf(m_Name, "%cRV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_PV:
|
case RSP_LSC2_PV:
|
||||||
strcpy(m_Name, "LPV");
|
sprintf(m_Name, "%cPV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 3), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 3), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_UV:
|
case RSP_LSC2_UV:
|
||||||
strcpy(m_Name, "LUV");
|
sprintf(m_Name, "%cUV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 3), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 3), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_HV:
|
case RSP_LSC2_HV:
|
||||||
strcpy(m_Name, "LHV");
|
sprintf(m_Name, "%cHV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_FV:
|
case RSP_LSC2_FV:
|
||||||
strcpy(m_Name, "LFV");
|
sprintf(m_Name, "%cFV", LoadStoreIdent);
|
||||||
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
||||||
|
break;
|
||||||
|
case RSP_LSC2_WV:
|
||||||
|
sprintf(m_Name, "%cWV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
case RSP_LSC2_TV:
|
case RSP_LSC2_TV:
|
||||||
strcpy(m_Name, "LTV");
|
sprintf(m_Name, "%cTV", LoadStoreIdent);
|
||||||
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
sprintf(m_Param, "$v%d[%d], %s0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? "-" : "", abs(m_Instruction.voffset << 4), GPR_Name(m_Instruction.base));
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
@ -577,60 +581,6 @@ void RSPInstruction::DecodeLC2Name(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RSPInstruction::DecodeSC2Name(void)
|
|
||||||
{
|
|
||||||
switch (m_Instruction.rd)
|
|
||||||
{
|
|
||||||
case RSP_LSC2_BV:
|
|
||||||
strcpy(m_Name, "SBV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_SV:
|
|
||||||
strcpy(m_Name, "SSV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_LV:
|
|
||||||
strcpy(m_Name, "SLV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_DV:
|
|
||||||
strcpy(m_Name, "SDV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_QV:
|
|
||||||
strcpy(m_Name, "SQV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_RV:
|
|
||||||
strcpy(m_Name, "SRV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_PV:
|
|
||||||
strcpy(m_Name, "SPV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_UV:
|
|
||||||
strcpy(m_Name, "SUV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_HV:
|
|
||||||
strcpy(m_Name, "SHV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_FV:
|
|
||||||
strcpy(m_Name, "SFV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
case RSP_LSC2_TV:
|
|
||||||
strcpy(m_Name, "STV");
|
|
||||||
sprintf(m_Param, "$v%d[%d], %c0x%03X(%s)", m_Instruction.rt, m_Instruction.del, (m_Instruction.voffset < 0) ? '-' : '+', abs(m_Instruction.voffset), GPR_Name(m_Instruction.base));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
strcpy(m_Name, "UNKNOWN");
|
|
||||||
sprintf(m_Param, "0x%08X", m_Instruction.Value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const char * RSPInstruction::ElementSpecifier(uint32_t Element)
|
const char * RSPInstruction::ElementSpecifier(uint32_t Element)
|
||||||
{
|
{
|
||||||
switch (Element)
|
switch (Element)
|
||||||
|
|
Loading…
Reference in New Issue