[AArch64] Don't flush VFP register to stack when not needed.

This commit is contained in:
Ryan Houdek 2015-01-29 01:52:15 -06:00
parent c8c062fa96
commit 235f6c2445
1 changed files with 2 additions and 3 deletions

View File

@ -176,11 +176,10 @@ void JitArm64::lfXX(UGeckoInstruction inst)
BitSet32 regs_in_use = gpr.GetCallerSavedUsed(); BitSet32 regs_in_use = gpr.GetCallerSavedUsed();
BitSet32 fprs_in_use = fpr.GetCallerSavedUsed(); BitSet32 fprs_in_use = fpr.GetCallerSavedUsed();
BitSet32 fpr_ignore_mask(0);
regs_in_use[W0] = 0; regs_in_use[W0] = 0;
regs_in_use[W30] = 0; regs_in_use[W30] = 0;
fprs_in_use[0] = 0; // Q0 fprs_in_use[0] = 0; // Q0
fpr_ignore_mask[VD - Q0] = 1; fprs_in_use[VD - Q0] = 0;
if (is_immediate && Memory::IsRAMAddress(imm_addr)) if (is_immediate && Memory::IsRAMAddress(imm_addr))
{ {
@ -196,7 +195,7 @@ void JitArm64::lfXX(UGeckoInstruction inst)
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem, SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem, SConfig::GetInstance().m_LocalCoreStartupParameter.bFastmem,
VD, XA); VD, XA);
m_float_emit.ABI_PopRegisters(fprs_in_use, fpr_ignore_mask); m_float_emit.ABI_PopRegisters(fprs_in_use);
ABI_PopRegisters(regs_in_use); ABI_PopRegisters(regs_in_use);
} }