Add compile-time option to drop psxMemRLUT, psxMemWLUT
authorPaul Cercueil <paul@crapouillou.net>
Fri, 6 Oct 2023 20:53:47 +0000 (22:53 +0200)
committernotaz <notasas@gmail.com>
Mon, 9 Oct 2023 18:05:11 +0000 (21:05 +0300)
commite53fec7170e512a8d315c6d8d04a5492b4f14312
tree6203db3706613251983faa219aec2bdf667e8515
parent1328fa326b0e51dca172bb59e355e964ac666b64
Add compile-time option to drop psxMemRLUT, psxMemWLUT

Add compile-time option which, if enabled, will replace accesses to
psxMemRLUT and psxMemWLUT with a small inline function psxm().

The reasons behind this change are:

- These were some BIG LUTs. On 32-bit, they would account for 512 KiB of
  RAM. On 64-bit, they would account for 1 MiB of RAM. This sounds tiny
  by today's standards, but it still is huge for some of the platforms
  that PCSX supports.

- Computing the pointer isn't that resource-intensive. Still slower than
  reading from a LUT (as long as the LUT entry is in the cache, which it
  should be, as the few valid entries are grouped together), but I doubt
  that it slows down the interpreter by a lot.

- Even if it does slow down the interpreter a bit, it shouldn't be a
  huge deal, given that the interpreter isn't really used nowadays as
  the JITs support all the major CPU architectures, and the interpreter
  is used mostly for debugging purposes. Besides, the two JITs do not
  use these LUTs.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Makefile
libpcsxcore/psxinterpreter.c
libpcsxcore/psxmem.c
libpcsxcore/psxmem.h