Commit Graph
100 Commits
Author SHA1 Message Date
JosJuice bddcf60673 PPCAnalyst: Don't discard CR before gather pipe interrupt check
This fixes a frequently occurring JitArm64 assert caused by merging
6cc4f593e5 without adapting it to the changes made in 5902b5b113.
2023-11-29 21:53:13 +01:00
JosJuice fc95d59805 JitArm64: Further optimize NaN handling in ps_sumX
So short that using farcode is pointless!
2023-11-28 21:45:44 +01:00
JosJuice 8274dcbfe4 JitArm64: Skip checking last input for NaN for non-SIMD operations
AArch64's handling of NaNs in arithmetic instructions matches PowerPC's
as long as no more than one of the operands is NaN. If we know that all
inputs except the last input are non-NaN, we can therefore skip checking
the last input. This is an optimization that in principle only works for
non-SIMD operations, but ps_sumX effectively is non-SIMD as far as the
arithmetic part of it is concerned, so we can use it there too.
2023-11-28 21:45:40 +01:00
JosJuice 80171adf1e PPCTables: Retire FL_EVIL
FL_EVIL is only used for blocking instructions from being reordered.
There are three types of instructions which have FL_EVIL set:

1. CR operations. The previous commits improved our CR analysis
   and removed FL_EVIL from these instructions.
2. Load/store operations. These are always blocked from reordering
   due to always having canCauseException set.
3. isync. I don't know if we actually need to prevent reordering
   around this one, since as far as I know we only do reorderings
   that are guaranteed to not change the behavior of the program.
   But just in case, I've renamed FL_EVIL to FL_NO_REORDER instead of
   removing it entirely, so that it can be used for this instruction.
2023-11-28 18:59:34 +01:00
JosJuice f494a3d9e8 PPCAnalyst: Remove CanSwapAdjacentOps's OPCD check
Other than the CR instructions, which we now analyze properly,
all the covered instructions are not integer operations and also
have either FL_ENDBLOCK or FL_EVIL set, so there are two other
checks in CanSwapAdjacentOps that will reject them.
2023-11-28 18:59:34 +01:00
JosJuice 96d622bb61 PPCAnalyst: Run cror reordering after cmp reordering
We would rather have cror be close to the cmp than the branch.
2023-11-28 18:59:34 +01:00
JosJuice 40e0dd93be PPCAnalyst: Allow more reordering of CR operations
This is possible with the improved CR analysis implemented
in the previous commits.
2023-11-28 18:59:34 +01:00
JosJuice da63cee711 PPCAnalyst: More strict a_flags checks in CanSwapAdjacentOps
If for instance instruction a sets OE and instruction b
reads it, we shouldn't permit reordering.
2023-11-28 18:59:34 +01:00
JosJuice 8e9609df6e JitArm64: Add flush/discard support for condition registers
By flushing the condition registers as soon as we no longer
need them, we reduce the register pressure.
2023-11-28 18:59:31 +01:00
JosJuice 6cc4f593e5 PPCAnalyst: Add in-register/discard analysis for CR
This brings the analysis done for condition registers
more in line with the analysis done for GPRs and FPRs.

This gets rid of the old wantsCR member, which wasn't actually
used anyway. In case someone wants it again in the future, they
can compute the bitwise inverse of crDiscardable.
2023-11-28 18:58:47 +01:00
JosJuice d6987b98be PPCAnalyst: Perform CR analysis for crXXX 2023-11-28 18:51:03 +01:00
JosJuice 4ecdb9e57e JitArm64: Use one instruction for making NaNs quiet
Instead of materializing the quiet bit in a register and ORing the NaN
with it, we can perform an arithmetic operation on the NaN. This is a
cycle or two slower on some CPUs in cases where generating the quiet bit
pipelined well, but this is farcode that rarely runs, so instruction
fetch latency is the bigger concern. And for non-SIMD cases, we also
save a register.
2023-11-28 18:49:30 +01:00
JosJuice d5ec5c005a JitArm64: Some more FPRF optimization
By using MOVI2R+MOVI2R+CSEL in the zero case instead of doing bitwise
operations on the output of the other MOVI2R+MOVI2R+CSEL, we avoid using
BFI, an instruction that takes two cycles on most CPUs. The instruction
count is the same and the pipelining should be at least equally good.
2023-11-28 18:30:55 +01:00
JosJuice 255ee3fdce JitArm64: Use LSL+CLS for classifying floats
This is a little trick I came up with that lets us restructure our float
classification code so we can exit earlier when the float is normal,
which is the case more often than not.

