Refactor the paired load/store code

Simplification/reduction of duplicated code. Detect other constant GQR values and inline loads (5-10% speedup) and do direct dispatch to AOT methods for stores.
This commit is contained in:
Matt Mastracci
2016-02-28 14:33:53 -07:00
parent 6b01eca3a0
commit 4aa5291f54
6 changed files with 525 additions and 461 deletions

View File

@ -8,6 +8,7 @@
//#define JIT_LOG_GPR // Enables logging of the PPC general purpose regs
//#define JIT_LOG_FPR // Enables logging of the PPC floating point regs
#include <map>
#include <unordered_set>
#include "Common/CommonTypes.h"
@ -88,6 +89,7 @@ protected:
int revertFprLoad;
bool assumeNoPairedQuantize;
std::map<u8, u32> constantGqr;
bool firstFPInstructionFound;
bool isLastInstruction;
int skipInstructions;
@ -130,7 +132,7 @@ public:
virtual bool HandleStackFault() { return false; }
};
class Jitx86Base : public JitBase, public EmuCodeBlock
class Jitx86Base : public JitBase, public QuantizedMemoryRoutines
{
protected:
bool BackPatch(u32 emAddress, SContext* ctx);