Revert "JitArm64: Optimize a few tail calls"

This reverts commit 351d095fff.

In hindsight, my attempted optimization messes with the return
predictor, unlike real tail calls. So I think it does more bad than
good.
This commit is contained in:
JosJuice 2022-12-10 11:35:52 +01:00
parent 000c6c4813
commit 64bc150b8c
1 changed files with 5 additions and 7 deletions

View File

@ -350,9 +350,8 @@ void JitArm64::IntializeSpeculativeConstants()
STR(IndexType::Unsigned, DISPATCHER_PC, PPC_REG, PPCSTATE_OFF(pc));
MOVP2R(ARM64Reg::X8, &JitInterface::CompileExceptionCheck);
MOVI2R(ARM64Reg::W0, static_cast<u32>(JitInterface::ExceptionType::SpeculativeConstants));
// Write dispatcher_no_check to LR for tail call
MOVP2R(ARM64Reg::X30, dispatcher_no_check);
BR(ARM64Reg::X8);
BLR(ARM64Reg::X8);
B(dispatcher_no_check);
SwitchToNearCode();
}
@ -844,11 +843,10 @@ bool JitArm64::DoJit(u32 em_address, JitBlock* b, u32 nextPC)
SetJumpTarget(fail);
MOVI2R(DISPATCHER_PC, js.blockStart);
STR(IndexType::Unsigned, DISPATCHER_PC, PPC_REG, PPCSTATE_OFF(pc));
MOVP2R(ARM64Reg::X8, &JitInterface::CompileExceptionCheck);
MOVI2R(ARM64Reg::W0, static_cast<u32>(JitInterface::ExceptionType::PairedQuantize));
// Write dispatcher_no_check to LR for tail call
MOVP2R(ARM64Reg::X30, dispatcher_no_check);
BR(ARM64Reg::X8);
MOVP2R(ARM64Reg::X1, &JitInterface::CompileExceptionCheck);
BLR(ARM64Reg::X1);
B(dispatcher_no_check);
SwitchToNearCode();
SetJumpTarget(no_fail);
js.assumeNoPairedQuantize = true;