JitArm64: Always lock Q0 in psq_stXX
Q0 is used as a scratch register by EmitBackpatchRoutine.
Fixes a vertex explosion in Spider-Man 2 that was uncovered by 20b2300.
This commit is contained in:
1 parent
c5c4169bc8
commit
2ef2d4778d
1 file changed
+4
-2
@@ -151,8 +151,9 @@ void JitArm64::psq_stXX(UGeckoInstruction inst)
|
||||
const int i = indexed ? inst.Ix : inst.I;
|
||||
const int w = indexed ? inst.Wx : inst.W;
|
||||
|
||||
fpr.Lock(ARM64Reg::Q0);
|
||||
if (!js.assumeNoPairedQuantize)
|
||||
fpr.Lock(ARM64Reg::Q0, ARM64Reg::Q1);
|
||||
fpr.Lock(ARM64Reg::Q1);
|
||||
|
||||
const bool have_single = fpr.IsSingle(inst.RS);
|
||||
|
||||
@@ -259,9 +260,10 @@ void JitArm64::psq_stXX(UGeckoInstruction inst)
|
||||
fpr.Unlock(VS);
|
||||
|
||||
gpr.Unlock(ARM64Reg::W0, ARM64Reg::W1, ARM64Reg::W30);
|
||||
fpr.Unlock(ARM64Reg::Q0);
|
||||
if (!js.assumeNoPairedQuantize)
|
||||
{
|
||||
gpr.Unlock(ARM64Reg::W2);
|
||||
fpr.Unlock(ARM64Reg::Q0, ARM64Reg::Q1);
|
||||
fpr.Unlock(ARM64Reg::Q1);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user