First we shift left by 1 to get rid of the sign bit, and then we count
the number of leading sign bits. If the result is less than 10 (for
doubles) or 7 (for floats), the float is normal. This is because, if the
float isn't normal, the exponent is either all zeroes or all ones.
2023-11-28 18:30:45 +01:00
JosJuice 3a00ff625e PPCAnalyst: Don't discard registers across HLE'd functions
Not sure if this was causing correctness issues – it depends on whether
the HLE code was actually reading the discarded registers – but it was
at least causing annoying assert messages in one piece of homebrew.
2023-11-27 21:40:42 +01:00
JosJuice ba6fea1c81 HLE: Refactor ReplaceFunctionIfPossible 2023-11-27 21:40:42 +01:00
JosJuice be1e103435 Remove references to Debugger.ini
This file was only used by DolphinWX. DolphinQt uses Qt.ini instead.
2023-11-27 21:38:43 +01:00
JosJuice b18519320c Config: Flip the IsSettingSaveable system check
Nowadays, basically everything except for controller config is handled
by the new config system. Instead of enumerating the systems that are,
let's enumerate the systems that aren't.

I've intentionally not included Config::System::Session in the new list.
While it isn't intended to be saved, it is a setting that's fully
handled by the new config system. See
https://github.com/dolphin-emu/dolphin/pull/9804#discussion_r648949686.
2023-11-27 21:38:25 +01:00
JosJuice 5c3517c31d Config: Remove RA settings from s_setting_saveable
We can cover them using Config::System::Achievements.
2023-11-27 21:36:19 +01:00
JosJuice 51bc86fc25 Config: Remove MAIN_USE_DISCORD_PRESENCE from s_setting_saveable
It's already covered by Config::System::Main.
2023-11-27 21:36:19 +01:00
JosJuice 3d5f95b298 Merge pull request #12297 from Filoppi/improve_paper_white
Change HDR paper white default to 203 to match the ITU recommendations
2023-11-26 18:03:39 +01:00
JosJuice 2f407fc854 JitArm64: Don't use farcode for conditional branch instructions
The point of farcode is to provide a separate location for code that
rarely runs, so that it doesn't pollute the icache. Taking a conditional
branch is something that happens very often, so the code for that
shouldn't be in farcode.
2023-11-25 16:40:35 +01:00
JosJuice 5bda811a00 Android: Remove HostThreadLocks that are no longer needed
71ce8bb6f0 got rid of the need to be the
host or CPU thread when writing to the config.
2023-11-25 14:06:29 +01:00
JosJuice c3c0c7dc1c Jit: Get rid of short-lived std::vectors
Let's aim for making as few heap allocations as possible while jitting.
2023-11-18 23:15:37 +01:00
JosJuice b40a824f92 Translation resources sync with Transifex 2023-11-15 21:19:12 +01:00
JosJuice 6a9f565ac4 JitArm64: Optimize Arm64GPRCache::FlushRegisters/FlushCRRegisters
This way, the number of loop iterations is equal to the number of set
bits in the bitset rather than the number of bits in the bitset,
which is a good improvement because usually very few bits are set.
2023-11-13 18:28:51 +01:00
JosJuice 2ea95f5835 JitArm64: Use BitSet8 for Arm64GPRCache::FlushCRRegisters
There are only 8 CR registers, after all.
2023-11-13 18:28:51 +01:00
JosJuice 8140d6b1d3 Translation resources sync with Transifex 2023-11-07 20:01:29 +01:00
JosJuice aec5238aa6 Merge pull request #12237 from AdmiralCurtiss/hard-label
DolphinQt/AchievementHeaderWidget: Fix wrong label for hard unlock count.
2023-11-06 20:22:23 +01:00
JosJuice 9a342af857 Merge pull request #12275 from JosJuice/directoryblob-comma
DiscIO: Remove unintentional use of comma operator
2023-11-05 14:40:25 +01:00
JosJuice 9c53c110f8 DiscIO: Remove unintentional use of comma operator 2023-11-05 09:24:49 +01:00
JosJuice f9dd13a309 JitArm64: Preserve dirty flag when materializing immediate
Before dbf5dca, the dirty flag had no meaning for an immediate value,
so we made sure to always set the dirty flag when switching a register
from Immediate to Register. But after dbf5dca, that is no longer the
case. If an immediate is marked as not dirty, we can keep the register
marked as not dirty after materializing the value. This way we skip
having to write it back to ppcState later.
2023-11-05 09:21:58 +01:00
JosJuice 1b7bd32ac1 JitArm64: Correctly flush non-dirty immediates
Without this change, non-dirty immediates don't actually get flushed.
This can be a problem if we for instance are flushing all registers in
order to execute an interpreter fallback. If that interpreter fallback
writes to a register that contained a non-dirty immediate, the JIT will
keep using the old value instead of loading the updated value.
2023-11-05 09:15:08 +01:00
JosJuice 9cc1df6c14 JitArm64: Optimize frsqrte denormal path (in an "interesting" way) 2023-11-04 11:58:03 +01:00
JosJuice 9b21046dfc JitArm64: Read X1 instead of X3 in frsqrte denormal path
If we hit the denormal path, the sign and exponent are guaranteed to be
0, which means X1 and X3 have the same value.
2023-11-04 11:58:03 +01:00
JosJuice 9807cf0b82 JitArm64: Stop using X4 in frsqrte
This required a change in the denormal path where, instead of
subtracting 11 before shifting left, we shift left immediately and then
shift right by 11. This shouldn't affect performance.
2023-11-04 11:58:03 +01:00
JosJuice 4b2f73774f JitArm64: Optimize frsqrte denormal path
Now that the normal path is no longer reading X2 and X3, it doesn't
matter what the denormal path writes to them.
2023-11-04 11:58:03 +01:00
JosJuice e5bd8019f6 JitArm64: Read X1 instead of X3 in frsqrte normal path
With this, the normal path is no longer reading the value in X3,
which opens up for the next commit.
2023-11-04 11:57:59 +01:00
JosJuice 31d751b6da JitArm64: Read X1 in frsqrte normal path
Instead of combining X2 (the exponent) and X3 (the mantissa) using an
ORR instruction, we can read X1, which already contains both.

