Revert "JitArm64: Indexed paired loadstores workaround, attempt 2"

This reverts commit 3071a1d13b.
This commit is contained in:
JosJuice 2021-08-30 17:04:09 +02:00
parent 743de44f03
commit 23f6fdebcb
1 changed files with 8 additions and 10 deletions

View File

@ -39,7 +39,6 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
gpr.Lock(ARM64Reg::W0, ARM64Reg::W1, ARM64Reg::W2, ARM64Reg::W30); gpr.Lock(ARM64Reg::W0, ARM64Reg::W1, ARM64Reg::W2, ARM64Reg::W30);
fpr.Lock(ARM64Reg::Q0, ARM64Reg::Q1); fpr.Lock(ARM64Reg::Q0, ARM64Reg::Q1);
const ARM64Reg arm_addr = gpr.R(inst.RA);
constexpr ARM64Reg scale_reg = ARM64Reg::W0; constexpr ARM64Reg scale_reg = ARM64Reg::W0;
constexpr ARM64Reg addr_reg = ARM64Reg::W1; constexpr ARM64Reg addr_reg = ARM64Reg::W1;
constexpr ARM64Reg type_reg = ARM64Reg::W2; constexpr ARM64Reg type_reg = ARM64Reg::W2;
@ -48,11 +47,11 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
if (inst.RA || update) // Always uses the register on update if (inst.RA || update) // Always uses the register on update
{ {
if (indexed) if (indexed)
ADD(addr_reg, arm_addr, gpr.R(inst.RB)); ADD(addr_reg, gpr.R(inst.RA), gpr.R(inst.RB));
else if (offset >= 0) else if (offset >= 0)
ADD(addr_reg, arm_addr, offset); ADD(addr_reg, gpr.R(inst.RA), offset);
else else
SUB(addr_reg, arm_addr, std::abs(offset)); SUB(addr_reg, gpr.R(inst.RA), std::abs(offset));
} }
else else
{ {
@ -65,7 +64,7 @@ void JitArm64::psq_lXX(UGeckoInstruction inst)
if (update) if (update)
{ {
gpr.BindToRegister(inst.RA, false); gpr.BindToRegister(inst.RA, false);
MOV(arm_addr, addr_reg); MOV(gpr.R(inst.RA), addr_reg);
} }
if (js.assumeNoPairedQuantize) if (js.assumeNoPairedQuantize)
@ -163,7 +162,6 @@ void JitArm64::psq_stXX(UGeckoInstruction inst)
gpr.Lock(ARM64Reg::W0, ARM64Reg::W1, ARM64Reg::W2, ARM64Reg::W30); gpr.Lock(ARM64Reg::W0, ARM64Reg::W1, ARM64Reg::W2, ARM64Reg::W30);
const ARM64Reg arm_addr = gpr.R(inst.RA);
constexpr ARM64Reg scale_reg = ARM64Reg::W0; constexpr ARM64Reg scale_reg = ARM64Reg::W0;
constexpr ARM64Reg addr_reg = ARM64Reg::W1; constexpr ARM64Reg addr_reg = ARM64Reg::W1;
constexpr ARM64Reg type_reg = ARM64Reg::W2; constexpr ARM64Reg type_reg = ARM64Reg::W2;
@ -171,11 +169,11 @@ void JitArm64::psq_stXX(UGeckoInstruction inst)
if (inst.RA || update) // Always uses the register on update if (inst.RA || update) // Always uses the register on update
{ {
if (indexed) if (indexed)
ADD(addr_reg, arm_addr, gpr.R(inst.RB)); ADD(addr_reg, gpr.R(inst.RA), gpr.R(inst.RB));
else if (offset >= 0) else if (offset >= 0)
ADD(addr_reg, arm_addr, offset); ADD(addr_reg, gpr.R(inst.RA), offset);
else else
SUB(addr_reg, arm_addr, std::abs(offset)); SUB(addr_reg, gpr.R(inst.RA), std::abs(offset));
} }
else else
{ {
@ -188,7 +186,7 @@ void JitArm64::psq_stXX(UGeckoInstruction inst)
if (update) if (update)
{ {
gpr.BindToRegister(inst.RA, false); gpr.BindToRegister(inst.RA, false);
MOV(arm_addr, addr_reg); MOV(gpr.R(inst.RA), addr_reg);
} }
BitSet32 gprs_in_use = gpr.GetCallerSavedUsed(); BitSet32 gprs_in_use = gpr.GetCallerSavedUsed();