JIT: Initial FPRF support

Doesn't support all the FPSCR flags, just the FPRF ones.
Add PPCAnalyzer support to remove unnecessary FPRF calculations.

POV-ray benchmark with enableFPRF forced on for an extreme comparison:
Before: 1500s
After, fmul/fmadd only: 728s
After, all float: 753s

In real games that use FPRF, like F-Zero GX, FPRF previously cost a few percent
of total runtime.

Since FPRF is so much faster now, if enableFPRF is set, just do it for every
float instruction, not just fmul/fmadd like before. I don't know if this will
fix any games, but there's little good reason not to.
This commit is contained in:
Fiora
2014-08-20 02:22:07 -07:00
parent f52888d3ec
commit 7dbc623dc0
13 changed files with 222 additions and 91 deletions

View File

@ -383,6 +383,9 @@ union UReg_MSR
UReg_MSR() { Hex = 0; }
};
#define FPRF_SHIFT 12
#define FPRF_MASK (0x1F << FPRF_SHIFT)
// Floating Point Status and Control Register
union UReg_FPSCR
{