This requires us to reconstruct X1 in the denormal path, but that's
an acceptable price.
2023-11-04 11:56:15 +01:00
JosJuice 6b2d801ed7 Merge pull request #12267 from JosJuice/contributing-leaks
Contributing.md: Make our stance on leaked information explicit
2023-11-03 22:37:50 +01:00
JosJuice a2a733f4a3 Contributing.md: Make our stance on leaked information explicit
We have been operating on this principle for a while. Let's make it
explicit so that new contributors know about it.
2023-11-03 18:53:49 +01:00
JosJuice 482da7975b Jit: Define new terms related to fastmem
Dolphin's JITs have a minor terminology problem: The term "fastmem" can
refer to either the system of switching between a fast path and a slow
path using backpatching, or to the fast path itself. To hopefully make
things clearer, I'm adding some new terms, defining the old and new
terms as follows:

Fastmem: The system of switching from a fast path to a slow path by
backpatching when an invalid memory access occurs.

Fast access: A code path that accesses guest memory without calling C++
code.

Slow access: A code path that accesses guest memory by calling C++ code.
2023-11-02 21:30:12 +01:00
JosJuice 13c70eeb31 Merge pull request #12257 from Wack0/patch-1
JIT64 (Jit_Integer): for twx instructions, raise exception with correct SRR0
2023-11-01 21:10:39 +01:00
JosJuice c248a69268 JitArm64: Add utility for calling a function with arguments
With this, situations where multiple arguments need to be moved
from multiple registers become easy to handle, and we also get
compile-time checking that the number of arguments is correct.
2023-11-01 19:01:58 +01:00
JosJuice d04e67be3d Add fastmem arena setting
Just for debugging.
2023-10-31 19:43:49 +01:00
JosJuice 8686536d7d Jit: Always initialize fastmem arena
If dcache is enabled when the game starts, initializing the fastmem
arena is still useful in case the user changes the dcache setting.
And initializing it doesn't really cost anything.
2023-10-31 19:43:49 +01:00
JosJuice 0606433404 JitArm64: Check fastmem instead of fastmem_arena
Preparation for the next commit.

JitArm64 has been conflating these two flags. Most of the stuff that's
been guarded by fastmem_arena checks in fact requires fastmem.

