Jit: Skip redundant flushes
This makes codegen faster (by perhaps 10-20% in the case of Jit64, I didn't measure too closely), which helps speed up NBA Live 2005 a little. But the game still has serious performance issues.
This commit is contained in:
parent
86dbf768b9
commit
fd511a689f
|
@ -1184,8 +1184,8 @@ bool Jit64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
|
||||||
gpr.Discard(op.gprDiscardable);
|
gpr.Discard(op.gprDiscardable);
|
||||||
fpr.Discard(op.fprDiscardable);
|
fpr.Discard(op.fprDiscardable);
|
||||||
}
|
}
|
||||||
gpr.Flush(~op.gprInUse);
|
gpr.Flush(~op.gprInUse & (op.regsIn | op.regsOut));
|
||||||
fpr.Flush(~op.fprInUse);
|
fpr.Flush(~op.fprInUse & (op.fregsIn | op.GetFregsOut()));
|
||||||
|
|
||||||
if (opinfo->flags & FL_LOADSTORE)
|
if (opinfo->flags & FL_LOADSTORE)
|
||||||
++js.numLoadStoreInst;
|
++js.numLoadStoreInst;
|
||||||
|
|
|
@ -971,8 +971,8 @@ bool JitArm64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
|
||||||
gpr.DiscardRegisters(op.gprDiscardable);
|
gpr.DiscardRegisters(op.gprDiscardable);
|
||||||
fpr.DiscardRegisters(op.fprDiscardable);
|
fpr.DiscardRegisters(op.fprDiscardable);
|
||||||
}
|
}
|
||||||
gpr.StoreRegisters(~op.gprInUse);
|
gpr.StoreRegisters(~op.gprInUse & (op.regsIn | op.regsOut));
|
||||||
fpr.StoreRegisters(~op.fprInUse);
|
fpr.StoreRegisters(~op.fprInUse & (op.fregsIn | op.GetFregsOut()));
|
||||||
|
|
||||||
if (opinfo->flags & FL_LOADSTORE)
|
if (opinfo->flags & FL_LOADSTORE)
|
||||||
++js.numLoadStoreInst;
|
++js.numLoadStoreInst;
|
||||||
|
|
Loading…
Reference in New Issue