[AArch64] Implement frspx

Improves performance in povray bench by 2%
This commit is contained in:
Ryan Houdek 2015-08-22 00:35:30 -05:00
parent c325c310d6
commit ce32b76be3
3 changed files with 18 additions and 1 deletions

View File

@ -145,6 +145,7 @@ public:
void fsubsx(UGeckoInstruction inst); void fsubsx(UGeckoInstruction inst);
void fsubx(UGeckoInstruction inst); void fsubx(UGeckoInstruction inst);
void fcmpx(UGeckoInstruction inst); void fcmpx(UGeckoInstruction inst);
void frspx(UGeckoInstruction inst);
// Paired // Paired
void ps_abs(UGeckoInstruction inst); void ps_abs(UGeckoInstruction inst);

View File

@ -458,6 +458,22 @@ void JitArm64::fsubx(UGeckoInstruction inst)
} }
} }
void JitArm64::frspx(UGeckoInstruction inst)
{
INSTRUCTION_START
JITDISABLE(bJITFloatingPointOff);
u32 b = inst.FB, d = inst.FD;
fpr.BindToRegister(d, d == b, false);
ARM64Reg VB = fpr.R(b);
ARM64Reg VD = fpr.R(d, false);
m_float_emit.FCVTN(32, EncodeRegToDouble(VD), EncodeRegToDouble(VB));
m_float_emit.FCVTL(64, EncodeRegToDouble(VD), EncodeRegToDouble(VD));
m_float_emit.INS(64, VD, 1, VD, 0);
}
void JitArm64::fcmpx(UGeckoInstruction inst) void JitArm64::fcmpx(UGeckoInstruction inst)
{ {
INSTRUCTION_START INSTRUCTION_START

View File

@ -334,7 +334,7 @@ static GekkoOPTemplate table63[] =
{72, &JitArm64::fmrx}, // fmrx {72, &JitArm64::fmrx}, // fmrx
{136, &JitArm64::fnabsx}, // fnabsx {136, &JitArm64::fnabsx}, // fnabsx
{40, &JitArm64::fnegx}, // fnegx {40, &JitArm64::fnegx}, // fnegx
{12, &JitArm64::FallBackToInterpreter}, // frspx {12, &JitArm64::frspx}, // frspx
{64, &JitArm64::FallBackToInterpreter}, // mcrfs {64, &JitArm64::FallBackToInterpreter}, // mcrfs
{583, &JitArm64::FallBackToInterpreter}, // mffsx {583, &JitArm64::FallBackToInterpreter}, // mffsx