mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-08-08 09:09:46 +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 "stdafx.h"
|
||||||
#include "SPUAnalyser.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
|
#define NAME(x) static constexpr const char& x = *#x
|
||||||
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)
|
|
||||||
|
|
||||||
struct spu_iname
|
struct spu_iname
|
||||||
{
|
{
|
||||||
enum type : u64
|
NAME(UNK);
|
||||||
{
|
NAME(HEQ);
|
||||||
NAME(UNK),
|
NAME(HEQI);
|
||||||
NAME(HEQ),
|
NAME(HGT);
|
||||||
NAME(HEQI),
|
NAME(HGTI);
|
||||||
NAME(HGT),
|
NAME(HLGT);
|
||||||
NAME(HGTI),
|
NAME(HLGTI);
|
||||||
NAME(HLGT),
|
NAME(HBR);
|
||||||
NAME(HLGTI),
|
NAME(HBRA);
|
||||||
NAME(HBR),
|
NAME(HBRR);
|
||||||
NAME(HBRA),
|
NAME(STOP);
|
||||||
NAME(HBRR),
|
NAME(STOPD);
|
||||||
NAME(STOP),
|
NAME(LNOP);
|
||||||
NAME(STOPD),
|
NAME(NOP);
|
||||||
NAME(LNOP),
|
NAME(SYNC);
|
||||||
NAME(NOP),
|
NAME(DSYNC);
|
||||||
NAME(SYNC),
|
NAME(MFSPR);
|
||||||
NAME(DSYNC),
|
NAME(MTSPR);
|
||||||
NAME(MFSPR),
|
NAME(RDCH);
|
||||||
NAME(MTSPR),
|
NAME(RCHCNT);
|
||||||
NAME(RDCH),
|
NAME(WRCH);
|
||||||
NAME(RCHCNT),
|
NAME(LQD);
|
||||||
NAME(WRCH),
|
NAME(LQX);
|
||||||
NAME(LQD),
|
NAME(LQA);
|
||||||
NAME(LQX),
|
NAME(LQR);
|
||||||
NAME(LQA),
|
NAME(STQD);
|
||||||
NAME(LQR),
|
NAME(STQX);
|
||||||
NAME(STQD),
|
NAME(STQA);
|
||||||
NAME(STQX),
|
NAME(STQR);
|
||||||
NAME(STQA),
|
NAME(CBD);
|
||||||
NAME(STQR),
|
NAME(CBX);
|
||||||
NAME(CBD),
|
NAME(CHD);
|
||||||
NAME(CBX),
|
NAME(CHX);
|
||||||
NAME(CHD),
|
NAME(CWD);
|
||||||
NAME(CHX),
|
NAME(CWX);
|
||||||
NAME(CWD),
|
NAME(CDD);
|
||||||
NAME(CWX),
|
NAME(CDX);
|
||||||
NAME(CDD),
|
NAME(ILH);
|
||||||
NAME(CDX),
|
NAME(ILHU);
|
||||||
NAME(ILH),
|
NAME(IL);
|
||||||
NAME(ILHU),
|
NAME(ILA);
|
||||||
NAME(IL),
|
NAME(IOHL);
|
||||||
NAME(ILA),
|
NAME(FSMBI);
|
||||||
NAME(IOHL),
|
NAME(AH);
|
||||||
NAME(FSMBI),
|
NAME(AHI);
|
||||||
NAME(AH),
|
NAME(A);
|
||||||
NAME(AHI),
|
NAME(AI);
|
||||||
NAME(A),
|
NAME(SFH);
|
||||||
NAME(AI),
|
NAME(SFHI);
|
||||||
NAME(SFH),
|
NAME(SF);
|
||||||
NAME(SFHI),
|
NAME(SFI);
|
||||||
NAME(SF),
|
NAME(ADDX);
|
||||||
NAME(SFI),
|
NAME(CG);
|
||||||
NAME(ADDX),
|
NAME(CGX);
|
||||||
NAME(CG),
|
NAME(SFX);
|
||||||
NAME(CGX),
|
NAME(BG);
|
||||||
NAME(SFX),
|
NAME(BGX);
|
||||||
NAME(BG),
|
NAME(MPY);
|
||||||
NAME(BGX),
|
NAME(MPYU);
|
||||||
NAME(MPY),
|
NAME(MPYI);
|
||||||
NAME(MPYU),
|
NAME(MPYUI);
|
||||||
NAME(MPYI),
|
NAME(MPYH);
|
||||||
NAME(MPYUI),
|
NAME(MPYS);
|
||||||
NAME(MPYH),
|
NAME(MPYHH);
|
||||||
NAME(MPYS),
|
NAME(MPYHHA);
|
||||||
NAME(MPYHH),
|
NAME(MPYHHU);
|
||||||
NAME(MPYHHA),
|
NAME(MPYHHAU);
|
||||||
NAME(MPYHHU),
|
NAME(CLZ);
|
||||||
NAME(MPYHHAU),
|
NAME(CNTB);
|
||||||
NAME(CLZ),
|
NAME(FSMB);
|
||||||
NAME(CNTB),
|
NAME(FSMH);
|
||||||
NAME(FSMB),
|
NAME(FSM);
|
||||||
NAME(FSMH),
|
NAME(GBB);
|
||||||
NAME(FSM),
|
NAME(GBH);
|
||||||
NAME(GBB),
|
NAME(GB);
|
||||||
NAME(GBH),
|
NAME(AVGB);
|
||||||
NAME(GB),
|
NAME(ABSDB);
|
||||||
NAME(AVGB),
|
NAME(SUMB);
|
||||||
NAME(ABSDB),
|
NAME(XSBH);
|
||||||
NAME(SUMB),
|
NAME(XSHW);
|
||||||
NAME(XSBH),
|
NAME(XSWD);
|
||||||
NAME(XSHW),
|
NAME(AND);
|
||||||
NAME(XSWD),
|
NAME(ANDC);
|
||||||
NAME(AND),
|
NAME(ANDBI);
|
||||||
NAME(ANDC),
|
NAME(ANDHI);
|
||||||
NAME(ANDBI),
|
NAME(ANDI);
|
||||||
NAME(ANDHI),
|
NAME(OR);
|
||||||
NAME(ANDI),
|
NAME(ORC);
|
||||||
NAME(OR),
|
NAME(ORBI);
|
||||||
NAME(ORC),
|
NAME(ORHI);
|
||||||
NAME(ORBI),
|
NAME(ORI);
|
||||||
NAME(ORHI),
|
NAME(ORX);
|
||||||
NAME(ORI),
|
NAME(XOR);
|
||||||
NAME(ORX),
|
NAME(XORBI);
|
||||||
NAME(XOR),
|
NAME(XORHI);
|
||||||
NAME(XORBI),
|
NAME(XORI);
|
||||||
NAME(XORHI),
|
NAME(NAND);
|
||||||
NAME(XORI),
|
NAME(NOR);
|
||||||
NAME(NAND),
|
NAME(EQV);
|
||||||
NAME(NOR),
|
NAME(MPYA);
|
||||||
NAME(EQV),
|
NAME(SELB);
|
||||||
NAME(MPYA),
|
NAME(SHUFB);
|
||||||
NAME(SELB),
|
NAME(SHLH);
|
||||||
NAME(SHUFB),
|
NAME(SHLHI);
|
||||||
NAME(SHLH),
|
NAME(SHL);
|
||||||
NAME(SHLHI),
|
NAME(SHLI);
|
||||||
NAME(SHL),
|
NAME(SHLQBI);
|
||||||
NAME(SHLI),
|
NAME(SHLQBII);
|
||||||
NAME(SHLQBI),
|
NAME(SHLQBY);
|
||||||
NAME(SHLQBII),
|
NAME(SHLQBYI);
|
||||||
NAME(SHLQBY),
|
NAME(SHLQBYBI);
|
||||||
NAME(SHLQBYI),
|
NAME(ROTH);
|
||||||
NAME(SHLQBYBI),
|
NAME(ROTHI);
|
||||||
NAME(ROTH),
|
NAME(ROT);
|
||||||
NAME(ROTHI),
|
NAME(ROTI);
|
||||||
NAME(ROT),
|
NAME(ROTQBY);
|
||||||
NAME(ROTI),
|
NAME(ROTQBYI);
|
||||||
NAME(ROTQBY),
|
NAME(ROTQBYBI);
|
||||||
NAME(ROTQBYI),
|
NAME(ROTQBI);
|
||||||
NAME(ROTQBYBI),
|
NAME(ROTQBII);
|
||||||
NAME(ROTQBI),
|
NAME(ROTHM);
|
||||||
NAME(ROTQBII),
|
NAME(ROTHMI);
|
||||||
NAME(ROTHM),
|
NAME(ROTM);
|
||||||
NAME(ROTHMI),
|
NAME(ROTMI);
|
||||||
NAME(ROTM),
|
NAME(ROTQMBY);
|
||||||
NAME(ROTMI),
|
NAME(ROTQMBYI);
|
||||||
NAME(ROTQMBY),
|
NAME(ROTQMBYBI);
|
||||||
NAME(ROTQMBYI),
|
NAME(ROTQMBI);
|
||||||
NAME(ROTQMBYBI),
|
NAME(ROTQMBII);
|
||||||
NAME(ROTQMBI),
|
NAME(ROTMAH);
|
||||||
NAME(ROTQMBII),
|
NAME(ROTMAHI);
|
||||||
NAME(ROTMAH),
|
NAME(ROTMA);
|
||||||
NAME(ROTMAHI),
|
NAME(ROTMAI);
|
||||||
NAME(ROTMA),
|
NAME(CEQB);
|
||||||
NAME(ROTMAI),
|
NAME(CEQBI);
|
||||||
NAME(CEQB),
|
NAME(CEQH);
|
||||||
NAME(CEQBI),
|
NAME(CEQHI);
|
||||||
NAME(CEQH),
|
NAME(CEQ);
|
||||||
NAME(CEQHI),
|
NAME(CEQI);
|
||||||
NAME(CEQ),
|
NAME(CGTB);
|
||||||
NAME(CEQI),
|
NAME(CGTBI);
|
||||||
NAME(CGTB),
|
NAME(CGTH);
|
||||||
NAME(CGTBI),
|
NAME(CGTHI);
|
||||||
NAME(CGTH),
|
NAME(CGT);
|
||||||
NAME(CGTHI),
|
NAME(CGTI);
|
||||||
NAME(CGT),
|
NAME(CLGTB);
|
||||||
NAME(CGTI),
|
NAME(CLGTBI);
|
||||||
NAME(CLGTB),
|
NAME(CLGTH);
|
||||||
NAME(CLGTBI),
|
NAME(CLGTHI);
|
||||||
NAME(CLGTH),
|
NAME(CLGT);
|
||||||
NAME(CLGTHI),
|
NAME(CLGTI);
|
||||||
NAME(CLGT),
|
NAME(BR);
|
||||||
NAME(CLGTI),
|
NAME(BRA);
|
||||||
NAME(BR),
|
NAME(BRSL);
|
||||||
NAME(BRA),
|
NAME(BRASL);
|
||||||
NAME(BRSL),
|
NAME(BI);
|
||||||
NAME(BRASL),
|
NAME(IRET);
|
||||||
NAME(BI),
|
NAME(BISLED);
|
||||||
NAME(IRET),
|
NAME(BISL);
|
||||||
NAME(BISLED),
|
NAME(BRNZ);
|
||||||
NAME(BISL),
|
NAME(BRZ);
|
||||||
NAME(BRNZ),
|
NAME(BRHNZ);
|
||||||
NAME(BRZ),
|
NAME(BRHZ);
|
||||||
NAME(BRHNZ),
|
NAME(BIZ);
|
||||||
NAME(BRHZ),
|
NAME(BINZ);
|
||||||
NAME(BIZ),
|
NAME(BIHZ);
|
||||||
NAME(BINZ),
|
NAME(BIHNZ);
|
||||||
NAME(BIHZ),
|
NAME(FA);
|
||||||
NAME(BIHNZ),
|
NAME(DFA);
|
||||||
NAME(FA),
|
NAME(FS);
|
||||||
NAME(DFA),
|
NAME(DFS);
|
||||||
NAME(FS),
|
NAME(FM);
|
||||||
NAME(DFS),
|
NAME(DFM);
|
||||||
NAME(FM),
|
NAME(DFMA);
|
||||||
NAME(DFM),
|
NAME(DFNMS);
|
||||||
NAME(DFMA),
|
NAME(DFMS);
|
||||||
NAME(DFNMS),
|
NAME(DFNMA);
|
||||||
NAME(DFMS),
|
NAME(FREST);
|
||||||
NAME(DFNMA),
|
NAME(FRSQEST);
|
||||||
NAME(FREST),
|
NAME(FI);
|
||||||
NAME(FRSQEST),
|
NAME(CSFLT);
|
||||||
NAME(FI),
|
NAME(CFLTS);
|
||||||
NAME(CSFLT),
|
NAME(CUFLT);
|
||||||
NAME(CFLTS),
|
NAME(CFLTU);
|
||||||
NAME(CUFLT),
|
NAME(FRDS);
|
||||||
NAME(CFLTU),
|
NAME(FESD);
|
||||||
NAME(FRDS),
|
NAME(FCEQ);
|
||||||
NAME(FESD),
|
NAME(FCMEQ);
|
||||||
NAME(FCEQ),
|
NAME(FCGT);
|
||||||
NAME(FCMEQ),
|
NAME(FCMGT);
|
||||||
NAME(FCGT),
|
NAME(FSCRWR);
|
||||||
NAME(FCMGT),
|
NAME(FSCRRD);
|
||||||
NAME(FSCRWR),
|
NAME(DFCEQ);
|
||||||
NAME(FSCRRD),
|
NAME(DFCMEQ);
|
||||||
NAME(DFCEQ),
|
NAME(DFCGT);
|
||||||
NAME(DFCMEQ),
|
NAME(DFCMGT);
|
||||||
NAME(DFCGT),
|
NAME(DFTSV);
|
||||||
NAME(DFCMGT),
|
NAME(FMA);
|
||||||
NAME(DFTSV),
|
NAME(FNMS);
|
||||||
NAME(FMA),
|
NAME(FMS);
|
||||||
NAME(FNMS),
|
|
||||||
NAME(FMS),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Enable address-of operator for spu_decoder<>
|
|
||||||
friend constexpr type operator &(type value)
|
|
||||||
{
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef NAME
|
#undef NAME
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue