commit
f76a30c9fd
|
@ -127,6 +127,7 @@ public:
|
||||||
void stX(UGeckoInstruction inst);
|
void stX(UGeckoInstruction inst);
|
||||||
void lmw(UGeckoInstruction inst);
|
void lmw(UGeckoInstruction inst);
|
||||||
void stmw(UGeckoInstruction inst);
|
void stmw(UGeckoInstruction inst);
|
||||||
|
void dcbt(UGeckoInstruction inst);
|
||||||
|
|
||||||
// LoadStore floating point
|
// LoadStore floating point
|
||||||
void lfXX(UGeckoInstruction inst);
|
void lfXX(UGeckoInstruction inst);
|
||||||
|
|
|
@ -623,3 +623,23 @@ void JitArm64::stmw(UGeckoInstruction inst)
|
||||||
|
|
||||||
gpr.Unlock(WA, WB);
|
gpr.Unlock(WA, WB);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void JitArm64::dcbt(UGeckoInstruction inst)
|
||||||
|
{
|
||||||
|
INSTRUCTION_START
|
||||||
|
JITDISABLE(bJITLoadStoreOff);
|
||||||
|
|
||||||
|
// Prefetch. Since we don't emulate the data cache, we don't need to do anything.
|
||||||
|
|
||||||
|
// If a dcbst follows a dcbt, it probably isn't a case of dynamic code
|
||||||
|
// modification, so don't bother invalidating the jit block cache.
|
||||||
|
// This is important because invalidating the block cache when we don't
|
||||||
|
// need to is terrible for performance.
|
||||||
|
// (Invalidating the jit block cache on dcbst is a heuristic.)
|
||||||
|
if (MergeAllowedNextInstructions(1) &&
|
||||||
|
js.op[1].inst.OPCD == 31 && js.op[1].inst.SUBOP10 == 54 &&
|
||||||
|
js.op[1].inst.RA == inst.RA && js.op[1].inst.RB == inst.RB)
|
||||||
|
{
|
||||||
|
js.skipInstructions = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -222,8 +222,8 @@ static GekkoOPTemplate table31[] =
|
||||||
|
|
||||||
{54, &JitArm64::FallBackToInterpreter}, // dcbst
|
{54, &JitArm64::FallBackToInterpreter}, // dcbst
|
||||||
{86, &JitArm64::FallBackToInterpreter}, // dcbf
|
{86, &JitArm64::FallBackToInterpreter}, // dcbf
|
||||||
{246, &JitArm64::DoNothing}, // dcbtst
|
{246, &JitArm64::dcbt}, // dcbtst
|
||||||
{278, &JitArm64::DoNothing}, // dcbt
|
{278, &JitArm64::dcbt}, // dcbt
|
||||||
{470, &JitArm64::FallBackToInterpreter}, // dcbi
|
{470, &JitArm64::FallBackToInterpreter}, // dcbi
|
||||||
{758, &JitArm64::DoNothing}, // dcba
|
{758, &JitArm64::DoNothing}, // dcba
|
||||||
{1014, &JitArm64::FallBackToInterpreter}, // dcbz
|
{1014, &JitArm64::FallBackToInterpreter}, // dcbz
|
||||||
|
|
Loading…
Reference in New Issue