rpcsx/rpcs3/Emu/Cell/SPUDisAsm.h

891 lines
22 KiB
C
Raw Normal View History

#pragma once
#include "Emu/Cell/SPUOpcodes.h"
#include "Emu/Cell/PPCDisAsm.h"
#include "Emu/Cell/SPUThread.h"
#include "Gui/DisAsmFrame.h"
#include "Emu/Memory/Memory.h"
class SPUDisAsm
: public SPUOpcodes
, public PPCDisAsm
{
public:
SPUDisAsm(CPUDisAsmMode mode) : PPCDisAsm(mode)
{
}
~SPUDisAsm()
{
}
private:
virtual u32 DisAsmBranchTarget(const s32 imm)
{
return branchTarget(dump_pc, imm);
}
private:
wxString& FixOp(wxString& op)
{
op.Append(' ', max<int>(10 - (int)op.Len(), 0));
return op;
}
void DisAsm(const char* op)
{
Write(op);
}
void DisAsm(wxString op, u32 a1)
{
Write(wxString::Format("%s 0x%x", FixOp(op).wx_str(), a1));
}
void DisAsm(wxString op, const char* a1)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s", FixOp(op).wx_str(), wxString(a1).wx_str()));
}
void DisAsm(wxString op, const char* a1, const char* a2)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s,%s", FixOp(op).wx_str(), wxString(a1).wx_str(), wxString(a2).wx_str()));
}
void DisAsm(wxString op, int a1, const char* a2)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s 0x%x,%s", FixOp(op).wx_str(), a1, wxString(a2).wx_str()));
}
void DisAsm(wxString op, const char* a1, int a2)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s,0x%x", FixOp(op).wx_str(), wxString(a1).wx_str(), a2));
}
void DisAsm(wxString op, int a1, int a2)
{
Write(wxString::Format("%s 0x%x,0x%x", FixOp(op).wx_str(), a1, a2));
}
void DisAsm(wxString op, const char* a1, const char* a2, const char* a3)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s,%s,%s", FixOp(op).wx_str(), wxString(a1).wx_str(), wxString(a2).wx_str(), wxString(a3).wx_str()));
}
void DisAsm(wxString op, const char* a1, int a2, const char* a3)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s,0x%x(%s)", FixOp(op).wx_str(), wxString(a1).wx_str(), a2, wxString(a3).wx_str()));
}
void DisAsm(wxString op, const char* a1, const char* a2, int a3)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s,%s,0x%x", FixOp(op).wx_str(), wxString(a1).wx_str(), wxString(a2).wx_str(), a3));
}
void DisAsm(wxString op, const char* a1, const char* a2, const char* a3, const char* a4)
{
2014-02-13 17:59:13 +01:00
Write(wxString::Format("%s %s,%s,%s,%s", FixOp(op).wx_str(), wxString(a1).wx_str(), wxString(a2).wx_str(), wxString(a3).wx_str(), wxString(a4).wx_str()));
}
//0 - 10
2013-07-04 16:20:36 +02:00
void STOP(u32 code)
{
DisAsm("stop", code);
}
2013-07-04 16:20:36 +02:00
void LNOP()
{
DisAsm("lnop");
}
2013-07-04 16:20:36 +02:00
void SYNC(u32 Cbit)
{
DisAsm("sync", Cbit);
}
2013-07-04 16:20:36 +02:00
void DSYNC()
{
DisAsm("dsync");
}
2013-07-04 16:20:36 +02:00
void MFSPR(u32 rt, u32 sa)
{
DisAsm("mfspr", spu_reg_name[rt], spu_reg_name[sa]); // Are SPR mapped on the GPR or are there 128 additional registers ? Yes, there are also 128 SPR making 256 registers total
}
2013-07-04 16:20:36 +02:00
void RDCH(u32 rt, u32 ra)
{
DisAsm("rdch", spu_reg_name[rt], spu_ch_name[ra]);
}
2013-07-04 16:20:36 +02:00
void RCHCNT(u32 rt, u32 ra)
{
DisAsm("rchcnt", spu_reg_name[rt], spu_ch_name[ra]);
}
2013-07-04 16:20:36 +02:00
void SF(u32 rt, u32 ra, u32 rb)
{
DisAsm("sf", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void OR(u32 rt, u32 ra, u32 rb)
{
DisAsm("or", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void BG(u32 rt, u32 ra, u32 rb)
{
DisAsm("bg", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SFH(u32 rt, u32 ra, u32 rb)
{
DisAsm("sfh", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void NOR(u32 rt, u32 ra, u32 rb)
{
DisAsm("nor", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ABSDB(u32 rt, u32 ra, u32 rb)
{
DisAsm("absdb", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROT(u32 rt, u32 ra, u32 rb)
{
DisAsm("rot", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTM(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotm", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTMA(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotma", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SHL(u32 rt, u32 ra, u32 rb)
{
DisAsm("shl", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTH(u32 rt, u32 ra, u32 rb)
{
DisAsm("roth", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTHM(u32 rt, u32 ra, u32 rb)
{
DisAsm("rothm", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTMAH(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotmah", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SHLH(u32 rt, u32 ra, u32 rb)
{
DisAsm("shlh", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTI(u32 rt, u32 ra, s32 i7)
{
DisAsm("roti", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTMI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotmi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTMAI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotmai", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void SHLI(u32 rt, u32 ra, s32 i7)
{
DisAsm("shli", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTHI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rothi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTHMI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rothmi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTMAHI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotmahi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void SHLHI(u32 rt, u32 ra, s32 i7)
{
DisAsm("shlhi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void A(u32 rt, u32 ra, u32 rb)
{
DisAsm("a", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void AND(u32 rt, u32 ra, u32 rb)
{
DisAsm("and", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CG(u32 rt, u32 ra, u32 rb)
{
DisAsm("cg", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void AH(u32 rt, u32 ra, u32 rb)
{
DisAsm("ah", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void NAND(u32 rt, u32 ra, u32 rb)
{
DisAsm("nand", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void AVGB(u32 rt, u32 ra, u32 rb)
{
DisAsm("avgb", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MTSPR(u32 rt, u32 sa)
{
DisAsm("mtspr", spu_reg_name[rt], spu_reg_name[sa]);
}
2013-07-04 16:20:36 +02:00
void WRCH(u32 ra, u32 rt)
{
DisAsm("wrch", spu_ch_name[ra], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void BIZ(u32 rt, u32 ra)
{
DisAsm("biz", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void BINZ(u32 rt, u32 ra)
{
DisAsm("binz", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void BIHZ(u32 rt, u32 ra)
{
DisAsm("bihz", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void BIHNZ(u32 rt, u32 ra)
{
DisAsm("bihnz", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void STOPD(u32 rc, u32 ra, u32 rb)
{
DisAsm("bihnz", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void STQX(u32 rt, u32 ra, u32 rb)
{
DisAsm("stqx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void BI(u32 ra)
{
DisAsm("bi", spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void BISL(u32 rt, u32 ra)
{
DisAsm("bisl", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void IRET(u32 ra)
{
DisAsm("iret", spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void BISLED(u32 rt, u32 ra)
{
DisAsm("bisled", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void HBR(u32 p, u32 ro, u32 ra)
{
DisAsm("hbr", DisAsmBranchTarget(ro), spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void GB(u32 rt, u32 ra)
{
DisAsm("gb", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void GBH(u32 rt, u32 ra)
{
DisAsm("gbh", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void GBB(u32 rt, u32 ra)
{
DisAsm("gbb", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FSM(u32 rt, u32 ra)
{
DisAsm("fsm", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FSMH(u32 rt, u32 ra)
{
DisAsm("fsmh", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FSMB(u32 rt, u32 ra)
{
DisAsm("fsmb", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FREST(u32 rt, u32 ra)
{
DisAsm("frest", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FRSQEST(u32 rt, u32 ra)
{
DisAsm("frsqest", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void LQX(u32 rt, u32 ra, u32 rb)
{
DisAsm("lqx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTQBYBI(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotqbybi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTQMBYBI(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotqmbybi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SHLQBYBI(u32 rt, u32 ra, u32 rb)
{
DisAsm("shlqbybi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CBX(u32 rt, u32 ra, u32 rb)
{
DisAsm("cbx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CHX(u32 rt, u32 ra, u32 rb)
{
DisAsm("chx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CWX(u32 rt, u32 ra, u32 rb)
{
DisAsm("cwx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CDX(u32 rt, u32 ra, u32 rb)
{
DisAsm("cdx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTQBI(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotqbi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTQMBI(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotqmbi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SHLQBI(u32 rt, u32 ra, u32 rb)
{
DisAsm("shlqbi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTQBY(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotqby", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ROTQMBY(u32 rt, u32 ra, u32 rb)
{
DisAsm("rotqmby", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SHLQBY(u32 rt, u32 ra, u32 rb)
{
DisAsm("shlqby", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ORX(u32 rt, u32 ra)
{
DisAsm("orx", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void CBD(u32 rt, u32 ra, s32 i7)
{
DisAsm("cbd", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void CHD(u32 rt, u32 ra, s32 i7)
{
DisAsm("chd", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void CWD(u32 rt, u32 ra, s32 i7)
{
DisAsm("cwd", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void CDD(u32 rt, u32 ra, s32 i7)
{
DisAsm("cdd", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTQBII(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotqbii", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTQMBII(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotqmbii", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void SHLQBII(u32 rt, u32 ra, s32 i7)
{
DisAsm("shlqbii", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTQBYI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotqbyi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void ROTQMBYI(u32 rt, u32 ra, s32 i7)
{
DisAsm("rotqmbyi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void SHLQBYI(u32 rt, u32 ra, s32 i7)
{
DisAsm("shlqbyi", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void NOP(u32 rt)
{
DisAsm("nop", spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void CGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("cgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void XOR(u32 rt, u32 ra, u32 rb)
{
DisAsm("xor", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CGTH(u32 rt, u32 ra, u32 rb)
{
DisAsm("cgth", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void EQV(u32 rt, u32 ra, u32 rb)
{
DisAsm("eqv", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CGTB(u32 rt, u32 ra, u32 rb)
{
DisAsm("cgtb", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SUMB(u32 rt, u32 ra, u32 rb)
{
DisAsm("sumb", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
void HGT(u32 rt, s32 ra, s32 rb)
{
DisAsm("hgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CLZ(u32 rt, u32 ra)
{
DisAsm("clz", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void XSWD(u32 rt, u32 ra)
{
DisAsm("xswd", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void XSHW(u32 rt, u32 ra)
{
DisAsm("xshw", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void CNTB(u32 rt, u32 ra)
{
DisAsm("cntb", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void XSBH(u32 rt, u32 ra)
{
DisAsm("xsbh", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void CLGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("clgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ANDC(u32 rt, u32 ra, u32 rb)
{
DisAsm("andc", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FCGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("fcgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFCGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfcgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FA(u32 rt, u32 ra, u32 rb)
{
DisAsm("fa", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FS(u32 rt, u32 ra, u32 rb)
{
DisAsm("fs", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FM(u32 rt, u32 ra, u32 rb)
{
DisAsm("fm", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CLGTH(u32 rt, u32 ra, u32 rb)
{
DisAsm("clgth", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ORC(u32 rt, u32 ra, u32 rb)
{
DisAsm("orc", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FCMGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("fcmgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFCMGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfcmgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFA(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfa", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFS(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfs", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFM(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfm", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CLGTB(u32 rt, u32 ra, u32 rb)
{
DisAsm("clgtb", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void HLGT(u32 rt, u32 ra, u32 rb)
{
DisAsm("hlgt", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFMA(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfma", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFMS(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfms", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFNMS(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfnms", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFNMA(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfnma", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CEQ(u32 rt, u32 ra, u32 rb)
{
DisAsm("ceq", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYHHU(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpyhhu", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void ADDX(u32 rt, u32 ra, u32 rb)
{
DisAsm("addx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void SFX(u32 rt, u32 ra, u32 rb)
{
DisAsm("sfx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CGX(u32 rt, u32 ra, u32 rb)
{
DisAsm("cgx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void BGX(u32 rt, u32 ra, u32 rb)
{
DisAsm("bgx", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYHHA(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpyhha", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYHHAU(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpyhhau", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FSCRRD(u32 rt)
{
DisAsm("fscrrd", spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void FESD(u32 rt, u32 ra)
{
DisAsm("fesd", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FRDS(u32 rt, u32 ra)
{
DisAsm("frds", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void FSCRWR(u32 rt, u32 ra)
{
DisAsm("fscrwr", spu_reg_name[rt], spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void DFTSV(u32 rt, u32 ra, s32 i7)
{
DisAsm("dftsv", spu_reg_name[rt], spu_reg_name[ra], i7);
}
2013-07-04 16:20:36 +02:00
void FCEQ(u32 rt, u32 ra, u32 rb)
{
DisAsm("fceq", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFCEQ(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfceq", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPY(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpy", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYH(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpyh", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYHH(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpyhh", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYS(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpys", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CEQH(u32 rt, u32 ra, u32 rb)
{
DisAsm("ceqh", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FCMEQ(u32 rt, u32 ra, u32 rb)
{
DisAsm("fcmeq", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void DFCMEQ(u32 rt, u32 ra, u32 rb)
{
DisAsm("dfcmeq", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void MPYU(u32 rt, u32 ra, u32 rb)
{
DisAsm("mpyu", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void CEQB(u32 rt, u32 ra, u32 rb)
{
DisAsm("ceqb", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void FI(u32 rt, u32 ra, u32 rb)
{
DisAsm("fi", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
void HEQ(u32 rt, u32 ra, u32 rb)
{
DisAsm("heq", spu_reg_name[rt], spu_reg_name[ra], spu_reg_name[rb]);
}
2013-07-04 16:20:36 +02:00
//0 - 9
void CFLTS(u32 rt, u32 ra, s32 i8)
{
DisAsm("cflts", spu_reg_name[rt], spu_reg_name[ra], i8);
}
2013-07-04 16:20:36 +02:00
void CFLTU(u32 rt, u32 ra, s32 i8)
{
DisAsm("cfltu", spu_reg_name[rt], spu_reg_name[ra], i8);
}
2013-07-04 16:20:36 +02:00
void CSFLT(u32 rt, u32 ra, s32 i8)
{
DisAsm("csflt", spu_reg_name[rt], spu_reg_name[ra], i8);
}
2013-07-04 16:20:36 +02:00
void CUFLT(u32 rt, u32 ra, s32 i8)
{
DisAsm("cuflt", spu_reg_name[rt], spu_reg_name[ra], i8);
}
//0 - 8
2013-07-04 16:20:36 +02:00
void BRZ(u32 rt, s32 i16)
{
DisAsm("brz", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void STQA(u32 rt, s32 i16)
{
DisAsm("stqa", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void BRNZ(u32 rt, s32 i16)
{
DisAsm("brnz", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void BRHZ(u32 rt, s32 i16)
{
DisAsm("brhz", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void BRHNZ(u32 rt, s32 i16)
{
DisAsm("brhnz", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void STQR(u32 rt, s32 i16)
{
DisAsm("stqr", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void BRA(s32 i16)
{
DisAsm("bra", DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void LQA(u32 rt, s32 i16)
{
DisAsm("lqa", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void BRASL(u32 rt, s32 i16)
{
DisAsm("brasl", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void BR(s32 i16)
{
DisAsm("br", DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void FSMBI(u32 rt, s32 i16)
{
DisAsm("fsmbi", spu_reg_name[rt], i16);
}
2013-07-04 16:20:36 +02:00
void BRSL(u32 rt, s32 i16)
{
DisAsm("brsl", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void LQR(u32 rt, s32 i16)
{
DisAsm("lqr", spu_reg_name[rt], DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void IL(u32 rt, s32 i16)
{
DisAsm("il", spu_reg_name[rt], i16);
}
2013-07-04 16:20:36 +02:00
void ILHU(u32 rt, s32 i16)
{
DisAsm("ilhu", spu_reg_name[rt], i16);
}
2013-07-04 16:20:36 +02:00
void ILH(u32 rt, s32 i16)
{
DisAsm("ilh", spu_reg_name[rt], i16);
}
2013-07-04 16:20:36 +02:00
void IOHL(u32 rt, s32 i16)
{
DisAsm("iolh", spu_reg_name[rt], i16);
}
//0 - 7
2013-07-04 16:20:36 +02:00
void ORI(u32 rt, u32 ra, s32 i10)
{
DisAsm("ori", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void ORHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("orhi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void ORBI(u32 rt, u32 ra, s32 i10)
{
DisAsm("orbi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void SFI(u32 rt, u32 ra, s32 i10)
{
DisAsm("sfi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void SFHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("sfhi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void ANDI(u32 rt, u32 ra, s32 i10)
{
DisAsm("andi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void ANDHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("andhi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void ANDBI(u32 rt, u32 ra, s32 i10)
{
DisAsm("andbi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void AI(u32 rt, u32 ra, s32 i10)
{
DisAsm("ai", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void AHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("ahi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void STQD(u32 rt, s32 i10, u32 ra)
{
DisAsm("stqd", spu_reg_name[rt], i10, spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void LQD(u32 rt, s32 i10, u32 ra)
{
DisAsm("lqd", spu_reg_name[rt], i10, spu_reg_name[ra]);
}
2013-07-04 16:20:36 +02:00
void XORI(u32 rt, u32 ra, s32 i10)
{
DisAsm("xori", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void XORHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("xorhi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void XORBI(u32 rt, u32 ra, s32 i10)
{
DisAsm("xorbi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CGTI(u32 rt, u32 ra, s32 i10)
{
DisAsm("cgti", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CGTHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("cgthi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CGTBI(u32 rt, u32 ra, s32 i10)
{
DisAsm("cgtbi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void HGTI(u32 rt, u32 ra, s32 i10)
{
DisAsm("hgti", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CLGTI(u32 rt, u32 ra, s32 i10)
{
DisAsm("clgti", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CLGTHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("clgthi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CLGTBI(u32 rt, u32 ra, s32 i10)
{
DisAsm("clgtbi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void HLGTI(u32 rt, u32 ra, s32 i10)
{
DisAsm("hlgti", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void MPYI(u32 rt, u32 ra, s32 i10)
{
DisAsm("mpyi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void MPYUI(u32 rt, u32 ra, s32 i10)
{
DisAsm("mpyui", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CEQI(u32 rt, u32 ra, s32 i10)
{
DisAsm("ceqi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CEQHI(u32 rt, u32 ra, s32 i10)
{
DisAsm("ceqhi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void CEQBI(u32 rt, u32 ra, s32 i10)
{
DisAsm("ceqbi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
2013-07-04 16:20:36 +02:00
void HEQI(u32 rt, u32 ra, s32 i10)
{
DisAsm("heqi", spu_reg_name[rt], spu_reg_name[ra], i10);
}
//0 - 6
2013-07-04 16:20:36 +02:00
void HBRA(s32 ro, s32 i16)
{
DisAsm("hbra", DisAsmBranchTarget(ro), DisAsmBranchTarget(i16));
}
2013-07-04 16:20:36 +02:00
void HBRR(s32 ro, s32 i16)
{
DisAsm("hbrr", DisAsmBranchTarget(ro), DisAsmBranchTarget(i16));
}
void ILA(u32 rt, u32 i18)
{
DisAsm("ila", spu_reg_name[rt], i18);
}
//0 - 3
2013-07-04 16:20:36 +02:00
void SELB(u32 rc, u32 ra, u32 rb, u32 rt)
{
DisAsm("selb", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void SHUFB(u32 rc, u32 ra, u32 rb, u32 rt)
{
DisAsm("shufb", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void MPYA(u32 rc, u32 ra, u32 rb, u32 rt)
{
DisAsm("mpya", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void FNMS(u32 rc, u32 ra, u32 rb, u32 rt)
{
DisAsm("fnms", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void FMA(u32 rc, u32 ra, u32 rb, u32 rt)
{
DisAsm("fma", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void FMS(u32 rc, u32 ra, u32 rb, u32 rt)
{
DisAsm("fms", spu_reg_name[rc], spu_reg_name[ra], spu_reg_name[rb], spu_reg_name[rt]);
}
2013-07-04 16:20:36 +02:00
void UNK(u32 code, u32 opcode, u32 gcode)
{
2013-07-04 16:20:36 +02:00
Write(wxString::Format("Unknown/Illegal opcode! (0x%08x, 0x%x, 0x%x)", code, opcode, gcode));
}
};