Ryan Houdek
229151f878
FEXCore: Have the Syscall IR op jump to the dispatcher
...
Have it treated as a block terminator IR and instead of doing
syscall+exitfunction, just do syscall and jump in to the dispatcher.
This is necessary for code invalidation and reuse for code that is stuck
in long running syscalls. We'll need to do something similar for thunks
later, although the recursive nature of thunk+callback can make that a
little squirrely.
2026-09-21 14:46:34 -07:00
Ryan Houdek
5006e02498
Dispatcher: Fixes range check of InterruptFaultPage
...
This one wasn't updated and it's right at the limit of what it can
handle.
2026-09-21 14:45:56 -07:00
Ryan Houdek
9c871c51c9
Config: Add check to see if a config option is default
...
Either the option missing entirely or it's set to the default.
2026-09-20 14:58:48 -07:00
Ryan Houdek
a0ba36eb1b
SharedCodeBuffer: Skip VMA naming when JITSymbols are enabled
...
For some reason `perf top` prefers VMA names over perf symbols. So
disable them when any JIT symbol option is enabled. Breaks WTF tracking
for those buffers but because it's debug, we kind of have to.
2026-09-18 17:01:26 -07:00
Ryan Houdek
69a3da4f31
JITSymbols: Grab PID from the frontend
...
This is necessary to get JIT Symbols working under arm64ec/wow64
2026-09-18 17:00:17 -07:00
Ryan Houdek
1405755a31
Merge pull request #5968 from javelina-pkwy/feat/rdrand-fallback
...
Add software fallback for RDRAND/RDSEED
2026-09-18 13:33:09 -07:00
Pierre-Loup A. Griffais
7a82b07bfd
DiskCache: optional memory buffer for faster lookups
...
May reserve a tiny area for small blocks in general, but will also be useful
for LuaJIT in anon-diskless mode.
2026-09-17 21:21:28 -07:00
Justin Becker
54b178d151
InstrCountCI: Bump disk cache version and regen
2026-09-17 11:25:52 -07:00
Justin Becker
26f0e5017f
Fix Linux test failure, and formatting
2026-09-17 11:25:38 -07:00
Justin Becker
c91c6efc87
Software fallback for RDRAND/RDSEED
2026-09-16 16:08:40 -07:00
Ryan Houdek
37eaff93cb
FEXCore: Migrate internal DiskCache header to internal
...
Leave the smaller public header that is required to get the current
DiskCache version variable still.
NFC
2026-09-15 19:43:27 -07:00
Simon Scherer
93def42061
OpcodeDispatcher: Fix RestoreX87State to rotate MM regs by Top of Stack
2026-09-15 16:38:36 -07:00
Ryan Houdek
0309bc3d90
Frontend: Removes DST_RAX subflag
...
Shifts the last subflag down
2026-09-15 15:00:03 -07:00
Ryan Houdek
1523142540
OpcodeDispatcher: Removes DST_RAX from CMP/TEST
2026-09-15 15:00:03 -07:00
Ryan Houdek
5743282944
OpcodeDispatcher: Removes DST_RAX from SBB
2026-09-15 15:00:02 -07:00
Ryan Houdek
9d936a8989
OpcodeDispatcher: Removes DST_RAX from ADC
2026-09-15 15:00:02 -07:00
Ryan Houdek
1e95181b34
OpcodeDispatcher: Removes DST_RAX from ALUOp operations.
2026-09-15 15:00:01 -07:00
Ryan Houdek
d85f5b4398
OpcodeDispatcher: Remove DST_RAX from LODS
...
This was already handled.
2026-09-15 15:00:01 -07:00
Ryan Houdek
ed6d7092a2
OpcodeDispatcher: Removes DST_RAX from moffset instructions
...
I had already removed the use here.
2026-09-15 15:00:01 -07:00
Ryan Houdek
a164315b7d
OpcodeDispatcher: Removes DST_RAX from BCD ops
...
These already didn't use the flag actually.
2026-09-15 15:00:00 -07:00
Ryan Houdek
e8084e3f11
OpcodeDispatcher: Remove DST_RAX from FNSTSW
2026-09-15 15:00:00 -07:00
LC
fd7b749e47
Merge pull request #5959 from Sonicadvance1/246
...
FEXCore: Moves crc32 helper to a shared location
2026-09-15 16:35:43 -04:00
Ryan Houdek
6efbc2ba0b
FEXCore: Moves crc32 helper to a shared location
2026-09-15 13:01:53 -07:00
LC
f2e8f580a4
Merge pull request #5956 from Sonicadvance1/244
...
Frontend: Remove SRC_RCX subflag
2026-09-15 15:26:18 -04:00
Ryan Houdek
cad4cb9b64
Frontend: Remove SRC_RCX subflag
2026-09-15 11:56:10 -07:00
Ryan Houdek
ea263166c5
OpcodeDispatcher: Removes SRC_RCX from shift/rotate ops
...
These are all similar to each other with similar code. Hit them at the
same time.
2026-09-15 11:56:09 -07:00
Ryan Houdek
3f66c6754d
OpcodeDispatcher: Remove SRC_RCX from LOOP
2026-09-15 11:56:09 -07:00
Ryan Houdek
242f17eca9
OpcodeDispatcher: Remove SRC_RCX from SHLD/SHRD
2026-09-15 11:56:09 -07:00
Pierre-Loup A. Griffais
3f8f886f65
Frontend: patch cmp imm8 for cache
...
Usually imm8 seem more likely to be a function of the code around them, but
this one seems used by Mono for varying data over execution of same code.
Maybe an ID of some kind.
2026-09-14 21:57:54 -07:00
Pierre-Loup A. Griffais
56a4f11ddb
Frontend: avoid cache patching for certain cases with data unlikely to change
...
The MOV heuristic shaves off a ton of patch sites (storage and overhead on
Lookup) where the data doesn't seem to change in practice.
2026-09-14 21:52:14 -07:00
Pierre-Loup A. Griffais
1695d742b1
DiskCache: on Store, make unaccounted-for DataMasks non-fatal
...
By going through relocations before computing/hashing extents, we can simply
undo datamasks that haven't been claimed by the backend instead of failing
the whole Store. They fall back to being part of the normal hashed extents.
2026-09-14 21:52:06 -07:00
Pierre-Loup A. Griffais
5efc3212d2
JIT: Let DiskCache patch ValidateCode guest CRC
...
So we can cache blocks with FullSMCTracking finally.
2026-09-14 21:51:59 -07:00
Ryan Houdek
7917f43720
Frontend: Removes SRC_RAX subflag
2026-09-14 16:03:31 -07:00
Ryan Houdek
58e0e1a03a
OpcodeDispatcher: Removes SRC_RAX from XCHG
2026-09-14 16:03:31 -07:00
Ryan Houdek
8b469313f9
OpcodeDispatcher: Fixes hardcoded register in StoreGPRResultWithZExtSemantics
...
Oops
2026-09-14 15:47:32 -07:00
Ryan Houdek
5f8a7a18f0
OpcodeDispatcher: Removes SRC_RAX from CQO/CDQE
2026-09-14 15:40:03 -07:00
Ryan Houdek
b3fe634c8b
OpcodeDispatcher: Remove SRC_RAX from moffset MOV
2026-09-14 15:40:03 -07:00
Ryan Houdek
6f395885cb
OpcodeDispatcher: Removes SRC_RAX from SCAS
2026-09-14 14:56:36 -07:00
Ryan Houdek
8cfbc44482
OpcodeDispatcher: Removes SRC_RAX from STOS
2026-09-14 14:54:58 -07:00
Ryan Houdek
4731a5ace4
OpcodeDispatcher: Removes DST/SRC_RAX from SALC
2026-09-14 14:40:23 -07:00
Ryan Houdek
8201228c0d
OpcodeDispatcher: Removes SRC_RAX from clzero
2026-09-14 14:34:52 -07:00
Ryan Houdek
4170d9d50c
OpcodeDispatcher: Removes SRC_RAX from CPUID
2026-09-14 14:33:40 -07:00
Ryan Houdek
cb9eb00339
Frontend: Remove DST_RDX flag
...
Easiest initial one to remove. Adds a helper that matches behaviour of
previous StoreResult around zero-extend mechanics to make things easier.
2026-09-14 10:55:44 -07:00
Pierre-Loup A. Griffais
aa9ae27932
Frontend: mark more (all?) imm32s for DiskCache patching
...
Including big C7 who was very prevalent.
2026-09-13 17:37:49 -07:00
Pierre-Loup A. Griffais
f9623af073
Frontend: mark a bunch of disp32s for DiskCache patching
...
Only when at the end for now, could improve with multi-field tracking.
2026-09-13 17:36:42 -07:00
Ryan Houdek
4b652eb91b
Merge pull request #5947 from javelina-pkwy/feature/vnni
...
Implement ISA extension AVX-VNNI
2026-09-11 17:41:32 -07:00
Ryan Houdek
f18599d097
Merge pull request #5943 from cjacek/wow64-chpe
...
WOW64: Use CHPEv2 for suspend and exception support
2026-09-10 16:07:11 -07:00
Justin Becker
89a13cd5fd
AVX-VNNI
2026-09-10 15:56:03 -07:00
Ryan Houdek
91bbce5a96
FEXCore/OpcodeDispatcher: Fixes syscall instruction on Linux
...
I forgot on Linux by default we didn't have the syscall instructions
count as block end. Change this so that it counts as block end now.
This has the additional benefit that now the frontend needs to modify
the RIP manually as well which is fine as it's what arm64ec and wow64
does.
Also add back the UnimplementedOp in RDPID that accidentally got caught
up. Also increment DiskCache version as both changes will change
codegen.
Fixes #5942
2026-09-10 09:50:07 -07:00
Jacek Caban
af04940466
WOW64: Use CHPEv2 for suspend and exception support
...
CHPE_V2_CPU_AREA_INFO is the mechanism used on ARM64EC to coordinate
thread state, suspension and exception handling with the kernel.
It's typically set up by ntdll for ARM64EC processes, but Wine uses
the TEB pointer without restricting where it's coming from. Set
ChpeV2CpuAreaInfo in FEX WOW64 thread initialization.
Fixes 32-bit debug events and a number of CPU context handling tests.
Reduces the number of wineserver round-trips required for suspend and
avoids the need for remote thread creation for inter-process suspends.
2026-09-10 15:30:51 +02:00