summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2026-01-17 18:21:09 -0500
committerGitHub <noreply@github.com>2026-01-17 18:21:09 -0500
commita5b34d43fc4ef317550cad7fe3f0ebacf7fc0464 (patch)
treec4f7b6ce49edf013d31a94d48476d4f382c7d91c /Source
parent9e8e644fbf1c7b24a8eb1195ae95b66391333ffa (diff)
parentc52dd23c58b8e93a12d6be5c0fe8cc68fc11c026 (diff)
Merge pull request #14215 from Tilka/disasm
GekkoDisassembler: fix multiple issues
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Common/GekkoDisassembler.cpp54
1 files changed, 2 insertions, 52 deletions
diff --git a/Source/Core/Common/GekkoDisassembler.cpp b/Source/Core/Common/GekkoDisassembler.cpp
index 18ed219e64..6dc66a8f1e 100644
--- a/Source/Core/Common/GekkoDisassembler.cpp
+++ b/Source/Core/Common/GekkoDisassembler.cpp
@@ -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;