mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-08 15:20:45 +01:00
JitArm64: Skip locking Q0 for most FPR loads
Normal float loads never use Q0, and paired float loads can skip using Q0 in the simplest case.
This commit is contained in:
parent
5f7e9d3bf1
commit
5a09a432fd
@ -78,7 +78,6 @@ void JitArm64::lfXX(UGeckoInstruction inst)
|
||||
(flags & BackPatchInfo::FLAG_SIZE_64) != 0 ? RegType::LowerPair : RegType::DuplicatedSingle;
|
||||
|
||||
gpr.Lock(ARM64Reg::W1, ARM64Reg::W30);
|
||||
fpr.Lock(ARM64Reg::Q0);
|
||||
if (jo.memcheck || !jo.fastmem)
|
||||
gpr.Lock(ARM64Reg::W0);
|
||||
|
||||
@ -170,7 +169,6 @@ void JitArm64::lfXX(UGeckoInstruction inst)
|
||||
regs_in_use[DecodeReg(ARM64Reg::W1)] = 0;
|
||||
if (jo.memcheck || !jo.fastmem)
|
||||
regs_in_use[DecodeReg(ARM64Reg::W0)] = 0;
|
||||
fprs_in_use[DecodeReg(ARM64Reg::Q0)] = 0;
|
||||
if (!jo.memcheck)
|
||||
fprs_in_use[DecodeReg(VD)] = 0;
|
||||
|
||||
@ -193,7 +191,6 @@ void JitArm64::lfXX(UGeckoInstruction inst)
|
||||
}
|
||||
|
||||
gpr.Unlock(ARM64Reg::W1, ARM64Reg::W30);
|
||||
fpr.Unlock(ARM64Reg::Q0);
|
||||
if (jo.memcheck || !jo.fastmem)
|
||||
gpr.Unlock(ARM64Reg::W0);
|
||||
}
|
||||
|
@ -38,7 +38,6 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
|
||||
const int w = indexed ? inst.Wx : inst.W;
|
||||
|
||||
gpr.Lock(ARM64Reg::W1, ARM64Reg::W30);
|
||||
fpr.Lock(ARM64Reg::Q0);
|
||||
if (!js.assumeNoPairedQuantize)
|
||||
{
|
||||
gpr.Lock(ARM64Reg::W0, ARM64Reg::W2, ARM64Reg::W3);
|
||||
@ -48,6 +47,8 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
|
||||
{
|
||||
gpr.Lock(ARM64Reg::W0);
|
||||
}
|
||||
if (!js.assumeNoPairedQuantize || w)
|
||||
fpr.Lock(ARM64Reg::Q0);
|
||||
|
||||
constexpr ARM64Reg type_reg = ARM64Reg::W0;
|
||||
constexpr ARM64Reg addr_reg = ARM64Reg::W1;
|
||||
@ -88,7 +89,6 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
|
||||
gprs_in_use[DecodeReg(ARM64Reg::W1)] = false;
|
||||
if (jo.memcheck || !jo.fastmem)
|
||||
gprs_in_use[DecodeReg(ARM64Reg::W0)] = false;
|
||||
fprs_in_use[DecodeReg(ARM64Reg::Q0)] = false;
|
||||
if (!jo.memcheck)
|
||||
fprs_in_use[DecodeReg(VS)] = 0;
|
||||
|
||||
@ -135,7 +135,6 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
|
||||
}
|
||||
|
||||
gpr.Unlock(ARM64Reg::W1, ARM64Reg::W30);
|
||||
fpr.Unlock(ARM64Reg::Q0);
|
||||
if (!js.assumeNoPairedQuantize)
|
||||
{
|
||||
gpr.Unlock(ARM64Reg::W0, ARM64Reg::W2, ARM64Reg::W3);
|
||||
@ -145,6 +144,8 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
|
||||
{
|
||||
gpr.Unlock(ARM64Reg::W0);
|
||||
}
|
||||
if (!js.assumeNoPairedQuantize || w)
|
||||
fpr.Unlock(ARM64Reg::Q0);
|
||||
}
|
||||
|
||||
void JitArm64::psq_stXX(UGeckoInstruction inst)
|
||||
|
Loading…
Reference in New Issue
Block a user