Merge pull request #14215 from Tilka/disasm

GekkoDisassembler: fix multiple issues
This commit is contained in:
JMC47 2026-01-17 18:21:09 -05:00 committed by GitHub
commit a5b34d43fc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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;