When we have fastmem_arena without fastmem, it would be possible to do
things a bit more efficiently than what this commit does, but it's
non-trivial and therefore I will leave it out of this PR. With this
commit, we effectively have the same behavior as before this PR - plus
the added ability to toggle fastmem with a cache clear.
2023-10-31 19:43:49 +01:00
JosJuice b3bfcc5d7f PowerPC: Allow toggling write-back cache during emulation
Now that PR 10575 is merged, the JIT automatically clears its cache
when this setting is changed, making this reasonable to implement.
2023-10-31 19:43:49 +01:00
JosJuice 899d61bc7d Jit64: Recompile asm routines on cache clear
This is needed so that the checks added in the previous commit will be
reevaluated if the value of m_enable_dcache changes.

JitArm64 was already recompiling its asm routines on cache clear by
necessity. It doesn't have the same setup as Jit64 where the asm
routines are in a separate region, so clearing the JitArm64 cache
results in the asm routines being cleared too.
2023-10-31 19:43:49 +01:00
JosJuice 5e74a8b850 Jit64: Don't make use of fastmem arena when dcache is enabled
Some code paths in EmuCodeBlock.cpp that were checking fastmem_arena
should really also be checking m_enable_dcache.

Because JitArm64 centralizes more or less all memory access to the
EmitBackpatchRoutine function and because that function already
contained a check, JitArm64 works fine without the additional checks
added by this commit. Regardless, I added the checks to MMU.cpp instead
of EmuCodeBlock.cpp where applicable so they would be available to
JitArm64. Maybe one day JitArm64 will need them if its code gets
restructured.
2023-10-31 19:43:40 +01:00
JosJuice b32ac9353e Merge pull request #12262 from AdmiralCurtiss/last-state-order-refactor
Core/State: Refactor logic for determining the relative age of existing savestates.
2023-10-31 19:39:47 +01:00
JosJuice 3454bc4c3c Translation resources sync with Transifex 2023-10-25 22:43:24 +02:00
JosJuice b3b660b446 Merge pull request #12236 from AdmiralCurtiss/qt-clear-layout
DolphinQt: Move GraphicsModListWidget::ClearLayoutRecursively() to QtUtils.
2023-10-15 19:17:01 +02:00
JosJuice 47396650bf Merge pull request #12232 from Dentomologist/convert_objectsubtype_to_enum_class
IOSC: Convert ObjectSubType to enum class
2023-10-13 21:54:23 +02:00
JosJuice d811c12196 Android: Add more GameCube controller types
For all your PSO needs.
2023-10-01 18:47:49 +02:00
JosJuice d6c0f8e749 Android: Get profile name from core
To avoid duplicating information between Kotlin and C++.
2023-10-01 18:47:49 +02:00
JosJuice d8e00c98e8 Android: Remove a stray backtick 2023-10-01 13:37:04 +02:00
JosJuice 02d76ba2a0 Jit: Fix fastmem initialization order
When evaluating whether jo.fastmem should be set to true, we check the
value of jo.fastmem_arena. However, due to a change made in 28e8117b90,
jo.fastmem_arena wasn't set until after the first time we set
jo.fastmem, so jo.fastmem would end up always being false until the next
time RefreshConfig was called.

