mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2026-02-01 12:03:15 +00:00
Merge pull request #14215 from Tilka/disasm
GekkoDisassembler: fix multiple issues
This commit is contained in:
commit
a5b34d43fc
@ -493,7 +493,7 @@ void GekkoDisassembler::trapi(u32 in, unsigned char dmode)
|
||||
|
||||
if (cnd != nullptr)
|
||||
{
|
||||
m_opcode = fmt::format("t{}{}", dmode ? 'd' : 'w', cnd);
|
||||
m_opcode = fmt::format("t{}{}i", dmode ? 'd' : 'w', cnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -918,16 +918,6 @@ void GekkoDisassembler::mtb(u32 in)
|
||||
}
|
||||
}
|
||||
|
||||
void GekkoDisassembler::sradi(u32 in)
|
||||
{
|
||||
int s = (int)PPCGETD(in);
|
||||
int a = (int)PPCGETA(in);
|
||||
int bsh = (int)(((in & 2) << 4) + PPCGETB(in));
|
||||
|
||||
m_opcode = fmt::format("sradi{}", (in & 1) ? "." : "");
|
||||
m_operands = fmt::format("{}, {}, {}", regnames[a], regnames[s], bsh);
|
||||
}
|
||||
|
||||
void GekkoDisassembler::ldst(u32 in, std::string_view name, char reg)
|
||||
{
|
||||
int s = (int)PPCGETD(in);
|
||||
@ -1094,7 +1084,7 @@ void GekkoDisassembler::ps(u32 inst)
|
||||
|
||||
case 23:
|
||||
m_opcode = "ps_sel";
|
||||
m_operands = fmt::format("p{}>=0?p{}:p{}", FD, FA, FC);
|
||||
m_operands = fmt::format("p{}, p{}>=0?p{}:p{}", FD, FA, FC, FB);
|
||||
return;
|
||||
|
||||
case 24:
|
||||
@ -1443,30 +1433,6 @@ u32* GekkoDisassembler::DoDisassembly(bool big_endian)
|
||||
ori(in, "andis.");
|
||||
break;
|
||||
|
||||
case 30:
|
||||
switch ((in >> 2) & 0x7)
|
||||
{
|
||||
case 0:
|
||||
rld(in, "icl", 0); // rldicl
|
||||
break;
|
||||
case 1:
|
||||
rld(in, "icr", 0); // rldicr
|
||||
break;
|
||||
case 2:
|
||||
rld(in, "ic", 0); // rldic
|
||||
break;
|
||||
case 3:
|
||||
rld(in, "imi", 0); // rldimi
|
||||
break;
|
||||
case 4:
|
||||
rld(in, in & 2 ? "cl" : "cr", 1); // rldcl, rldcr
|
||||
break;
|
||||
default:
|
||||
ill(in);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
case 31:
|
||||
switch (PPCGETIDX2(in))
|
||||
{
|
||||
@ -1813,10 +1779,6 @@ u32* GekkoDisassembler::DoDisassembly(bool big_endian)
|
||||
dab(in, "orc", 7, 1, 0, -1);
|
||||
break;
|
||||
|
||||
case 413:
|
||||
sradi(in); // sradi
|
||||
break;
|
||||
|
||||
case 434:
|
||||
if (in & (PPCDMASK | PPCAMASK))
|
||||
ill(in);
|
||||
@ -2291,18 +2253,6 @@ u32* GekkoDisassembler::DoDisassembly(bool big_endian)
|
||||
}
|
||||
break;
|
||||
|
||||
case 814:
|
||||
fdabc(in, "fctid", 9);
|
||||
break;
|
||||
|
||||
case 815:
|
||||
fdabc(in, "fctidz", 9);
|
||||
break;
|
||||
|
||||
case 846:
|
||||
fdabc(in, "fcfid", 9);
|
||||
break;
|
||||
|
||||
default:
|
||||
ill(in);
|
||||
break;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user