Commit Graph
15124 Commits
Author SHA1 Message Date
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
LC 82510eb452 Merge pull request #5955 from Sonicadvance1/243
Removes subflag SRC_RAX
2026-09-15 00:02:24 -04: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
LC 3af19acdda Merge pull request #5954 from Sonicadvance1/242
Frontend: Remove DST_RDX flag
2026-09-14 14:51:11 -04: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
LC 98516b539e Merge pull request #5949 from Plagman/plagman/more_necropatching_mr
DiskCache: patch a bunch of disp32s in anon code
2026-09-14 03:17:55 -04:00
Pierre-Loup A. Griffais c18deb0d0f InstcountCI: Update 2026-09-13 17:41:53 -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
LC 5d6609a6b1 Merge pull request #5950 from Sonicadvance1/240
InstcountCI: Add big moffset instructions
2026-09-12 22:42:11 -04:00
Ryan Houdek 82e014cf5c InstcountCI: Add big moffset instructions
Found out these weren't testing 64-bit immediates, so make sure it is.
2026-09-12 18:11:15 -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 480308c021 Bump DiskCache version 2026-09-10 15:59:52 -07:00
Justin Becker 89a13cd5fd AVX-VNNI 2026-09-10 15:56:03 -07:00
LC 794a11833d Merge pull request #5944 from Sonicadvance1/239
FEXCore/OpcodeDispatcher: Fixes syscall instruction on Linux
2026-09-10 13:47:55 -04:00
Ryan Houdek 200f59ab70 InstcountCI: Update 2026-09-10 09:53:54 -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
LC e431bfe0fa Merge pull request #5941 from Plagman/plagman/relaxrelocfilter_mr
DiskCache: allow relocations within the same ELF image
2026-09-10 02:49:57 -04:00
LC 3397eb9b80 Merge pull request #5940 from javelina-pkwy/fix/vulkan-proc-addr
Thunks: allow self-lookups in vkGetDeviceProcAddr and vkGetInstanceProcAddr
2026-09-10 01:42:44 -04:00
Pierre-Loup A. Griffais b5ac608fc5 DiskCache: allow relocations within the same ELF image
We would check the FileID of mapped sections, but BSS is an anonymous mapping.
Grab the ELF image extents when we parse the file, and add an additional check
to the relocation filter to bail out additional relocs if we know that size.
2026-09-09 22:39:50 -07:00
Justin Becker 8b01071e05 Woops: formatting 2026-09-09 16:59:15 -07:00
Justin Becker a9403db9a5 Fix preexisting disown bug 2026-09-09 16:53:03 -07:00
Justin Becker d96e48e246 Fix vulkan proc addr bug in XeSS 2026-09-09 15:39:22 -07:00
LC 86f363d202 Merge pull request #5939 from javelina-pkwy/fix/vulkan-bump-descriptor-heap
Bump Vulkan-Headers to 1.4.362 and update generated Vulkan thunks
2026-09-09 17:28:20 -04:00
LC 208e9c31ea Merge pull request #5937 from Sonicadvance1/238
Threads: Support setting thread names through creation
2026-09-08 22:56:09 -04:00
Ryan Houdek 516ce6b15c Threads: Support setting thread names through creation
Gives the DiskCache a thread name so it's easier to find.
2026-09-08 19:11:52 -07:00
LC 7813c7aaa7 Merge pull request #5936 from Sonicadvance1/237
X86Tables: Give REX2 a name
2026-09-08 19:40:43 -04:00
Ryan Houdek f32fe56bb3 X86Tables: Give REX2 a name
Obviously unsupported but we can name the thing at least.
2026-09-08 15:25:53 -07:00
Justin Becker 27d8d57984 Bump Vulkan headers for thunk gen 2026-09-08 14:49:24 -07:00
LC 184c9522e1 Merge pull request #5935 from Sonicadvance1/236
HostFeatures: Reenable 3DNow! now that it is fixed
2026-09-08 16:45:34 -04:00
Ryan Houdek f79de3c3f9 HostFeatures: Reenable 3DNow! now that it is fixed
With PR #5863, the bug that was breaking rendering in d3dx9 and Fallout
New Vegas is now resolved. This means we can now enable the feature by
default again as all known bugs are resolved.

With 3DNow! and full x87 softfloat enabled in FO:NV inside of the starting house. The game is
running at around 40-43FPS, doing ~22.6 to 34 million soft float
operations per second.

With 3DNow! disabled the game is running 30-31FPS, doing ~24-50 million
softfloat operations per second.

In both cases if x87 reduced precision is enabled then the game is
running at around 108-113FPS with zero softfloat instances getting
counted. Can't see the performance difference at that speed.
2026-09-08 13:12:14 -07:00
Ryan Houdek 395b132f34 Docs: Update for release FEX-2609 FEX-2609 2026-09-07 23:42:35 -07:00
Ryan Houdek 566a5e266d Merge pull request #5934 from Plagman/plagman/multi_key_drifting_mr
DiskCache: support multiple entries per lookup key
2026-09-07 23:38:31 -07:00
Pierre-Loup A. Griffais cc5686de37 InstcountCI: Update 2026-09-07 22:51:31 -07:00
Pierre-Loup A. Griffais 049c932675 DiskCache: support multiple entries per lookup key
The LookupKey based on data available at Lookup time gives a list of possible
candidate entries, which may have different guest code sizes/footprints.

If only one candidate, it's stored in-line in the map like before - if we grow
past that, an additional (multi)map is allocated, sorted by footprint.

The footprint sorting lets us reduce the amount of hashes performed at Lookup
to the strict minimum.

Anon entries keys are based on a limited size decoded prefix, so this is an
important part of geting the best hit rate possible out of all the other work
with anon keys, as there's often multiple candidates with the same prefix.

Cap the max amount of entries per bucket to limit growth.
2026-09-07 22:50:22 -07:00
LC 84fabf4ed8 Merge pull request #5933 from Sonicadvance1/235
FEXCore/Allocator: Support naming VMA regions from rpmalloc
2026-09-07 23:36:30 -04:00