From b4137b24031c5f9b58347dca2dbfbcbd3c7b61fd Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Sun, 2 Jun 2019 22:03:26 -0700 Subject: [PATCH] armjit: Fix avoidLoad handling for fpu regs. --- Core/MIPS/ARM/ArmRegCacheFPU.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Core/MIPS/ARM/ArmRegCacheFPU.cpp b/Core/MIPS/ARM/ArmRegCacheFPU.cpp index a664cfa16a..cac7f374b9 100644 --- a/Core/MIPS/ARM/ArmRegCacheFPU.cpp +++ b/Core/MIPS/ARM/ArmRegCacheFPU.cpp @@ -209,8 +209,8 @@ void ArmRegCacheFPU::MapInIn(MIPSReg rd, MIPSReg rs) { void ArmRegCacheFPU::MapDirtyIn(MIPSReg rd, MIPSReg rs, bool avoidLoad) { SpillLock(rd, rs); - bool overlap = avoidLoad && rd == rs; - MapReg(rd, overlap ? MAP_DIRTY : MAP_NOINIT); + bool load = !avoidLoad || rd == rs; + MapReg(rd, load ? MAP_DIRTY : MAP_NOINIT); MapReg(rs); ReleaseSpillLock(rd); ReleaseSpillLock(rs); @@ -218,8 +218,8 @@ void ArmRegCacheFPU::MapDirtyIn(MIPSReg rd, MIPSReg rs, bool avoidLoad) { void ArmRegCacheFPU::MapDirtyInIn(MIPSReg rd, MIPSReg rs, MIPSReg rt, bool avoidLoad) { SpillLock(rd, rs, rt); - bool overlap = avoidLoad && (rd == rs || rd == rt); - MapReg(rd, overlap ? MAP_DIRTY : MAP_NOINIT); + bool load = !avoidLoad || (rd == rs || rd == rt); + MapReg(rd, load ? MAP_DIRTY : MAP_NOINIT); MapReg(rt); MapReg(rs); ReleaseSpillLock(rd); @@ -278,21 +278,21 @@ void ArmRegCacheFPU::MapInInV(int vs, int vt) { } void ArmRegCacheFPU::MapDirtyInV(int vd, int vs, bool avoidLoad) { - bool overlap = avoidLoad && (vd == vs); + bool load = !avoidLoad || (vd == vs); SpillLockV(vd); SpillLockV(vs); - MapRegV(vd, overlap ? MAP_DIRTY : MAP_NOINIT); + MapRegV(vd, load ? MAP_DIRTY : MAP_NOINIT); MapRegV(vs); ReleaseSpillLockV(vd); ReleaseSpillLockV(vs); } void ArmRegCacheFPU::MapDirtyInInV(int vd, int vs, int vt, bool avoidLoad) { - bool overlap = avoidLoad && ((vd == vs) || (vd == vt)); + bool load = !avoidLoad || (vd == vs || vd == vt); SpillLockV(vd); SpillLockV(vs); SpillLockV(vt); - MapRegV(vd, overlap ? MAP_DIRTY : MAP_NOINIT); + MapRegV(vd, load ? MAP_DIRTY : MAP_NOINIT); MapRegV(vs); MapRegV(vt); ReleaseSpillLockV(vd);