Tony Wasserka
b5b8ff01d5
CodeCache: Move LibraryJITNaming and GDBSymbols checks to Core
2025-09-11 17:03:50 +02:00
Tony Wasserka
6c86ffdeb7
Core: Remove redundant nullptr check
2025-09-11 17:03:50 +02:00
Tony Wasserka
70a1d92d9f
CodeCache: Drop ComputeCodeMapId member function
2025-09-11 17:03:50 +02:00
Tony Wasserka
0749477eb9
CodeCache: Introduce revamped interfaces
2025-09-11 17:03:50 +02:00
Tony Wasserka
db601d333b
Core: Rename and move AOTIR.cpp and AOTIR.h
...
The new names better reflect the contents after recent/upcoming API changes.
2025-09-11 10:49:07 +02:00
Tony Wasserka
af1c2cccac
Rename AOTIR.cpp to CodeCache.cpp
2025-09-11 10:49:07 +02:00
LC
30dd9ed267
Merge pull request #4863 from Sonicadvance1/more_cpuid
...
CPUID: Adds new CPU product names that exist
2025-09-10 23:09:33 -04:00
Ryan Houdek
58b5620f97
FEXCore: Fixes OOB access on x87 reduced precision loads
...
x87 80-bit loads, both BCD and regular tword were loading 128-bits of
data when reduced precision was enabled. This was an oversight from the
previous fix a while ago.
Adds a specific reduced precision test for this, and updates the current
test to ensure stores are still tested as well.
2025-09-10 19:19:55 -07:00
Ryan Houdek
327b62ea45
CPUID: Adds new CPU product names that exist
2025-09-10 11:51:04 -07:00
Ryan Houdek
91c6d693df
Merge pull request #4860 from bylaws/susprip
...
JIT: Check for suspend interrupts at back-edges
2025-09-10 10:29:37 -07:00
Tony Wasserka
fee9e91c4f
Core: Drop support for TSO auto migration
2025-09-10 15:36:23 +02:00
Billy Laws
93096c27f9
Dispatcher: Fix FABI_F32_I16_F80_PTR argument size
...
This takes an f80 as input and returns an f32. A copy-paste error had
this truncating the input float if !TMP_ABIARGS.
2025-09-10 03:14:30 +01:00
Billy Laws
d2714f3338
JIT: Check for suspend interrupts at back-edges
...
Avoids most cases where an infinite loop could lead to suspend interrups
never getting checked.
2025-09-09 22:35:52 +01:00
Billy Laws
b917db34c7
OpcodeDispatcher: Emit RIP metadata for RIP-setting instructions
2025-09-09 22:35:52 +01:00
Billy Laws
d8c615ec65
OpcodeDispatcher: Only flush MMX registers on MMX -> x87 transitions
...
Flushing other regs is not necessary, and breaks any ConvertNZCVToX87 use
which relies previously saved NZCV values as the flag-setting NZCV op after
the save could trigger a flush of NZCV.
2025-09-09 21:29:12 +01:00
Billy Laws
154dd46b6d
OpcodeDispatcher: Don't assert on invalid ALU op encoding
2025-09-09 19:11:05 +01:00
Lioncache
f9c15fa0a5
Frontend/OpcodeDispatcher: Remove unused headers
...
Removes assorted unused headers and forward declarations.
2025-09-09 00:28:05 -04:00
Lioncache
a7989eb79f
FEXCore/Allocator: Remove unused headers
...
Reveals some more indirect inclusions.
2025-09-08 22:53:09 -04:00
Paulo Matos
14256e7a90
Fix mapping for VS and VC condition codes
...
This doesn't seem to be generated in-code therefore it's not fixing any
existing bug, but fixes the mapping for future uses of the condition code.
2025-09-08 11:41:15 +02:00
Ryan Houdek
bd0cae9298
Merge pull request #4825 from bylaws/unityomg
...
Frontend: Force acq/rel semantics for known Unity ringbuffer offsets
2025-09-06 17:09:13 -07:00
Ryan Houdek
6ae94581bb
Merge pull request #4821 from bylaws/monof
...
Frontend: Fix tailcall handling when mono hacks are enabled
2025-09-06 16:51:08 -07:00
Ryan Houdek
a804cb5d07
Merge pull request #4833 from lioncash/ptr
...
CPUBackend: Remove unused variable in CheckCodeBufferUpdate
2025-09-04 11:20:42 -07:00
Ryan Houdek
5e467c737f
Merge pull request #4822 from bylaws/ecent
...
Dispatcher: Move the EC entrypoint check prior to the L1 lookup
2025-09-04 11:19:29 -07:00
Lioncache
4e83ca67f5
CPUBackend: std::move shared_ptr where applicable
...
Very minor, just avoids churning reference count increments and decrements.
2025-09-03 21:20:58 -04:00
Lioncache
76e6c6f8ea
CPUBackend: Remove unused shared_ptr in CheckCodeBufferUpdate()
...
Just gets rid of an unused variable.
2025-09-03 21:19:16 -04:00
Ryan Houdek
343a529e63
Merge pull request #4824 from bylaws/tf2
...
OpDispatcher: Force a recheck of TF after POPF
2025-09-03 15:24:40 -07:00
Ryan Houdek
c6ccc68607
Merge pull request #4823 from bylaws/mbooo
...
Frontend: Always explore fallthrough branches with multiblock
2025-09-03 15:24:29 -07:00
Ryan Houdek
8009f4a6ee
Merge pull request #4820 from bylaws/neg
...
AtomicOps: Reimplement AtomicNeg using 8.1 CAS atomics
2025-09-03 15:23:40 -07:00
Tony Wasserka
e126cecb16
Merge pull request #4818 from lioncash/at
...
General: Replace usages of .at(0) with .data() where applicable
2025-09-03 22:37:50 +02:00
Tony Wasserka
5e19202540
Merge pull request #4816 from lioncash/float
...
F80Fallbacks: Remove unnecessary memset
2025-09-03 22:36:59 +02:00
Billy Laws
06466bac0e
Dispatcher: Drop the L1 lookup
...
This is almost never hit outside of exceptional cases like signals/SMC,
for which other overheads dominate.
2025-09-03 18:26:47 +01:00
Billy Laws
156edcacb2
Dispatcher: Move the EC entrypoint check prior to the L1 lookup
...
Profiling shows this is by far the hottest path, as every DX call will
hit this (as arm64ec functions in a vtable). L2 hits are much rarer and
L1 almost never hits since that is looked up inline in most cases.
2025-09-03 18:26:47 +01:00
Billy Laws
28a1c28cb4
Frontend: Track the raw opcode and use for mono tailcall detection
...
This path was nonfunctional prior to this, as the jump is a group-opcode
which wouldn't be picked up (as Op is rewritten in NormalOp).
2025-09-02 22:42:02 +01:00
Billy Laws
20fcbb9c62
FEXCore: Avoid potential OOB reads, and flag clobbers in ValidateCode
...
An instruction could be on the edge of a page and less than 16 bytes
long.
2025-09-02 22:41:59 +01:00
Billy Laws
d72e121fd4
AtomicOps: Reimplement AtomicNeg using 8.1 CAS atomics
2025-09-02 22:23:14 +01:00
Billy Laws
2c883d7cdc
OpDispatcher: Force a recheck of TF after POPF
...
The dispatcher/block linker will handle this, but if the instruction
following a POPF flag doesn't otherwise trigger one of those the
interrupt would be missed.
2025-09-02 22:21:42 +01:00
Billy Laws
fcba49768c
Frontend: Force acq/rel semantics for known Unity ringbuffer offsets
...
Unity games crash with TSO disabled due to the SPSC GfxDevice
ThreadedStreamBuffer read/write pointer updates missing acq/rel
semantics. Rather than attempting to use heuristics to match cases like
this, which could be overzealous and hit more accesses than necessary, just
target the problem directly as this is consist across 32/64 bit Unity versions
for at least the past 10 years. Gate this behind the existing Unity mono
hacks to avoid false-positives in non-Unity games.
2025-09-02 22:05:22 +01:00
Billy Laws
959af9c3af
Frontend: Always explore fallthrough branches with multiblock
2025-09-02 22:02:53 +01:00
Lioncache
1f756fb386
General: Replace usages of .at(0) with .data() where applicable
...
This is generally more straightforward in cases where bounds checking isn't necessary.
2025-09-02 13:03:37 -04:00
Lioncache
5ebdc01783
F80Fallbacks: Remove unnecessary memset
...
X80SoftFloat instances already initialize zeroed out in the default constructor.
2025-09-02 12:25:03 -04:00
Lioncache
aa29201e00
Dispatcher: Reduce header dependencies
...
Gets rid of some unnecessary dependencies and also resolves some indirect dependencies.
2025-09-02 12:10:05 -04:00
Tony Wasserka
7b1db40d4a
Config: Remove legacy code caching interfaces
2025-09-02 12:06:57 +02:00
Tony Wasserka
dcaa90a855
CodeCache: Remove legacy interfaces
2025-09-02 12:06:52 +02:00
Ryan Houdek
4a71edf7bc
Merge pull request #4811 from pmatos/fix/SPEC_GCC-C-execute-ieee-fp-cmp-8l
...
Fix IEEE 754 unordered comparison detection in x87 floating-point operations
2025-09-01 14:39:59 -07:00
Paulo Matos
3d92c1fb32
Fix IEEE 754 unordered comparison detection in x87 floating-point operations
...
Fix SoftFloat IsNan - custom detection matches IEEE754 semantics.
Sets Invalid Operation flags properly for NaN comparisons.
Fixes: GCC-C-execute-ieee-fp-cmp-8l test
__builtin_isunordered() now returns correct values for both NaN and normal operands
2025-09-01 18:26:48 +02:00
Lioncache
86c2144943
Core: Simplify define in InitCore()
...
Instead of inverting off a separate define, we can combine both checks together.
2025-08-29 11:30:48 -04:00
Lioncache
ee85230db2
Dispatcher: Remove unused IntCallbackReturnAddress member
...
Turns out that this isn't used anymore. Found due to an unused field warning
when moving all public members into the private section.
2025-08-29 11:19:10 -04:00
Lioncache
fde99a8dc1
Dispatcher: Centralize SignalDelegator config creation
...
Since all of the information comes from the Dispatcher, we can have the dispatcher
provide that information. This way we can also eliminate a bunch of now-redundant
public interface members and simplify the config setup within InitCoreImpl().
Conveniently, this also allows making all members of the dispatcher non-public.
2025-08-29 11:19:07 -04:00
Lioncache
2e692a1146
SignalDelegator: Move struct outside of SignalDelegator
...
The name itself is already qualified with SignalDelegator, so this can reasonably be outside the class itself.
This also allows for forward declarations of the config struct
2025-08-29 10:23:03 -04:00
Ryan Houdek
add54b8089
X86Tables: Convert AVX tables to constexpr
...
One set of tables for 128-bit and one set of tables for 256-bit.
This one took a bit longer since I needed to convert a few handlers over
to `Bind`. With this all of our x86 tables are costexpr so they end up
in RO mapped memory which is great.
2025-08-27 14:55:10 -07:00