diff options
| author | Pokechu22 <Pokechu022@gmail.com> | 2022-05-30 18:31:38 -0700 |
|---|---|---|
| committer | Pokechu22 <Pokechu022@gmail.com> | 2022-05-30 20:10:55 -0700 |
| commit | f88b7ab6b389878bfc1c3a023c99f534fa5fae21 (patch) | |
| tree | 70cc025162e94185e50c7abad7c54e69c6381507 /Source/Core/InputCommon/GCAdapter.cpp | |
| parent | 70bf89fa59e3bd48633677374ca26124d36ff7e5 (diff) | |
DSP LLE JIT: Fix Update_SR_Register16_OverS32
There were 3 bugs here:
- The input register for the full register wasn't actually being used; it was read into RCX but RCX wasn't used by Update_SR_Register16_OverS32 (except as a scratch register). The way the DSP LLE recompiler uses registers is in general confusing, so this commit changes a few uses to have a variable for the register being used, to make code a bit more readable. (Default parameter values were also removed so that they needed to be explicitly specified).
- Update_SR_Register16 was doing a 64-bit test, when it should have been doing a 16-bit test. For the most part this doesn't matter due to sign-extension, but it does come up with e.g. `ORI` or `ANDI`.
- Update_SR_Register16_OverS32 did the over s32 check, and then called Update_SR_Register16. Update_SR_Register16 masks $sr with ~SR_CMP_MASK, clearing the over s32 bit. Now the over s32 check is performed after calling Update_SR_Register16 (without masking a second time). No official uCode cares about the over s32 bit.
Diffstat (limited to 'Source/Core/InputCommon/GCAdapter.cpp')
0 files changed, 0 insertions, 0 deletions
