dolphin/Source/Core/Core/PowerPC
JosJuice 0f72b69dc7 PPCAnalyst: Split "in use" analysis into reads and writes
If the last write to a register comes before the last read of it,
we can write the register to ppcState after the last write instead of
after the last read. This will hopefully help spread out m_ppc_state
writes across a code block, improving pipelining. Also, if there's a
conditional branch that's after the last write but before the last read,
instead of needing to emit one m_ppc_state write on each side of the
branch, we now only need to emit one m_ppc_state write.

A note about the changes made to stmw and mfcr: These instructions don't
write to any GPRs or CRs respectively – they only read from them.
With this commit, there are no longer any cases where registers get
written back to m_ppc_state after an instruction that just reads from
them, so we can get rid of all STP logic from these two instructions.
lmw still needs its STP logic, since that one does write to registers.
2026-05-12 14:38:53 +02:00
..
CachedInterpreter Move RangeSet from Externals to Common 2026-02-23 22:55:38 +01:00
Interpreter Core: Detect SR updates 2026-02-01 12:39:33 +01:00
Jit64 PPCAnalyst: Split "in use" analysis into reads and writes 2026-05-12 14:38:53 +02:00
Jit64Common Remove unused imports 2026-01-25 16:12:15 +01:00
JitArm64 PPCAnalyst: Split "in use" analysis into reads and writes 2026-05-12 14:38:53 +02:00
JitArmCommon JitArm64: Restructure the BackPatchInfo flags enum 2021-09-08 21:23:00 +02:00
JitCommon Improve usage of std::move and const references parameters 2026-04-17 12:39:46 +02:00
SignatureDB Remove unused imports 2026-01-25 16:12:15 +01:00
BreakPoints.cpp Replace find(x) != npos with contains(x) - Core 2026-04-20 09:36:08 +02:00
BreakPoints.h Debugger/ BreakpointsWidget: Add option to disable/enable all breaking without affecting individual breakpoint enabled states. 2026-02-19 16:23:42 -07:00
ConditionRegister.cpp treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
ConditionRegister.h PowerPC/ConditionRegister: Mark PPCToInternal() as constexpr 2023-06-08 14:33:13 -04:00
CPUCoreBase.h treewide: convert GPLv2+ license info to SPDX tags 2021-07-05 04:35:56 +02:00
Expression.cpp Replace find(x) != npos with contains(x) - Core 2026-04-20 09:36:08 +02:00
Expression.h PowerPC: Track registers used in memory breakpoint conditions 2025-07-27 08:32:44 +02:00
GDBStub.cpp Core: Detect SR updates 2026-02-01 12:39:33 +01:00
GDBStub.h GDB Stub: do not send a packet when we just connected 2022-01-02 04:35:55 -05:00
Gekko.h Debugger: Ignore bctr when stepping out 2025-11-04 11:41:48 -05:00
JitInterface.cpp Improve usage of std::move and const references parameters 2026-04-17 12:39:46 +02:00
JitInterface.h Improve usage of std::move and const references parameters 2026-04-17 12:39:46 +02:00
MMU.cpp Core: Raise PI interrupt when accessing unmapped memory 2026-04-04 17:45:17 +02:00
MMU.h Core: Don't create page table mappings before R/C bits are set 2026-02-04 21:35:22 +01:00
PowerPC.cpp Core/PowerPC: Minor code cleanup to CheckExternalExceptions function. 2026-04-10 14:57:52 -05:00
PowerPC.h Core: Update page table mappings incrementally 2026-02-04 21:35:20 +01:00
PPCAnalyst.cpp PPCAnalyst: Split "in use" analysis into reads and writes 2026-05-12 14:38:53 +02:00
PPCAnalyst.h PPCAnalyst: Split "in use" analysis into reads and writes 2026-05-12 14:38:53 +02:00
PPCCache.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
PPCCache.h PPCCache: Avoid Global System Accessor 2024-04-08 19:49:57 -07:00
PPCSymbolDB.cpp Improve usage of std::move and const references parameters 2026-04-17 12:39:46 +02:00
PPCSymbolDB.h PPCSymbolDB: Fix callers not updating 2025-08-09 09:36:17 -07:00
PPCTables.cpp Remove unused imports 2026-01-25 16:12:15 +01:00
PPCTables.h Call JitInterface::UpdateMembase from PowerPC::MSRUpdated 2025-11-02 21:18:07 +01:00