dolphin/Source/Core/Core/PowerPC
Sintendo 2cafa0a960 Jit64: divwux - Prefer three-operand IMUL
By taking advantage of three-operand IMUL, we can eliminate a MOV
instruction. This is a small code size win. However, due to IMUL sign
extending the immediate value to 64 bits, we can only apply this when
the magic number's most significant bit is zero.

To ensure this can actually happen, we also minimize the magic number by
checking for trailing zeroes.

Example (Unsigned division by 18)
Before:
41 BE E4 38 8E E3    mov         r14d,0E38E38E4h
4D 0F AF F5          imul        r14,r13
49 C1 EE 24          shr         r14,24h

After:
4D 69 F5 39 8E E3 38 imul        r14,r13,38E38E39h
49 C1 EE 22          shr         r14,22h
2021-05-06 19:54:33 +02:00
..
CachedInterpreter CachedInterpreter: Call UpdatePerformanceMonitor 2020-12-23 17:34:32 +01:00
Interpreter Merge pull request #9351 from JosJuice/discard-registers 2021-04-06 04:40:26 -04:00
Jit64 Jit64: divwux - Prefer three-operand IMUL 2021-05-06 19:54:33 +02:00
Jit64Common Core: Convert logging over to fmt pt.5 2020-11-25 13:23:48 -05:00
JitArm64 JitArm64: Fix frspx with single precision source 2021-04-25 15:56:59 +02:00
JitArmCommon JitArm64: Move float conversion code out of EmitBackpatchRoutine 2021-04-25 15:56:19 +02:00
JitCommon Merge pull request #9675 from JosJuice/jit64-div-80000000 2021-04-26 23:50:27 +02:00
SignatureDB rename Common/File to Common/IOFile 2021-01-27 14:29:48 -08:00
BreakPoints.cpp Allow to disable/enable breakpoints 2021-03-02 21:11:53 +00:00
BreakPoints.h Allow to disable/enable breakpoints 2021-03-02 21:11:53 +00:00
ConditionRegister.cpp PowerPC: Factor out CR helpers into POD class 2019-03-08 20:42:09 +01:00
ConditionRegister.h PowerPC: Factor out CR helpers into POD class 2019-03-08 20:42:09 +01:00
CPUCoreBase.h CPUCoreBase: Make the GetName() member function const qualified 2018-03-24 16:17:39 -04:00
GDBStub.cpp Core: Use RAII winsock object to cleanly create and destroy WSA in gdb-stub 2021-03-04 13:47:32 -06:00
GDBStub.h msbuild: enable USE_GDBSTUB 2021-01-09 22:26:55 -08:00
Gekko.h PowerPC: partially implement thermal related SPRs 2020-06-18 07:37:44 +02:00
JitInterface.cpp Apply More Core::RunAsCPUThread 2021-03-18 22:31:28 -05:00
JitInterface.h Reformat repo to clang-format 7.0 rules 2019-05-06 18:48:04 +00:00
MMU.cpp MMU: Remove a bunch of useless swaps 2021-04-06 18:25:29 +02:00
MMU.h Debugger/Memory: Add support for address spaces 2019-05-02 21:14:30 -04:00
PowerPC.cpp Allow to disable/enable breakpoints 2021-03-02 21:11:53 +00:00
PowerPC.h JitArm64: Use STP for pc/npc 2021-01-30 11:56:25 +01:00
PPCAnalyst.cpp JitArm64: Skip accurate single/double conversion if store-safe 2021-04-25 15:56:58 +02:00
PPCAnalyst.h JitArm64: Skip accurate single/double conversion if store-safe 2021-04-25 15:56:58 +02:00
PPCCache.cpp Disable ICache emulation for some games 2021-04-06 12:44:10 -07:00
PPCCache.h PPCCache: Make arrays constexpr where applicable 2019-12-03 04:05:09 -05:00
PPCSymbolDB.cpp rename Common/File to Common/IOFile 2021-01-27 14:29:48 -08:00
PPCSymbolDB.h Common/DebugInterface: Namespace code under the Common namespace 2018-07-09 22:23:57 -04:00
PPCTables.cpp rename Common/File to Common/IOFile 2021-01-27 14:29:48 -08:00
PPCTables.h Jits: Discard registers which we know will be overwritten 2021-03-24 20:48:44 +01:00
Profiler.h PowerPC: Remove Profiler.cpp 2018-08-27 12:13:39 -04:00