Jit_Integer: DoMergedBranchCondition
This commit is contained in:
parent
0d3393b306
commit
256e234949
|
@ -448,8 +448,8 @@ void Jit64::DoMergedBranchCondition()
|
||||||
bool condition = !!(next.BO & BO_BRANCH_IF_TRUE);
|
bool condition = !!(next.BO & BO_BRANCH_IF_TRUE);
|
||||||
const u32 nextPC = js.op[1].address;
|
const u32 nextPC = js.op[1].address;
|
||||||
|
|
||||||
gpr.UnlockAll();
|
ASSERT(gpr.IsAllUnlocked());
|
||||||
gpr.UnlockAllX();
|
|
||||||
FixupBranch pDontBranch;
|
FixupBranch pDontBranch;
|
||||||
if (test_bit & 8)
|
if (test_bit & 8)
|
||||||
pDontBranch = J_CC(condition ? CC_GE : CC_L, true); // Test < 0, so jump over if >= 0.
|
pDontBranch = J_CC(condition ? CC_GE : CC_L, true); // Test < 0, so jump over if >= 0.
|
||||||
|
@ -460,10 +460,15 @@ void Jit64::DoMergedBranchCondition()
|
||||||
else // SO bit, do not branch (we don't emulate SO for cmp).
|
else // SO bit, do not branch (we don't emulate SO for cmp).
|
||||||
pDontBranch = J(true);
|
pDontBranch = J(true);
|
||||||
|
|
||||||
gpr.Flush(RegCache::FlushMode::MaintainState);
|
{
|
||||||
fpr.Flush(RegCache::FlushMode::MaintainState);
|
RCForkGuard gpr_guard = gpr.Fork();
|
||||||
|
RCForkGuard fpr_guard = fpr.Fork();
|
||||||
|
|
||||||
|
gpr.Flush();
|
||||||
|
fpr.Flush();
|
||||||
|
|
||||||
DoMergedBranch();
|
DoMergedBranch();
|
||||||
|
}
|
||||||
|
|
||||||
SetJumpTarget(pDontBranch);
|
SetJumpTarget(pDontBranch);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue