mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-10 14:39:01 +01:00
[ARM] Fixes the ps_merge00 and ps_merge10 implementations. They both had the potential to overwrite the source registers in the moves.
This commit is contained in:
parent
749b62fcd9
commit
8882d27689
@ -234,8 +234,9 @@ void JitArm::ps_merge00(UGeckoInstruction inst)
|
|||||||
ARMReg vB0 = fpr.R0(b);
|
ARMReg vB0 = fpr.R0(b);
|
||||||
ARMReg vD0 = fpr.R0(d, false);
|
ARMReg vD0 = fpr.R0(d, false);
|
||||||
ARMReg vD1 = fpr.R1(d, false);
|
ARMReg vD1 = fpr.R1(d, false);
|
||||||
VMOV(vD0, vA0);
|
|
||||||
VMOV(vD1, vB0);
|
VMOV(vD1, vB0);
|
||||||
|
VMOV(vD0, vA0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JitArm::ps_merge01(UGeckoInstruction inst)
|
void JitArm::ps_merge01(UGeckoInstruction inst)
|
||||||
@ -268,8 +269,13 @@ void JitArm::ps_merge10(UGeckoInstruction inst)
|
|||||||
ARMReg vB0 = fpr.R0(b);
|
ARMReg vB0 = fpr.R0(b);
|
||||||
ARMReg vD0 = fpr.R0(d, false);
|
ARMReg vD0 = fpr.R0(d, false);
|
||||||
ARMReg vD1 = fpr.R1(d, false);
|
ARMReg vD1 = fpr.R1(d, false);
|
||||||
|
ARMReg V0 = fpr.GetReg();
|
||||||
|
|
||||||
|
VMOV(V0, vB0);
|
||||||
VMOV(vD0, vA1);
|
VMOV(vD0, vA1);
|
||||||
VMOV(vD1, vB0);
|
VMOV(vD1, V0);
|
||||||
|
|
||||||
|
fpr.Unlock(V0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JitArm::ps_merge11(UGeckoInstruction inst)
|
void JitArm::ps_merge11(UGeckoInstruction inst)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user