mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-04-20 03:25:16 +00:00
spu_iname: refactor to use actual strings
This commit is contained in:
parent
453478c98b
commit
8d1a9dce91
2 changed files with 201 additions and 229 deletions
|
@ -1,15 +1,2 @@
|
|||
#include "stdafx.h"
|
||||
#include "SPUAnalyser.h"
|
||||
|
||||
template <>
|
||||
void fmt_class_string<spu_iname::type>::format(std::string& out, u64 arg)
|
||||
{
|
||||
// Decode instruction name from the enum value
|
||||
for (u32 i = 0; i < 10; i++)
|
||||
{
|
||||
if (u64 value = (arg >> (54 - i * 6)) & 0x3f)
|
||||
{
|
||||
out += static_cast<char>(value + 0x20);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -490,225 +490,210 @@ struct spu_iflag
|
|||
}
|
||||
};
|
||||
|
||||
// Encode instruction name: 6 bits per character (0x20..0x5f), max 10
|
||||
static constexpr u64 spu_iname_encode(const char* ptr, u64 value = 0)
|
||||
{
|
||||
return *ptr == '\0' ? value : spu_iname_encode(ptr + 1, (*ptr - 0x20) | (value << 6));
|
||||
}
|
||||
|
||||
#define NAME(x) x = spu_iname_encode(#x)
|
||||
#define NAME(x) static constexpr const char& x = *#x
|
||||
|
||||
struct spu_iname
|
||||
{
|
||||
enum type : u64
|
||||
{
|
||||
NAME(UNK),
|
||||
NAME(HEQ),
|
||||
NAME(HEQI),
|
||||
NAME(HGT),
|
||||
NAME(HGTI),
|
||||
NAME(HLGT),
|
||||
NAME(HLGTI),
|
||||
NAME(HBR),
|
||||
NAME(HBRA),
|
||||
NAME(HBRR),
|
||||
NAME(STOP),
|
||||
NAME(STOPD),
|
||||
NAME(LNOP),
|
||||
NAME(NOP),
|
||||
NAME(SYNC),
|
||||
NAME(DSYNC),
|
||||
NAME(MFSPR),
|
||||
NAME(MTSPR),
|
||||
NAME(RDCH),
|
||||
NAME(RCHCNT),
|
||||
NAME(WRCH),
|
||||
NAME(LQD),
|
||||
NAME(LQX),
|
||||
NAME(LQA),
|
||||
NAME(LQR),
|
||||
NAME(STQD),
|
||||
NAME(STQX),
|
||||
NAME(STQA),
|
||||
NAME(STQR),
|
||||
NAME(CBD),
|
||||
NAME(CBX),
|
||||
NAME(CHD),
|
||||
NAME(CHX),
|
||||
NAME(CWD),
|
||||
NAME(CWX),
|
||||
NAME(CDD),
|
||||
NAME(CDX),
|
||||
NAME(ILH),
|
||||
NAME(ILHU),
|
||||
NAME(IL),
|
||||
NAME(ILA),
|
||||
NAME(IOHL),
|
||||
NAME(FSMBI),
|
||||
NAME(AH),
|
||||
NAME(AHI),
|
||||
NAME(A),
|
||||
NAME(AI),
|
||||
NAME(SFH),
|
||||
NAME(SFHI),
|
||||
NAME(SF),
|
||||
NAME(SFI),
|
||||
NAME(ADDX),
|
||||
NAME(CG),
|
||||
NAME(CGX),
|
||||
NAME(SFX),
|
||||
NAME(BG),
|
||||
NAME(BGX),
|
||||
NAME(MPY),
|
||||
NAME(MPYU),
|
||||
NAME(MPYI),
|
||||
NAME(MPYUI),
|
||||
NAME(MPYH),
|
||||
NAME(MPYS),
|
||||
NAME(MPYHH),
|
||||
NAME(MPYHHA),
|
||||
NAME(MPYHHU),
|
||||
NAME(MPYHHAU),
|
||||
NAME(CLZ),
|
||||
NAME(CNTB),
|
||||
NAME(FSMB),
|
||||
NAME(FSMH),
|
||||
NAME(FSM),
|
||||
NAME(GBB),
|
||||
NAME(GBH),
|
||||
NAME(GB),
|
||||
NAME(AVGB),
|
||||
NAME(ABSDB),
|
||||
NAME(SUMB),
|
||||
NAME(XSBH),
|
||||
NAME(XSHW),
|
||||
NAME(XSWD),
|
||||
NAME(AND),
|
||||
NAME(ANDC),
|
||||
NAME(ANDBI),
|
||||
NAME(ANDHI),
|
||||
NAME(ANDI),
|
||||
NAME(OR),
|
||||
NAME(ORC),
|
||||
NAME(ORBI),
|
||||
NAME(ORHI),
|
||||
NAME(ORI),
|
||||
NAME(ORX),
|
||||
NAME(XOR),
|
||||
NAME(XORBI),
|
||||
NAME(XORHI),
|
||||
NAME(XORI),
|
||||
NAME(NAND),
|
||||
NAME(NOR),
|
||||
NAME(EQV),
|
||||
NAME(MPYA),
|
||||
NAME(SELB),
|
||||
NAME(SHUFB),
|
||||
NAME(SHLH),
|
||||
NAME(SHLHI),
|
||||
NAME(SHL),
|
||||
NAME(SHLI),
|
||||
NAME(SHLQBI),
|
||||
NAME(SHLQBII),
|
||||
NAME(SHLQBY),
|
||||
NAME(SHLQBYI),
|
||||
NAME(SHLQBYBI),
|
||||
NAME(ROTH),
|
||||
NAME(ROTHI),
|
||||
NAME(ROT),
|
||||
NAME(ROTI),
|
||||
NAME(ROTQBY),
|
||||
NAME(ROTQBYI),
|
||||
NAME(ROTQBYBI),
|
||||
NAME(ROTQBI),
|
||||
NAME(ROTQBII),
|
||||
NAME(ROTHM),
|
||||
NAME(ROTHMI),
|
||||
NAME(ROTM),
|
||||
NAME(ROTMI),
|
||||
NAME(ROTQMBY),
|
||||
NAME(ROTQMBYI),
|
||||
NAME(ROTQMBYBI),
|
||||
NAME(ROTQMBI),
|
||||
NAME(ROTQMBII),
|
||||
NAME(ROTMAH),
|
||||
NAME(ROTMAHI),
|
||||
NAME(ROTMA),
|
||||
NAME(ROTMAI),
|
||||
NAME(CEQB),
|
||||
NAME(CEQBI),
|
||||
NAME(CEQH),
|
||||
NAME(CEQHI),
|
||||
NAME(CEQ),
|
||||
NAME(CEQI),
|
||||
NAME(CGTB),
|
||||
NAME(CGTBI),
|
||||
NAME(CGTH),
|
||||
NAME(CGTHI),
|
||||
NAME(CGT),
|
||||
NAME(CGTI),
|
||||
NAME(CLGTB),
|
||||
NAME(CLGTBI),
|
||||
NAME(CLGTH),
|
||||
NAME(CLGTHI),
|
||||
NAME(CLGT),
|
||||
NAME(CLGTI),
|
||||
NAME(BR),
|
||||
NAME(BRA),
|
||||
NAME(BRSL),
|
||||
NAME(BRASL),
|
||||
NAME(BI),
|
||||
NAME(IRET),
|
||||
NAME(BISLED),
|
||||
NAME(BISL),
|
||||
NAME(BRNZ),
|
||||
NAME(BRZ),
|
||||
NAME(BRHNZ),
|
||||
NAME(BRHZ),
|
||||
NAME(BIZ),
|
||||
NAME(BINZ),
|
||||
NAME(BIHZ),
|
||||
NAME(BIHNZ),
|
||||
NAME(FA),
|
||||
NAME(DFA),
|
||||
NAME(FS),
|
||||
NAME(DFS),
|
||||
NAME(FM),
|
||||
NAME(DFM),
|
||||
NAME(DFMA),
|
||||
NAME(DFNMS),
|
||||
NAME(DFMS),
|
||||
NAME(DFNMA),
|
||||
NAME(FREST),
|
||||
NAME(FRSQEST),
|
||||
NAME(FI),
|
||||
NAME(CSFLT),
|
||||
NAME(CFLTS),
|
||||
NAME(CUFLT),
|
||||
NAME(CFLTU),
|
||||
NAME(FRDS),
|
||||
NAME(FESD),
|
||||
NAME(FCEQ),
|
||||
NAME(FCMEQ),
|
||||
NAME(FCGT),
|
||||
NAME(FCMGT),
|
||||
NAME(FSCRWR),
|
||||
NAME(FSCRRD),
|
||||
NAME(DFCEQ),
|
||||
NAME(DFCMEQ),
|
||||
NAME(DFCGT),
|
||||
NAME(DFCMGT),
|
||||
NAME(DFTSV),
|
||||
NAME(FMA),
|
||||
NAME(FNMS),
|
||||
NAME(FMS),
|
||||
};
|
||||
|
||||
// Enable address-of operator for spu_decoder<>
|
||||
friend constexpr type operator &(type value)
|
||||
{
|
||||
return value;
|
||||
}
|
||||
NAME(UNK);
|
||||
NAME(HEQ);
|
||||
NAME(HEQI);
|
||||
NAME(HGT);
|
||||
NAME(HGTI);
|
||||
NAME(HLGT);
|
||||
NAME(HLGTI);
|
||||
NAME(HBR);
|
||||
NAME(HBRA);
|
||||
NAME(HBRR);
|
||||
NAME(STOP);
|
||||
NAME(STOPD);
|
||||
NAME(LNOP);
|
||||
NAME(NOP);
|
||||
NAME(SYNC);
|
||||
NAME(DSYNC);
|
||||
NAME(MFSPR);
|
||||
NAME(MTSPR);
|
||||
NAME(RDCH);
|
||||
NAME(RCHCNT);
|
||||
NAME(WRCH);
|
||||
NAME(LQD);
|
||||
NAME(LQX);
|
||||
NAME(LQA);
|
||||
NAME(LQR);
|
||||
NAME(STQD);
|
||||
NAME(STQX);
|
||||
NAME(STQA);
|
||||
NAME(STQR);
|
||||
NAME(CBD);
|
||||
NAME(CBX);
|
||||
NAME(CHD);
|
||||
NAME(CHX);
|
||||
NAME(CWD);
|
||||
NAME(CWX);
|
||||
NAME(CDD);
|
||||
NAME(CDX);
|
||||
NAME(ILH);
|
||||
NAME(ILHU);
|
||||
NAME(IL);
|
||||
NAME(ILA);
|
||||
NAME(IOHL);
|
||||
NAME(FSMBI);
|
||||
NAME(AH);
|
||||
NAME(AHI);
|
||||
NAME(A);
|
||||
NAME(AI);
|
||||
NAME(SFH);
|
||||
NAME(SFHI);
|
||||
NAME(SF);
|
||||
NAME(SFI);
|
||||
NAME(ADDX);
|
||||
NAME(CG);
|
||||
NAME(CGX);
|
||||
NAME(SFX);
|
||||
NAME(BG);
|
||||
NAME(BGX);
|
||||
NAME(MPY);
|
||||
NAME(MPYU);
|
||||
NAME(MPYI);
|
||||
NAME(MPYUI);
|
||||
NAME(MPYH);
|
||||
NAME(MPYS);
|
||||
NAME(MPYHH);
|
||||
NAME(MPYHHA);
|
||||
NAME(MPYHHU);
|
||||
NAME(MPYHHAU);
|
||||
NAME(CLZ);
|
||||
NAME(CNTB);
|
||||
NAME(FSMB);
|
||||
NAME(FSMH);
|
||||
NAME(FSM);
|
||||
NAME(GBB);
|
||||
NAME(GBH);
|
||||
NAME(GB);
|
||||
NAME(AVGB);
|
||||
NAME(ABSDB);
|
||||
NAME(SUMB);
|
||||
NAME(XSBH);
|
||||
NAME(XSHW);
|
||||
NAME(XSWD);
|
||||
NAME(AND);
|
||||
NAME(ANDC);
|
||||
NAME(ANDBI);
|
||||
NAME(ANDHI);
|
||||
NAME(ANDI);
|
||||
NAME(OR);
|
||||
NAME(ORC);
|
||||
NAME(ORBI);
|
||||
NAME(ORHI);
|
||||
NAME(ORI);
|
||||
NAME(ORX);
|
||||
NAME(XOR);
|
||||
NAME(XORBI);
|
||||
NAME(XORHI);
|
||||
NAME(XORI);
|
||||
NAME(NAND);
|
||||
NAME(NOR);
|
||||
NAME(EQV);
|
||||
NAME(MPYA);
|
||||
NAME(SELB);
|
||||
NAME(SHUFB);
|
||||
NAME(SHLH);
|
||||
NAME(SHLHI);
|
||||
NAME(SHL);
|
||||
NAME(SHLI);
|
||||
NAME(SHLQBI);
|
||||
NAME(SHLQBII);
|
||||
NAME(SHLQBY);
|
||||
NAME(SHLQBYI);
|
||||
NAME(SHLQBYBI);
|
||||
NAME(ROTH);
|
||||
NAME(ROTHI);
|
||||
NAME(ROT);
|
||||
NAME(ROTI);
|
||||
NAME(ROTQBY);
|
||||
NAME(ROTQBYI);
|
||||
NAME(ROTQBYBI);
|
||||
NAME(ROTQBI);
|
||||
NAME(ROTQBII);
|
||||
NAME(ROTHM);
|
||||
NAME(ROTHMI);
|
||||
NAME(ROTM);
|
||||
NAME(ROTMI);
|
||||
NAME(ROTQMBY);
|
||||
NAME(ROTQMBYI);
|
||||
NAME(ROTQMBYBI);
|
||||
NAME(ROTQMBI);
|
||||
NAME(ROTQMBII);
|
||||
NAME(ROTMAH);
|
||||
NAME(ROTMAHI);
|
||||
NAME(ROTMA);
|
||||
NAME(ROTMAI);
|
||||
NAME(CEQB);
|
||||
NAME(CEQBI);
|
||||
NAME(CEQH);
|
||||
NAME(CEQHI);
|
||||
NAME(CEQ);
|
||||
NAME(CEQI);
|
||||
NAME(CGTB);
|
||||
NAME(CGTBI);
|
||||
NAME(CGTH);
|
||||
NAME(CGTHI);
|
||||
NAME(CGT);
|
||||
NAME(CGTI);
|
||||
NAME(CLGTB);
|
||||
NAME(CLGTBI);
|
||||
NAME(CLGTH);
|
||||
NAME(CLGTHI);
|
||||
NAME(CLGT);
|
||||
NAME(CLGTI);
|
||||
NAME(BR);
|
||||
NAME(BRA);
|
||||
NAME(BRSL);
|
||||
NAME(BRASL);
|
||||
NAME(BI);
|
||||
NAME(IRET);
|
||||
NAME(BISLED);
|
||||
NAME(BISL);
|
||||
NAME(BRNZ);
|
||||
NAME(BRZ);
|
||||
NAME(BRHNZ);
|
||||
NAME(BRHZ);
|
||||
NAME(BIZ);
|
||||
NAME(BINZ);
|
||||
NAME(BIHZ);
|
||||
NAME(BIHNZ);
|
||||
NAME(FA);
|
||||
NAME(DFA);
|
||||
NAME(FS);
|
||||
NAME(DFS);
|
||||
NAME(FM);
|
||||
NAME(DFM);
|
||||
NAME(DFMA);
|
||||
NAME(DFNMS);
|
||||
NAME(DFMS);
|
||||
NAME(DFNMA);
|
||||
NAME(FREST);
|
||||
NAME(FRSQEST);
|
||||
NAME(FI);
|
||||
NAME(CSFLT);
|
||||
NAME(CFLTS);
|
||||
NAME(CUFLT);
|
||||
NAME(CFLTU);
|
||||
NAME(FRDS);
|
||||
NAME(FESD);
|
||||
NAME(FCEQ);
|
||||
NAME(FCMEQ);
|
||||
NAME(FCGT);
|
||||
NAME(FCMGT);
|
||||
NAME(FSCRWR);
|
||||
NAME(FSCRRD);
|
||||
NAME(DFCEQ);
|
||||
NAME(DFCMEQ);
|
||||
NAME(DFCGT);
|
||||
NAME(DFCMGT);
|
||||
NAME(DFTSV);
|
||||
NAME(FMA);
|
||||
NAME(FNMS);
|
||||
NAME(FMS);
|
||||
};
|
||||
|
||||
#undef NAME
|
||||
|
|
Loading…
Add table
Reference in a new issue