Ryan Houdek
2291c5b230
OpcodeDispatcher/Vector: Make sure MXCSR is masked
...
We don't support the exception bits, make sure these are masked off so
spurious exception checks don't break.
2026-03-28 17:47:55 -07:00
Ryan Houdek
f78e194cf7
Linux/GuestFrames: Ensure MXCSR is saved and restored on signal
...
This was causing an unfortunate set of circumstances where Dark Souls
III was modifying MXCSR and we weren't saving it, cause the value to change
from 0x9fc0 to 0.
This "enabled" float exceptions by unmasking the exception masks in
MXCSR. This in turn had Dark Souls III's `expf` function to fault out,
as it checks if the MXCSR exception masks are set or not for determining
if underflow should assert or not.
Wow64/arm64ec has a similar problem where it always sets back to default
on signal. Which means game lose DAZ, but I'm not fixing that bug right
now.
Fixes #5391
2026-03-28 17:44:45 -07:00
Ryan Houdek
f0854a16fe
Allocators: Remove legacy NOREPLACE handling
...
We needed this handling on old kernels that didn't understand the
NOREPLACE flag. We no longer support kernels this old, so remove some of
this vestigial code.
2026-03-26 13:36:29 -07:00
Ryan Houdek
6bd476fb03
Merge pull request #5395 from lioncash/cpuid
...
CPUID: Add basic stub handling for AVX10 info
2026-03-25 17:16:24 -07:00
Lioncache
b9c0af7c3b
CPUID: Add basic handling for AVX10 info
...
Just gets the feature bit handling stuff in place for various
facilities, so it can be easily expanded in the future.
2026-03-25 19:18:05 -04:00
Tony Wasserka
5149ebc70e
Merge pull request #5389 from Sonicadvance1/124
...
SMCTracking: Remove relocation log
2026-03-24 11:12:10 +01:00
Ryan Houdek
e92a6a5803
SMCTracking: Remove relocation log
...
Holy jeez does this thing spam.
2026-03-23 19:55:11 -07:00
Ryan Houdek
6da963a695
Merge pull request #5394 from neobrain/fix_eager_relocation_parsing
...
LinuxSyscalls: Don't try to parse relocations unless ELF parsing succeeded
2026-03-23 14:01:20 -07:00
Tony Wasserka
2a74489858
LinuxSyscalls: Don't try to parse relocations unless ELF parsing succeeded
2026-03-23 17:47:47 +01:00
Ryan Houdek
65a436ca98
Merge pull request #5392 from neobrain/fix_code_cache_dupfd
...
LinuxSyscalls: Re-open file descriptors for parsing ELF headers
2026-03-23 09:42:45 -07:00
LC
bc533c8050
Merge pull request #5393 from neobrain/fix_code_cache_glibc_assert
...
CodeCache: Fix glibc debug mode assertion
2026-03-22 14:07:27 -04:00
Tony Wasserka
fd6cea4698
CodeCache: Fix glibc debug mode assertion
...
If begin == end, the first vector::erase() call would invalidate the begin
iterator.
2026-03-22 10:11:53 +01:00
Tony Wasserka
a1aa1658ec
LinuxSyscalls: Re-open file descriptors for parsing ELF headers
...
File descriptors returned by dup() share state with the original FD, so we
need to use open() to create a fully independent object.
Fixes #5379
2026-03-22 10:09:37 +01:00
LC
5c4c468d13
Merge pull request #5387 from Sonicadvance1/122
...
github: Stop running unittests always on build failure
2026-03-20 00:58:09 -04:00
Ryan Houdek
69ef1658cc
github: Stop running unittests always on build failure
...
This was taking too much time.
2026-03-19 20:08:10 -07:00
Ryan Houdek
8c72aa76a0
Merge pull request #5385 from lioncash/ilog
...
MemoryOps: Collapse duplicate add/sub in Memset
2026-03-19 18:59:17 -07:00
Lioncache
928a932a43
MemoryOps: Collapse duplicate add/sub in Memset
...
We can just use ilog2 to deduplicate this a bit.
2026-03-19 21:34:03 -04:00
Ryan Houdek
83601055dc
Merge pull request #5368 from neobrain/feature_cc_elf_relocations
...
CodeCache: Support ELF relocations
2026-03-19 18:10:09 -07:00
Ryan Houdek
68480f6e43
Merge pull request #5356 from lioncash/mops
...
MemoryOps: Drop MOPS handling into place for MemSet/MemCpy
2026-03-19 18:04:14 -07:00
Ryan Houdek
42291540ab
Merge pull request #5343 from pmatos/f64-sin-cos-tan
...
JIT-inline F64SIN, F64COS, and F64TAN for reduced precision x87 path
2026-03-19 17:51:50 -07:00
LC
194eb69838
Merge pull request #5384 from Sonicadvance1/120
...
Cmake: Default to release builds with a message
2026-03-19 19:42:39 -04:00
Ryan Houdek
c1d27fa453
Cmake: Default to release builds with a message
...
People keep forgetting to set this and have a worse experience.
Default to a Release build, which ensures optimizations are enabled and
assertions are disabled.
2026-03-19 16:25:40 -07:00
Paulo Matos
9d5f7caa79
instcountci: JIT-inline F64SIN, F64COS, and F64TAN for reduced precision x87 path
2026-03-19 19:18:02 +01:00
Paulo Matos
a1d78dceb0
asm_tests: JIT-inline F64SIN, F64COS, and F64TAN for reduced precision x87 path
2026-03-19 19:18:02 +01:00
Lioncache
2bcf435e0a
MemoryOps: Handle overlapping memcpy
2026-03-19 14:13:36 -04:00
Paulo Matos
30e853305d
JIT-inline F64SIN, F64COS, and F64TAN for reduced precision x87 path
2026-03-19 18:58:46 +01:00
Lioncache
600f4bb2b6
unittests: Add overlapping tests for MemCpy
2026-03-19 11:55:02 -04:00
Lioncache
5868814c91
MemoryOps: Drop in MOPS handling for MemCpy
...
With the MOPS featureset dropped in, we can also accelerate memcpy paths
on hardware that supports it.
2026-03-19 11:55:02 -04:00
Lioncache
e862f8f86c
unittests: Add specific paths for MOPS
2026-03-19 11:55:02 -04:00
Lioncache
85c1ecd035
MemoryOps: Handle inline values in MemSet() MOPS path
...
Lets us handle potential inline memset values.
Also fixes up the STOS tests to actually ensure all values
in the verification step pass.
2026-03-19 11:55:02 -04:00
Lioncache
68ad448672
MemoryOps: Drop 8-bit memset support into MemSet()
...
Can be further expanded to handle other optimization cases, but this
kicks it off for forward direction memsets at least.
2026-03-19 11:55:02 -04:00
LC
c18fb3cb78
Merge pull request #5382 from Sonicadvance1/118
...
FEXpidof: Fixes another missing std::filesystem throw
2026-03-18 18:07:08 -04:00
Tony Wasserka
53702f989c
Merge pull request #5362 from Sonicadvance1/108
...
FEX: Disable THP on key allocations that consume memory
2026-03-18 21:04:15 +01:00
Ryan Houdek
c547b1bec3
FEX: Disable THP on key allocations that consume memory
...
Disables THP on some key locations that are fairly sparse
- rpmalloc
- This is the big one as this allocates some heavy sparse buffers.
- CallRet stacks
- These get in the hundreds of megabytes, while not being sparse they
trend towards only using a handful of pages and ballooning to 2MB
per thread is quite heavy.
- Lookup cache
- L1 specifically gets hit here which adds a decent chunk of overhead
due to sparsity.
Win32 for all of these also aren't handled, but that will need to be a
followup.
2026-03-18 12:15:39 -07:00
Ryan Houdek
740350c8ea
FEXpidof: Fixes another missing std::filesystem throw
...
Turns out std::filesystem::exists throws as well if there was an
underlying OS API failure.
2026-03-18 12:10:22 -07:00
Tony Wasserka
9f9b20eac0
Merge pull request #5378 from Sonicadvance1/117
...
SMCTracking: Move read check up for ELF parsing
2026-03-18 12:04:23 +01:00
Tony Wasserka
c67ffb82a8
Core: Support reporting blocks that are uncacheable due to unhandled ELF relocations
2026-03-18 11:59:44 +01:00
Tony Wasserka
1ea24f3d6c
LinuxSyscalls: Enable delayed code cache load for ELF files
...
Specifically this is needed if any ELF relocations cover read-only code
sections, which is indicated in the ELF headers via DT_TEXTREL/DF_TEXTREL.
2026-03-18 11:59:41 +01:00
Tony Wasserka
226bd51afe
LinuxSyscalls: Implement delayed cache load for binaries that require ELF/PE relocations
2026-03-18 11:58:26 +01:00
Tony Wasserka
293568be36
FEXOfflineCompiler: Apply relocations to loaded ELF binaries
2026-03-18 11:57:38 +01:00
Tony Wasserka
152fe81d16
LinuxSyscalls: Parse and provide ELF relocation information to the JIT
2026-03-18 11:57:28 +01:00
Ryan Houdek
494dd64c50
Merge pull request #5372 from CxnYusuf/add-fisttp-tests
...
Tests/ASM: Add FISTTP unit tests for 16, 32, 64-bit as well as negatives
2026-03-17 16:55:56 -07:00
Ryan Houdek
56de0d1ab4
Merge pull request #5377 from Sonicadvance1/116
...
FEXServer: Try both fusermount and fusermount3
2026-03-17 16:55:42 -07:00
Ryan Houdek
73c1f4cc54
Merge pull request #5374 from neobrain/fix_gcc_build
...
Fix most GCC build issues
2026-03-17 16:55:23 -07:00
Ryan Houdek
6a6a82385e
Merge pull request #5381 from neobrain/fix_jit_restarts
...
JIT: Reset relocations on restart
2026-03-17 13:47:42 -07:00
Tony Wasserka
fc8ef0e723
JIT: Reset relocations on restart
2026-03-17 21:37:01 +01:00
Ryan Houdek
de11c05d2a
Merge pull request #5380 from neobrain/fix_cc_32bit_constants
...
Arm64Emitter: Disable 32-bit constant optimization when NOP-padding is requested
2026-03-17 13:34:20 -07:00
Tony Wasserka
addbc8cad8
Arm64Emitter: Disable 32-bit constant optimization when NOP-padding is requested
...
Code caching requires this even for simple libraries like libdl.so (as observed
in the 32-bit build of Super Meat Boy).
2026-03-17 21:06:13 +01:00
Ryan Houdek
63e37b7cbb
SMCTracking: Move read check up for ELF parsing
2026-03-17 12:43:54 -07:00
Ryan Houdek
9ee329034f
FEXServer: Try both fusermount and fusermount3
...
Apparently some distros don't symlink these, so try both with the newer
fusermount3 going first as its the common path now.
Fixes #5375
2026-03-17 12:36:49 -07:00