Commit Graph

142 Commits

Author SHA1 Message Date
Cacodemon345
45dcc4273f Tail track list + double linked list for memory blocks 2025-12-19 01:48:17 +06:00
Cacodemon345
47b16bb5dc Revert "Merge pull request #6017 from Cacodemon345/ndr-memory-blocks"
This reverts commit cc46ea4d8e, reversing
changes made to a2056d7fd8.

Needs more work for 6.0.
2025-12-18 01:44:31 +06:00
Cacodemon345
48973677f3 Purge all codeblocks if running out of memory blocks except the one being recompiled 2025-12-17 16:37:10 +06:00
Cacodemon345
3e8843e6ec Fix warnings 2025-12-17 16:37:10 +06:00
Cacodemon345
ada50dade3 NDR: Implement and use doubly-linked lists for freeing up memory blocks 2025-12-17 16:37:10 +06:00
Cacodemon345
215c5719ad Add some stuff that got missed in ARM64 NDR changes 2025-11-05 00:30:11 +06:00
OBattler
98bb4950f8 Revert back to the old code on x64. 2025-11-04 19:17:00 +01:00
OBattler
3749b25c83 Revert the x64 changes. 2025-11-04 19:11:55 +01:00
Cacodemon345
93d478691f Second take on fixing ARM64 MMX opcodes 2025-11-04 17:22:50 +06:00
Cacodemon345
c00a82c58c Reapply "Merge pull request #6172 from Cacodemon345/armfixes-2"
This reverts commit 5577efe301.
2025-11-04 17:03:27 +06:00
Cacodemon345
5577efe301 Revert "Merge pull request #6172 from Cacodemon345/armfixes-2"
This reverts commit 5bfa69f3da, reversing
changes made to a54e33bf04.
2025-09-17 22:52:34 +06:00
Cacodemon345
cc7ca6c652 Cleanups 2025-09-15 19:16:40 +00:00
Cacodemon345
fed75595da Disable unrolling optimizations on ARM64 2025-09-15 19:09:06 +00:00
Cacodemon345
7ac4b8de3a Revert some changes 2025-09-15 17:39:22 +00:00
Cacodemon345
0a22140c70 Try for some fixes 2025-09-15 15:56:00 +00:00
Cacodemon345
fe28a8bb62 Disable unrolling for now 2025-09-15 11:47:03 +00:00
Cacodemon345
1d8877fba7 Progress on ARM64 MMX opcodes 2025-09-15 09:19:40 +00:00
Cacodemon345
d824fc36df Yet more logging 2025-09-15 12:34:34 +06:00
Cacodemon345
97ab7a8ce8 More warning fixes 2025-09-15 11:38:43 +06:00
Cacodemon345
4735998b8a Warning fixes 2025-09-15 11:38:43 +06:00
Cacodemon345
6229607277 Temp MMX debugging logs 2025-09-15 11:38:43 +06:00
Cacodemon345
15a3df6135 Fix PACK* recompiled instructions on ARM64 2025-09-15 11:38:43 +06:00
Cacodemon345
ffed72f823 NDR (AArch64): Fix ismmx value assignment 2025-09-15 11:38:42 +06:00
Jasmine Iwanek
1488097c7b Reenable MMX opcodes on ARM new dynarec 2025-09-15 11:38:42 +06:00
Jasmine Iwanek
6de981363e Use SQXTUN instead of UQXTN in PACKUSWB on arm64 2025-09-15 11:38:42 +06:00
starfrost013
57ae731e22 Goodbye, 32-bit 2025-09-14 01:32:41 +01:00
OBattler
af0498569c All the changes. 2025-07-21 06:07:34 +02:00
Cacodemon345
67f4ec6075 x64 NDR: Guard fatals behind RECOMPILER_DEBUG 2025-07-10 01:38:56 +06:00
Cacodemon345
aafd2f22f5 NDR: For barrier micro-ops, lazily mark written registers instead of iterating
Also remove some dead code in there.

4-5% more improvement observed.
2025-07-10 01:38:56 +06:00
Cacodemon345
864e01b0e2 x64 NDR: Disable all register-related fatals
1% lows are much more improved than before
2025-07-10 01:38:56 +06:00
Cacodemon345
0446e3c3f1 Optimize NDR uop_CALL_INSTRUCTION_FUNC by loading the fetchdat in one uOP instead of two
Another 3-5% NDR improvement noticed on the WOLF3D MAPEDIT idle loop as a result.
2025-07-10 01:38:55 +06:00
Cacodemon345
5584eb31a4 Shift IREG_FPU_TOP to end 2025-07-10 01:38:55 +06:00
Cacodemon345
bad1813b4b New dynamic recompiler register optimizations
1. Register enums now implicitly start from 0, instead of explicitly.
2. Removed unused `acycs` enum.
3. Volatile registers are now at the end of the list.
3. Make `codegen_reg_mark_as_required` function only handle registers after IREG_EBX and before any volatile registers.

3-5% performance improvement observed on Linux.
2025-07-10 01:38:55 +06:00
Jasmine Iwanek
3a26b9d46b Many warning fixes 2025-06-28 23:54:07 -04:00
OBattler
b3147ee473 LOCK instruction: ensure it is always illegal on opcodes 90h and ECh. 2025-05-18 02:20:18 +02:00
OBattler
30d7c8f51c The recently introduced x86_64 variant of host_x86_MOV32_REG_ABS() was allocating the wrong number of bytes. 2025-05-17 22:56:15 +02:00
OBattler
ddd271f6ee Honore the fixed bits of flags when pushing them to the stack, fixes #5093. 2025-05-17 21:02:06 +02:00
Cacodemon345
b179955a12 x64 NDR: Avoid pushes/pops for host_x86_MOV32_REG_ABS 2025-05-10 12:57:27 +06:00
OBattler
1dd460e9a4 x86_64 new recompiler: properly handle cases where pccache is not within 2 GB of the beginning of the RAM array. 2025-05-10 06:22:56 +02:00
Cacodemon345
e076c1051d Fix x87_op being outside of structure, fixing crashes in ARM64 NDR 2025-04-26 23:23:34 +06:00
OBattler
8790395a05 Fix the FXSAVE/FXRSTOR instructions. 2025-04-22 09:13:38 +02:00
OBattler
ba19b8af89 x86_64 new recompile: fix registers clean-up on block exit. 2025-04-20 23:19:17 +02:00
OBattler
e2f8a58d95 Fix the LxS fix on the new recompiler. 2025-04-10 01:08:21 +02:00
OBattler
3b5966eb46 LDS/LES/LFS/LGS/LSS: Fix segment wraparounds in 16-bit address mode. 2025-04-07 06:03:19 +02:00
OBattler
04247b3c25 Both recompilers: Temporarily disable recompilation of exactly four memory versions in 32-bit address move of opcode C6h (8-bit MOV immediate) because they currently break NT 3.x NTVDM, fixes #5038. 2025-04-01 06:36:16 +02:00
Cacodemon345
94cf5d59a2 host_x86_MOV8_REG_ABS: Avoid more fatals 2025-03-28 22:35:56 +06:00
OBattler
67f0e95740 Fixed an off by 1 error in the new recompiler. 2025-03-19 00:24:13 +01:00
OBattler
79134f3b21 Assorted Cyrix (and Codegen opcode Mod R/M passing table) fixes - fixes Windows 98 SE on Cyrix 6x86's with power management enabled. 2025-03-17 03:40:52 +01:00
Cacodemon345
6b55b2383a Misc NDR changes
Force NDR on ARMv7/ARM64

Make GCC/Clang not use anything in the red zone

Compile with `-fno-omit-frame-pointer`
2025-03-02 23:14:10 +06:00
Cacodemon345
f290cc0173 x64 NDR: Fix crashes/undefined behaviour with 2+ GB of allocated RAM 2025-03-01 22:31:10 +06:00