diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter.h b/Source/Core/Core/PowerPC/Interpreter/Interpreter.h index 2f3ea38452..b49f3664b9 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter.h +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter.h @@ -53,7 +53,6 @@ public: static void fnmaddsx(UGeckoInstruction _inst); static void fnmsubsx(UGeckoInstruction _inst); static void fresx(UGeckoInstruction _inst); - //static void fsqrtsx(UGeckoInstruction _inst); static void fsubsx(UGeckoInstruction _inst); static void fabsx(UGeckoInstruction _inst); static void fcmpo(UGeckoInstruction _inst); @@ -73,7 +72,6 @@ public: static void fnmsubx(UGeckoInstruction _inst); static void frsqrtex(UGeckoInstruction _inst); static void fselx(UGeckoInstruction _inst); - static void fsqrtx(UGeckoInstruction _inst); static void fsubx(UGeckoInstruction _inst); // Integer Instructions @@ -199,7 +197,6 @@ public: static void stwcxd(UGeckoInstruction _inst); static void stwux(UGeckoInstruction _inst); static void stwx(UGeckoInstruction _inst); - static void tlbia(UGeckoInstruction _inst); static void tlbie(UGeckoInstruction _inst); static void tlbsync(UGeckoInstruction _inst); diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Branch.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Branch.cpp index d642ad897c..8726da7320 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Branch.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Branch.cpp @@ -131,12 +131,6 @@ void Interpreter::rfi(UGeckoInstruction _inst) m_EndBlock = true; } -void Interpreter::rfid(UGeckoInstruction _inst) -{ - _dbg_assert_msg_(POWERPC, 0, "rfid instruction unimplemented (does this instruction even exist?)"); - m_EndBlock = true; -} - // sc isn't really used for anything important in GameCube games (just for a write barrier) so we really don't have to emulate it. // We do it anyway, though :P void Interpreter::sc(UGeckoInstruction _inst) diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp index 8b5715a70b..758718b3a1 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_FloatingPoint.cpp @@ -482,21 +482,3 @@ void Interpreter::fsubsx(UGeckoInstruction _inst) if (_inst.Rc) Helper_UpdateCR1(); } - -void Interpreter::fsqrtx(UGeckoInstruction _inst) -{ - // GEKKO is not supposed to support this instruction. - // PanicAlert("fsqrtx"); - double b = rPS0(_inst.FB); - - if (b < 0.0) - { - FPSCR.VXSQRT = 1; - } - - rPS0(_inst.FD) = sqrt(b); - UpdateFPRF(rPS0(_inst.FD)); - - if (_inst.Rc) - Helper_UpdateCR1(); -} diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_LoadStore.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_LoadStore.cpp index 97e91af795..2bd39cafec 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_LoadStore.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_LoadStore.cpp @@ -816,14 +816,6 @@ void Interpreter::sync(UGeckoInstruction _inst) //ignored } -void Interpreter::tlbia(UGeckoInstruction _inst) -{ - // Gekko does not support this instructions. - PanicAlert("The GameCube CPU does not support tlbia"); - // invalid the whole TLB - //MessageBox(0,"TLBIA","TLBIA",0); -} - void Interpreter::tlbie(UGeckoInstruction _inst) { // Invalidate TLB entry diff --git a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp index 7ce41cdf32..9135e5915b 100644 --- a/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp +++ b/Source/Core/Core/PowerPC/Interpreter/Interpreter_Tables.cpp @@ -152,7 +152,6 @@ static GekkoOPTemplate table19[] = {0, Interpreter::mcrf, {"mcrf", OPTYPE_SYSTEM, FL_EVIL | FL_SET_CRn, 1, 0, 0, 0}}, {50, Interpreter::rfi, {"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 2, 0, 0, 0}}, - {18, Interpreter::rfid, {"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1, 0, 0, 0}} }; @@ -296,7 +295,6 @@ static GekkoOPTemplate table31[] = {438, Interpreter::ecowx, {"ecowx", OPTYPE_SYSTEM, FL_IN_A0B | FL_IN_S | FL_LOADSTORE, 1, 0, 0, 0}}, {854, Interpreter::eieio, {"eieio", OPTYPE_SYSTEM, 0, 1, 0, 0, 0}}, {306, Interpreter::tlbie, {"tlbie", OPTYPE_SYSTEM, FL_IN_B, 1, 0, 0, 0}}, - {370, Interpreter::tlbia, {"tlbia", OPTYPE_SYSTEM, 0, 1, 0, 0, 0}}, {566, Interpreter::tlbsync, {"tlbsync", OPTYPE_SYSTEM, 0, 1, 0, 0, 0}}, }; @@ -305,7 +303,6 @@ static GekkoOPTemplate table59[] = {18, Interpreter::fdivsx, {"fdivsx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_AB | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 17, 0, 0, 0}}, // TODO {20, Interpreter::fsubsx, {"fsubsx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_AB | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, {21, Interpreter::faddsx, {"faddsx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_AB | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, - //{22, Interpreter::fsqrtsx, {"fsqrtsx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_B | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, // Not implemented on gekko {24, Interpreter::fresx, {"fresx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_B | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, {25, Interpreter::fmulsx, {"fmulsx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_AC | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, {28, Interpreter::fmsubsx, {"fmsubsx", OPTYPE_SINGLEFP, FL_OUT_FLOAT_D | FL_IN_FLOAT_ABC | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, @@ -345,7 +342,6 @@ static GekkoOPTemplate table63_2[] = {18, Interpreter::fdivx, {"fdivx", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_AB | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 31, 0, 0, 0}}, {20, Interpreter::fsubx, {"fsubx", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_AB | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, {21, Interpreter::faddx, {"faddx", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_AB | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, - {22, Interpreter::fsqrtx, {"fsqrtx", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_B | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, {23, Interpreter::fselx, {"fselx", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_ABC | FL_RC_BIT_F | FL_USE_FPU, 1, 0, 0, 0}}, {25, Interpreter::fmulx, {"fmulx", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_AC | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, {26, Interpreter::frsqrtex, {"frsqrtex", OPTYPE_DOUBLEFP, FL_INOUT_FLOAT_D | FL_IN_FLOAT_B | FL_RC_BIT_F | FL_USE_FPU | FL_SET_FPRF, 1, 0, 0, 0}}, diff --git a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp index 7f6f97a619..b8af4f19cc 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit64_Tables.cpp @@ -163,7 +163,6 @@ static GekkoOPTemplate table19[] = {0, &Jit64::mcrf}, // mcrf {50, &Jit64::rfi}, // rfi - {18, &Jit64::FallBackToInterpreter}, // rfid }; @@ -307,7 +306,6 @@ static GekkoOPTemplate table31[] = {438, &Jit64::FallBackToInterpreter}, // ecowx {854, &Jit64::DoNothing}, // eieio {306, &Jit64::FallBackToInterpreter}, // tlbie - {370, &Jit64::FallBackToInterpreter}, // tlbia {566, &Jit64::DoNothing}, // tlbsync }; @@ -316,7 +314,6 @@ static GekkoOPTemplate table59[] = {18, &Jit64::fp_arith}, // fdivsx {20, &Jit64::fp_arith}, // fsubsx {21, &Jit64::fp_arith}, // faddsx -// {22, &Jit64::FallBackToInterpreter}, // fsqrtsx {24, &Jit64::fresx}, // fresx {25, &Jit64::fp_arith}, // fmulsx {28, &Jit64::fmaddXX}, // fmsubsx @@ -350,7 +347,6 @@ static GekkoOPTemplate table63_2[] = {18, &Jit64::fp_arith}, // fdivx {20, &Jit64::fp_arith}, // fsubx {21, &Jit64::fp_arith}, // faddx - {22, &Jit64::FallBackToInterpreter}, // fsqrtx {23, &Jit64::fselx}, // fselx {25, &Jit64::fp_arith}, // fmulx {26, &Jit64::frsqrtex}, // frsqrtex diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp index dc7cd2e5f2..8333f3f9dc 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL_Tables.cpp @@ -164,7 +164,6 @@ static GekkoOPTemplate table19[] = {0, &JitIL::mcrf}, //"mcrf", OPTYPE_SYSTEM, FL_EVIL}}, {50, &JitIL::rfi}, //"rfi", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS, 1}}, - {18, &JitIL::FallBackToInterpreter}, //"rfid", OPTYPE_SYSTEM, FL_ENDBLOCK | FL_CHECKEXCEPTIONS}} }; @@ -308,7 +307,6 @@ static GekkoOPTemplate table31[] = {438, &JitIL::FallBackToInterpreter}, //"ecowx", OPTYPE_INTEGER, FL_RC_BIT}}, {854, &JitIL::DoNothing}, //"eieio", OPTYPE_INTEGER, FL_RC_BIT}}, {306, &JitIL::FallBackToInterpreter}, //"tlbie", OPTYPE_SYSTEM, 0}}, - {370, &JitIL::FallBackToInterpreter}, //"tlbia", OPTYPE_SYSTEM, 0}}, {566, &JitIL::DoNothing}, //"tlbsync", OPTYPE_SYSTEM, 0}}, }; @@ -317,7 +315,6 @@ static GekkoOPTemplate table59[] = {18, &JitIL::FallBackToInterpreter}, //{"fdivsx", OPTYPE_FPU, FL_RC_BIT_F, 16}}, {20, &JitIL::fp_arith_s}, //"fsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, {21, &JitIL::fp_arith_s}, //"faddsx", OPTYPE_FPU, FL_RC_BIT_F}}, -// {22, &JitIL::FallBackToInterpreter}, //"fsqrtsx", OPTYPE_FPU, FL_RC_BIT_F}}, // Not implemented on gekko {24, &JitIL::FallBackToInterpreter}, //"fresx", OPTYPE_FPU, FL_RC_BIT_F}}, {25, &JitIL::fp_arith_s}, //"fmulsx", OPTYPE_FPU, FL_RC_BIT_F}}, {28, &JitIL::fmaddXX}, //"fmsubsx", OPTYPE_FPU, FL_RC_BIT_F}}, @@ -351,7 +348,6 @@ static GekkoOPTemplate table63_2[] = {18, &JitIL::FallBackToInterpreter}, //"fdivx", OPTYPE_FPU, FL_RC_BIT_F, 30}}, {20, &JitIL::FallBackToInterpreter}, //"fsubx", OPTYPE_FPU, FL_RC_BIT_F}}, {21, &JitIL::FallBackToInterpreter}, //"faddx", OPTYPE_FPU, FL_RC_BIT_F}}, - {22, &JitIL::FallBackToInterpreter}, //"fsqrtx", OPTYPE_FPU, FL_RC_BIT_F}}, {23, &JitIL::FallBackToInterpreter}, //"fselx", OPTYPE_FPU, FL_RC_BIT_F}}, {25, &JitIL::fp_arith_s}, //"fmulx", OPTYPE_FPU, FL_RC_BIT_F}}, {26, &JitIL::FallBackToInterpreter}, //"frsqrtex", OPTYPE_FPU, FL_RC_BIT_F}}, diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp index f3d36791fa..5bb75736ac 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Tables.cpp @@ -165,7 +165,6 @@ static GekkoOPTemplate table19[] = {0, &JitArm64::mcrf}, // mcrf {50, &JitArm64::rfi}, // rfi - {18, &JitArm64::Break}, // rfid }; @@ -309,7 +308,6 @@ static GekkoOPTemplate table31[] = {438, &JitArm64::FallBackToInterpreter}, // ecowx {854, &JitArm64::DoNothing}, // eieio {306, &JitArm64::FallBackToInterpreter}, // tlbie - {370, &JitArm64::FallBackToInterpreter}, // tlbia {566, &JitArm64::DoNothing}, // tlbsync }; @@ -318,7 +316,6 @@ static GekkoOPTemplate table59[] = {18, &JitArm64::FallBackToInterpreter}, // fdivsx {20, &JitArm64::fsubsx}, // fsubsx {21, &JitArm64::faddsx}, // faddsx -// {22, &JitArm64::FallBackToInterpreter}, // fsqrtsx {24, &JitArm64::FallBackToInterpreter}, // fresx {25, &JitArm64::fmulsx}, // fmulsx {28, &JitArm64::fmsubsx}, // fmsubsx @@ -352,7 +349,6 @@ static GekkoOPTemplate table63_2[] = {18, &JitArm64::FallBackToInterpreter}, // fdivx {20, &JitArm64::fsubx}, // fsubx {21, &JitArm64::faddx}, // faddx - {22, &JitArm64::FallBackToInterpreter}, // fsqrtx {23, &JitArm64::fselx}, // fselx {25, &JitArm64::fmulx}, // fmulx {26, &JitArm64::FallBackToInterpreter}, // frsqrtex