diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp index b69ca1a908..bcb9a29b07 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.cpp @@ -188,7 +188,7 @@ void Jit64::Init() jo.enableFastMem = false; #endif jo.assumeFPLoadFromMem = true; - jo.fpAccurateFlags = true; + jo.fpAccurateFcmp = false; jo.optimizeGatherPipe = true; jo.fastInterrupts = false; jo.accurateSinglePrecision = false; diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.h b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.h index e5c16bf1bc..ead60c1673 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.h +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit.h @@ -119,7 +119,7 @@ private: bool optimizeStack; bool assumeFPLoadFromMem; bool enableBlocklink; - bool fpAccurateFlags; + bool fpAccurateFcmp; bool enableFastMem; bool optimizeGatherPipe; bool fastInterrupts; @@ -269,6 +269,7 @@ public: void psq_st(UGeckoInstruction inst); void fmaddXX(UGeckoInstruction inst); + void fsign(UGeckoInstruction inst); void stX(UGeckoInstruction inst); //stw sth stb void lXz(UGeckoInstruction inst); void lha(UGeckoInstruction inst); diff --git a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit_FloatingPoint.cpp b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit_FloatingPoint.cpp index d69f65dfa5..881d4f303c 100644 --- a/Source/Core/Core/Src/PowerPC/Jit64IL/Jit_FloatingPoint.cpp +++ b/Source/Core/Core/Src/PowerPC/Jit64IL/Jit_FloatingPoint.cpp @@ -114,3 +114,24 @@ void Jit64::fcmpx(UGeckoInstruction inst) ibuild.EmitStoreFPRF(res); ibuild.EmitStoreCR(res, inst.CRFD); } + +void Jit64::fsign(UGeckoInstruction inst) +{ + INSTRUCTION_START + JITDISABLE(FloatingPoint) + Default(inst); + return; + + // TODO + switch (inst.SUBOP10) { + case 40: // fnegx + break; + case 264: // fabsx + break; + case 136: // fnabs + break; + default: + PanicAlert("fsign bleh"); + break; + } +} \ No newline at end of file