Project

General

Profile

Emulator Issues #13374 ยป load_store_paired.diff

Rairii, 10/11/2023 08:18 PM

View differences:

Source/Core/Core/PowerPC/Jit64/Jit_LoadStorePaired.cpp
// Should give a very noticeable speed boost to paired single heavy code.
#include "Core/PowerPC/Jit64/Jit.h"
#include "Core/PowerPC/Interpreter/ExceptionUtils.h"
#include "Common/CommonTypes.h"
#include "Common/x64Emitter.h"
......
INSTRUCTION_START
JITDISABLE(bJITLoadStorePairedOff);
auto hid2 = HID2(m_ppc_state);
if (!hid2.LSQE || !hid2.PSE) {
gpr.Flush();
fpr.Flush();
MOV(32, PPCSTATE(pc), Imm32(js.compilerPC));
LOCK();
OR(32, PPCSTATE(Exceptions), Imm32(EXCEPTION_PROGRAM));
MOV(32, PPCSTATE_SRR1, Imm32(static_cast<u32>(ProgramExceptionCause::IllegalInstruction)));
WriteExceptionExit();
}
// For performance, the AsmCommon routines assume address translation is on.
FALLBACK_IF(!m_ppc_state.msr.DR);
......
INSTRUCTION_START
JITDISABLE(bJITLoadStorePairedOff);
auto hid2 = HID2(m_ppc_state);
if (!hid2.LSQE || !hid2.PSE)
{
gpr.Flush();
fpr.Flush();
MOV(32, PPCSTATE(pc), Imm32(js.compilerPC));
LOCK();
OR(32, PPCSTATE(Exceptions), Imm32(EXCEPTION_PROGRAM));
MOV(32, PPCSTATE_SRR1, Imm32(static_cast<u32>(ProgramExceptionCause::IllegalInstruction)));
WriteExceptionExit();
}
// For performance, the AsmCommon routines assume address translation is on.
FALLBACK_IF(!m_ppc_state.msr.DR);
    (1-1/1)