Fixes https://bugs.dolphin-emu.org/issues/13364.
2023-09-30 16:16:54 +02:00
JosJuice 9e0fea8fc7 PowerPC: Flip the order of frsqrte_expected
This makes the the frsqrte routines one instruction shorter.
2023-09-30 11:41:27 +02:00
JosJuice 117bfd326d Merge pull request #12197 from t895/double-numeric-settings-fix
Android: Float slider settings fix
2023-09-24 15:33:24 +02:00
JosJuice 853d93d14a Merge pull request #12188 from t895/coil-loader
Android: Use custom image loader for game covers
2023-09-22 19:23:14 +02:00
JosJuice 24950ce0e0 JitArm64: Check packed NaNs without using extra register
A small optimization for AccurateNaNs.
2023-09-21 18:19:12 +02:00
JosJuice 8dbbae76de Jit64: Optimize ps_merge01 with Rd == Rb 2023-09-21 18:03:39 +02:00
JosJuice 9862ba4548 Merge pull request #12155 from krnlyng/jit_block_map_msr_fast
JitArm64/Jit64: Extend the fast lookup mmap-ed segment further to avoid needing to check the msr bits.
2023-09-17 15:13:53 +02:00
JosJuice a79fe768e3 Jit64: Simplify ps_sum1 2023-09-17 11:04:37 +02:00
JosJuice aa4de6516f Common: Fix HttpRequest::GetLastResponseCode stack corruption
Should fix https://bugs.dolphin-emu.org/issues/13353.
2023-09-16 16:01:28 +02:00
JosJuice 392dfbe05f JitArm64: Deduplicate the gather pipe exception check
We had two nearly identical copies of the gather pipe exception checking
code right next to each other, with the only difference being the
register used. Let's unify them, like in Jit64.
2023-09-10 16:34:10 +02:00
JosJuice 34b0a6ea90 Jit: Check for discarded registers when flushing
This adds a check for the bug addressed by the previous commit.
2023-09-10 12:54:52 +02:00
JosJuice 5902b5b113 PPCAnalyst: Don't discard before gather pipe interrupt check
This bug has been lurking in the code ever since I added the discard
functionality. It doesn't seem to be triggered all that often,
and on top of that the emitted code only runs conditionally, so I'm not
sure if people have been affected by this bug in practice or not.
2023-09-10 12:54:52 +02:00
JosJuice f7f4da2be8 Jit: Use correct address when checking fifoWriteAddresses
We need to check for the address of the *previous* instruction, because
checking fifoWriteAddresses happens not at the end of the instruction
that triggered it but at the start of the next instruction.
2023-09-10 12:54:18 +02:00
JosJuice 57e56f4bc2 Merge pull request #12174 from AdmiralCurtiss/jitcache-32bit
Core/JitCache: Don't try to allocate the fast block map on 32-bit builds.
2023-09-07 19:29:04 +02:00
JosJuice cc01b4b997 Merge pull request #12173 from AdmiralCurtiss/fixed-mapping-assert
Common/MemArena: LazyMemoryRegion fixes.
2023-09-07 19:28:46 +02:00
JosJuice 32f4f3ae7c Merge pull request #12152 from JosJuice/android-settings-nullable
Android: Get rid of unnecessary nullability in features.settings
2023-09-03 19:53:30 +02:00
JosJuice c378365324 Android: Get rid of unnecessary nullability in features.settings 2023-09-03 17:44:26 +02:00
JosJuice 26e9294075 Merge pull request #12153 from JosJuice/android-iso-paths-jni
Android: Use JNI for setting/getting ISO paths
2023-09-03 17:38:52 +02:00
JosJuice 57b1bd2b1a Merge pull request #12151 from JosJuice/android-controller-float
Android: Fix controller float sliders crashing
2023-09-03 17:38:42 +02:00
JosJuice 190e71a318 Android: Use JNI for setting/getting ISO paths
This gets rid of the last Android-specific code that directly interfaces
with INI files.
2023-09-02 12:58:20 +02:00
JosJuice 1c47c510cd Android: Remove all uses of Any from SliderSetting
This makes casting unnecessary, preventing the kind of type error we
just had from occurring in the future.
2023-09-02 10:05:42 +02:00
JosJuice e6138d7683 Android: Fix controller float sliders crashing
By not setting a stepSize, stepSize was getting set to the default
value of 0, which is an Int. This later caused a crash when trying to
cast it to Float.
2023-09-02 09:12:42 +02:00
JosJuice 4131dffae9 Jit: Allow BLR optimization without fastmem
While both fastmem and the BLR optimization depend on fault handling,
the BLR optimization doesn't depend on fastmem, and there are cases
where you might want the BLR optimization but not fastmem. For me
personally, it's useful when I try to use a debugger on Android and have
to disable fastmem so I don't get SIGSEGVs all the time, but it would be
especially useful for iOS users.
2023-08-29 22:55:29 +02:00
JosJuice af2c32635a Jit: Add more error checking to ProtectStack 2023-08-29 22:46:50 +02:00
JosJuice 8c2c665af3 Jit: Check MSR state in BLR optimization
When we execute a JIT block, we have to make sure that both the PC and
the DR/IR bits of MSR are the same as they were when the block was
compiled. When jumping to a block from the dispatcher, this is done in
the way you would expect: By checking the PC and the relevant MSR bits.
However, when returning to a block using the BLR optimization, we only
check the PC. Checking the MSR bits is done by instead resetting the
stack when the MSR changes, making PC checks afterwards fail.

