Merge pull request #11424 from Pokechu22/jit-imm-loadstore-update

Jit64: Attempt to fix updating stores with an immediate value
This commit is contained in:
JMC47 2023-06-15 11:32:30 -04:00 committed by GitHub
commit f0f8225ff8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 5 deletions

View File

@ -507,7 +507,7 @@ void Jit64::stX(UGeckoInstruction inst)
}
else
{
RCOpArg Ra = gpr.UseNoImm(a, RCMode::Write);
RCOpArg Ra = gpr.RevertableBind(a, RCMode::Write);
RegCache::Realize(Ra);
MemoryExceptionCheck();
MOV(32, Ra, Imm32(addr));

View File

@ -22,7 +22,7 @@ void Jit64::lfXXX(UGeckoInstruction inst)
bool indexed = inst.OPCD == 31;
bool update = indexed ? !!(inst.SUBOP10 & 0x20) : !!(inst.OPCD & 1);
bool single = indexed ? !(inst.SUBOP10 & 0x40) : !(inst.OPCD & 2);
update &= indexed || inst.SIMM_16;
update &= indexed || (inst.SIMM_16 != 0);
int d = inst.RD;
int a = inst.RA;
@ -93,7 +93,7 @@ void Jit64::stfXXX(UGeckoInstruction inst)
bool indexed = inst.OPCD == 31;
bool update = indexed ? !!(inst.SUBOP10 & 0x20) : !!(inst.OPCD & 1);
bool single = indexed ? !(inst.SUBOP10 & 0x40) : !(inst.OPCD & 2);
update &= indexed || inst.SIMM_16;
update &= indexed || (inst.SIMM_16 != 0);
int s = inst.RS;
int a = inst.RA;
@ -101,7 +101,7 @@ void Jit64::stfXXX(UGeckoInstruction inst)
s32 imm = (s16)inst.SIMM_16;
int accessSize = single ? 32 : 64;
FALLBACK_IF(update && jo.memcheck && a == b);
FALLBACK_IF(update && jo.memcheck && indexed && a == b);
if (single)
{
@ -144,7 +144,7 @@ void Jit64::stfXXX(UGeckoInstruction inst)
}
else
{
RCOpArg Ra = gpr.UseNoImm(a, RCMode::Write);
RCOpArg Ra = gpr.RevertableBind(a, RCMode::Write);
RegCache::Realize(Ra);
MemoryExceptionCheck();
MOV(32, Ra, Imm32(addr));