diff --git a/Source/Core/Core/PowerPC/Jit64/Jit.cpp b/Source/Core/Core/PowerPC/Jit64/Jit.cpp index d58e4ad530..580b20c5a1 100644 --- a/Source/Core/Core/PowerPC/Jit64/Jit.cpp +++ b/Source/Core/Core/PowerPC/Jit64/Jit.cpp @@ -669,9 +669,6 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBloc fpr.Start(); js.downcountAmount = 0; - if (!SConfig::GetInstance().bEnableDebugging) - js.downcountAmount += PatchEngine::GetSpeedhackCycles(code_block.m_address); - js.skipInstructions = 0; js.carryFlagSet = false; js.carryFlagInverted = false; @@ -729,6 +726,9 @@ const u8* Jit64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBloc js.revertGprLoad = -1; js.revertFprLoad = -1; + if (!SConfig::GetInstance().bEnableDebugging) + js.downcountAmount += PatchEngine::GetSpeedhackCycles(js.compilerPC); + if (i == (code_block.m_num_instructions - 1)) { if (Profiler::g_ProfileBlocks) diff --git a/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp b/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp index af1f022852..9a9730efc0 100644 --- a/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp +++ b/Source/Core/Core/PowerPC/Jit64IL/JitIL.cpp @@ -583,8 +583,6 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBloc ibuild.Reset(); js.downcountAmount = 0; - if (!SConfig::GetInstance().bEnableDebugging) - js.downcountAmount += PatchEngine::GetSpeedhackCycles(code_block.m_address); // Translate instructions for (u32 i = 0; i < code_block.m_num_instructions; i++) @@ -595,6 +593,9 @@ const u8* JitIL::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBloc const GekkoOPInfo* opinfo = GetOpInfo(ops[i].inst); js.downcountAmount += opinfo->numCycles; + if (!SConfig::GetInstance().bEnableDebugging) + js.downcountAmount += PatchEngine::GetSpeedhackCycles(js.compilerPC); + if (i == (code_block.m_num_instructions - 1)) js.isLastInstruction = true; diff --git a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp index e82911788d..5ff54ca819 100644 --- a/Source/Core/Core/PowerPC/JitArm64/Jit.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/Jit.cpp @@ -712,9 +712,6 @@ void JitArm64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBlock* gpr.Start(js.gpa); fpr.Start(js.fpa); - if (!SConfig::GetInstance().bEnableDebugging) - js.downcountAmount += PatchEngine::GetSpeedhackCycles(em_address); - // Translate instructions for (u32 i = 0; i < code_block.m_num_instructions; i++) { @@ -724,12 +721,10 @@ void JitArm64::DoJit(u32 em_address, PPCAnalyst::CodeBuffer* code_buf, JitBlock* js.instructionsLeft = (code_block.m_num_instructions - 1) - i; const GekkoOPInfo* opinfo = ops[i].opinfo; js.downcountAmount += opinfo->numCycles; + js.isLastInstruction = i == (code_block.m_num_instructions - 1); - if (i == (code_block.m_num_instructions - 1)) - { - // WARNING - cmp->branch merging will screw this up. - js.isLastInstruction = true; - } + if (!SConfig::GetInstance().bEnableDebugging) + js.downcountAmount += PatchEngine::GetSpeedhackCycles(js.compilerPC); // Gather pipe writes using a non-immediate address are discovered by profiling. bool gatherPipeIntCheck =