dolphin/Source/Core/Core/DSP
Sintendo 49a4e09719 DSPJit: Replace/optimize LEAs
- LEA is a bit silly when the source and the destination are the same. A
simple ADD or SHL will do in those cases.

66 8D 04 45 00 00 00 00 lea         ax,[rax*2]
66 03 C0                add         ax,ax

48 8D 04 00             lea         rax,[rax+rax]
48 03 C0                add         rax,rax

66 8D 14 D5 00 00 00 00 lea         dx,[rdx*8]
66 C1 E2 03             shl         dx,3

- When scaling by 2, consider summing the register with itself instead.
The former always needs a 32-bit displacement, so the sum is more
compact.

66 8D 14 45 00 00 00 00 lea dx,[rax*2]
66 8D 14 00             lea dx,[rax+rax]
2020-08-05 10:22:50 +02:00
..
Interpreter DSP/Interpreter: fix comments not matching opcode table 2020-05-31 15:21:20 +01:00
Jit DSPJit: Replace/optimize LEAs 2020-08-05 10:22:50 +02:00
DSPAccelerator.cpp Replace MathUtil::Clamp with std::clamp 2019-05-04 23:12:17 +02:00
DSPAccelerator.h DSPAccelerator: const qualify pointer parameter for Read() 2018-06-04 14:50:42 -04:00
DSPAnalyzer.cpp Core: Use nested namespace specifiers where applicable 2019-06-17 16:32:30 -04:00
DSPAnalyzer.h Core: Use nested namespace specifiers where applicable 2019-06-17 16:32:30 -04:00
DSPAssembler.cpp Core: Replace usages of StringFromFormat with fmt where applicable 2019-11-11 07:32:57 -05:00
DSPAssembler.h DSPAssembler: Convert typedef into a using alias 2018-06-18 15:45:59 -04:00
DSPBreakpoints.h Reformat all the things! 2018-04-12 21:28:39 +02:00
DSPCaptureLogger.cpp PcapFile: Namespace code under the Common namespace 2018-05-29 17:56:15 -04:00
DSPCaptureLogger.h PcapFile: Namespace code under the Common namespace 2018-05-29 17:56:15 -04:00
DSPCodeUtil.cpp Use size_t in some DSP code code 2020-07-24 15:06:39 -07:00
DSPCodeUtil.h Use size_t in some DSP code code 2020-07-24 15:06:39 -07:00
DSPCommon.h
DSPCore.cpp Use range loop (if possible) 2020-07-18 18:29:16 -05:00
DSPCore.h DSPLLE: Use Memory functions isntead of directly using Memory::physical_base 2020-07-24 15:06:39 -07:00
DSPDisassembler.cpp Core: Replace usages of StringFromFormat with fmt where applicable 2019-11-11 07:32:57 -05:00
DSPDisassembler.h DSPDisassembler: Remove unnecessary includes 2018-06-08 18:55:57 -04:00
DSPHost.h DSPLLE: Use Memory functions isntead of directly using Memory::physical_base 2020-07-24 15:06:39 -07:00
DSPHWInterface.cpp DSPLLE: Use Memory functions isntead of directly using Memory::physical_base 2020-07-24 15:06:39 -07:00
DSPHWInterface.h DSP: Fix gdsp_ifx_write to take a u16 value 2017-09-24 20:48:28 +02:00
DSPMemoryMap.cpp DSPTables: Hide main opcode tables 2017-01-19 17:46:07 -05:00
DSPMemoryMap.h
DSPStacks.cpp Use range loop (if possible) 2020-07-18 18:29:16 -05:00
DSPStacks.h DSPCore: Convert DSP stack register enum into an enum class 2017-01-28 09:17:27 -05:00
DSPTables.cpp Misc cleanup 2020-05-24 15:51:52 +01:00
DSPTables.h Core/DSP/DSPTables: Make FindOpInfoByName/FindExtOpInfoByName use std::string_view 2019-06-06 12:22:02 -04:00
LabelMap.cpp DSP/LabelMap: std::move std::string instances where applicable 2019-06-07 17:42:10 -04:00
LabelMap.h DSP/LabelMap: std::move std::string instances where applicable 2019-06-07 17:42:10 -04:00