LC
3df3999138
Merge pull request #4838 from lioncash/dumper
...
IRDumper: Add missing PrintArg for IndexNamedVectorConstant
2025-09-05 13:06:53 -04: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
03c968a8fe
Merge pull request #4831 from lioncash/header
...
IntrusiveIRList/RegisterAllocationData: Remove unused headers
2025-09-04 11:20:14 -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
dfc42fa7c5
IRDumper: Add missing PrintArg for IndexNamedVectorConstant
...
Results in better named output for these.
2025-09-04 12:04:48 -04: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
Lioncache
7041bdb144
IntrusiveIRList: Remove unused headers
...
Gets rid of unnecessary dependencies and clarifies previously indirect dependencies.
2025-09-03 10:39:45 -04:00
Lioncache
19e8c3fcb6
RegisterAllocationData: Remove unused headers
...
Gets rid of unnecessary header dependencies.
2025-09-03 10:31:41 -04:00
LC
06c5135d4e
Merge pull request #4815 from lioncash/abi
...
Dispatcher: Reduce header dependencies
2025-09-03 09:45:36 -04: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
959af9c3af
Frontend: Always explore fallthrough branches with multiblock
2025-09-02 22:02:53 +01:00
Lioncache
1edacf05e9
ConstProp: Remove file
...
This was left in the tree, but the functionality was removed a while ago, so we can delete this.
2025-09-02 14:50:22 -04: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
Ryan Houdek
fbf982f001
Merge pull request #4809 from lioncash/ir
...
IR: Remove some unimplemented prototypes
2025-09-01 14:39:39 -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
221ee1a122
IREmitter: Remove unimplemented prototypes
...
Get/SetPackedRFLAG() functions were moved to the opcode dispatcher, but these were
accidentally left behind.
2025-08-29 12:00:53 -04:00
Lioncache
2b29f90c92
IREmitter: Remove unused <array> header
...
Just one less include to worry about
2025-08-29 11:57:03 -04:00
Lioncache
d7ec0e570f
IR: Make IsFragmentExit() internally linked
...
This isn't used outside of the IR emitter. Plus, IsBlockExit() is already a more general interface to use,
since it handles the fragment exit case as well.
2025-08-29 11:51:49 -04: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
Ryan Houdek
5ed5566106
X86Tables/AVX128: Stop installing state functions a second time
2025-08-27 13:09:53 -07:00
Ryan Houdek
2d9a4412a4
X86Tables: Have AVX128 table always have PCLMUL
2025-08-27 13:08:27 -07:00
Ryan Houdek
982abd5719
X86Tables: Have AVX256 table always have PCLMUL
2025-08-27 13:06:43 -07:00
Ryan Houdek
80cacc462e
X86Tables: Move x87 tables to be constexpr
2025-08-27 12:24:25 -07:00
Ryan Houdek
1a2b2f8870
X86Tables: Move Second ModRM table to be constexpr
2025-08-27 12:24:25 -07:00
Ryan Houdek
e8c576047f
X86Tables: Moves Base ops to be constexpr
2025-08-27 12:24:25 -07:00
Ryan Houdek
995d3152eb
X86Tables: Convert Secondary tables to constexpr
2025-08-27 12:24:25 -07:00
Ryan Houdek
ddc40cc273
X86Tables: Converts PrimaryGroup table to constexpr
2025-08-27 12:24:25 -07:00
Ryan Houdek
5ee311b831
X86Tables: Converts H0F3A table to constexpr
2025-08-27 12:24:24 -07:00
Ryan Houdek
ea90296e22
X86Tables: Converts H0F38 table to constexpr
2025-08-27 12:24:24 -07:00
Ryan Houdek
58c1a8d148
X86Tables: Convert DDDNow table to constexpr
2025-08-27 12:24:24 -07:00
Ryan Houdek
87a19c7938
FEXCore: Move SecondaryGroupTables Arch specific ops to a table
...
No runtime-installation necessary.
2025-08-27 12:24:24 -07:00
Ryan Houdek
0ab1241f09
X86Tables: Switch OpDispatch pointer over to a union
...
A wild use case of union over a variant because we don't want to
increase the encoding size from 128-bit to 256-bit (because of padding).
The type of operation is encoded with the table operation type, so a
variant is unnecessary and we get to keep the 128-bit encoding.
This allows us to have "recursive" x86 table descriptions. But in
reality this is going to only be one layer deep. As this will allow the
Frontend decoder to select instruction encodings based on arch bitness
once the tables are generated correctly.
2025-08-26 15:36:37 -07:00