Except... We were only resetting the stack on rfi instructions. There
are actually many more ways for the MSR to change, and we weren't
covering those at all. I looked into resetting the stack on all of them,
but it would be pretty cumbersome both in terms of writing the code and
in terms of how often at runtime we'd have to reset the stack, so I
think the better option would be to check the MSR bits along with the
PC. That's what this commit implements.
2023-08-29 19:05:26 +02:00
JosJuice 5b112dbf2c VideoCommon: Fix GLSL uint handling in UberShaderPixel 2023-08-28 21:17:01 +02:00
JosJuice b922f4baa6 JitArm64: Write PC when calling MMU.cpp
This functionality was in Jit64 but not JitArm64.
2023-08-27 18:45:34 +02:00
JosJuice 58f247290f Use latest resolution value for resolution hotkey OSD
Because CPU thread config changed callbacks are no longer instant,
g_Config.iEFBScale doesn't yet contain the new value when the hotkey OSD
code tries to read it.

Should fix https://bugs.dolphin-emu.org/issues/13343.
2023-08-27 15:38:00 +02:00
JosJuice 7ac0db70c6 Merge pull request #12086 from krnlyng/jitcompilerPCload
JitArm64: Avoid loading compilerPC multiple times if it's already in a register.
2023-08-27 10:05:11 +02:00
JosJuice f9959656e7 Merge pull request #11919 from t895/kotlin-controls
Android: Convert "features.input" package to Kotlin
2023-08-26 19:10:56 +02:00
JosJuice 85281e76ee Jit: Remove unnecessary member variables 2023-08-26 17:05:04 +02:00
JosJuice 07d70db46b DolphinQt: Allow toggling most JIT debug settings at any time
There's no reason not to allow this now that these settings are
cleanly integrated into the new config system. (Actually, maybe
we could even have done this before the previous commit...)
2023-08-26 17:05:04 +02:00
JosJuice 28e8117b90 Jit: Automatically clear cache when JIT settings are updated
This fixes a problem where changing the JIT debug settings on
Android while a game was running wouldn't cause the changed settings
to apply to code blocks that already had been compiled.
2023-08-26 17:04:56 +02:00
JosJuice cd31da97d6 Merge pull request #11191 from JosJuice/jitarm64-no-checked-entry
JitArm64: Never check downcount on block entry
2023-08-26 17:00:08 +02:00
JosJuice b149ea51cf Merge pull request #11922 from t895/kotlin-model
Android: Convert "model" package to Kotlin
2023-08-25 21:04:34 +02:00
JosJuice 260bad74ea Merge pull request #12132 from JosJuice/gles-uint-const
VideoCommon: Fix custom shader constants on GLES
2023-08-22 22:35:06 +02:00
JosJuice ba99d17ac0 VideoCommon: Fix custom shader constants on GLES 2023-08-22 19:38:18 +02:00
JosJuice 6e88c44d5d Move SmallVector to Common
We had one implementation of this type of data structure in Arm64Emitter
and one in VideoCommon. This moves the Arm64Emitter implementation to
its own file and adds begin and end functions to it, so that VideoCommon
can use it.

You may notice that the license header for the new file is CC0. I wrote
the Arm64Emitter implementation of SmallVector, so this should be no
problem.
2023-08-22 13:19:49 +02:00
JosJuice e7c2133160 Fixes to translatable strings 2023-08-21 16:29:52 +02:00
JosJuice 3451cb1ca2 Merge pull request #11959 from Dentomologist/add_x64emitter_unittests
x64EmitterTest: add J/J_CC/CALL unit tests
2023-08-21 16:27:04 +02:00
JosJuice d34d3bd513 JitArm64: Optimize mfsrin/mtsrin address calculations
This does require another register, but we skip having to use shifted
ADD, which takes two cycles on some CPUs, and we gain instruction-level
parallelism.
2023-08-19 21:37:06 +02:00
JosJuice c70dcf99dd Jit: Some mcrxr optimizations 2023-08-19 21:13:56 +02:00
JosJuice 5ea1cc5406 JitArm64: Fix mcrxr
Likely an incorrect translation of Jit64's LEA with SCALE_2.
2023-08-19 20:57:32 +02:00