Billy Laws
c379eede3b
JIT: Unify the paranoid TSO handler with the regular one
...
The only functional difference is that the new handler always uses
half-barriers for vector atomics. There's no technical reason for
paranoid TSO not to use these and it was just missed initially.
2025-10-16 17:59:56 -07:00
Paulo Matos
21e29af48b
Remove unused IsZero; NFC
2025-09-22 14:22:14 +02:00
Lioncache
056abb5901
IR: Add missing includes
...
Fixes some indirect includes while we're at it.
2025-09-15 11:47:39 +02:00
Lioncache
af28406dbc
IR: Remove unnecessary friend class declarations from OrderedNode
...
These classes don't exist anymore, so we can get rid of these declarations.
2025-09-15 11:37:37 +02:00
Ryan Houdek
61719115e5
Merge pull request #4817 from neobrain/refactor_code_cache_new_interfaces
...
CodeCache: Introduce new interfaces
2025-09-11 12:59:33 -07:00
Ryan Houdek
0eedd55dfd
Merge pull request #4866 from neobrain/refactor_reformat
...
Update code formatting
2025-09-11 10:13:42 -07:00
Ryan Houdek
4a9170e981
Merge pull request #4837 from bylaws/x87opt
...
X87: Better cache intermediate results in the X87 slowpath
2025-09-11 10:12:36 -07: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
Tony Wasserka
9fdd96af61
Update code formatting
2025-09-11 10:40:29 +02:00
Lioncache
ad3a024b69
IREmitter: Remove friend class declarations
...
These no longer need specific access to internals.
2025-09-10 13:12:58 -04:00
Billy Laws
6789919fca
X87StackOptimization: Don't flush to mem when entering slow path
2025-09-09 21:29:12 +01:00
Billy Laws
6a1eb0e508
X87StackOptimization: Defer FTW valid bits calculation
2025-09-09 21:29:12 +01:00
Billy Laws
984b0260d5
X87StackOptimization: Cache stack values
2025-09-09 21:29:12 +01:00
Billy Laws
785e59e889
X87StackOptimization: Cache AbridgedFTW
2025-09-09 21:29:12 +01:00
Billy Laws
671be5b191
X87StackOptimization: Cache half-formed stack register context addresses
2025-09-09 21:29:12 +01:00
Billy Laws
b4e556e63a
IR: Introduce operation to form a scaled address from STATE
2025-09-09 21:29:12 +01:00
Billy Laws
2128943b57
X87StackOptimization: Use the x87 stack offset cache in SynchronizeStackValues
2025-09-09 21:29:12 +01:00
Billy Laws
6ddb1094b6
X87StackOptimization: Don't invalidate the x87 stack offset cache on push/pop
2025-09-09 21:29:12 +01:00
Billy Laws
b9d93b19d4
X87StackOptimization: Defer writeback of the x87 stack pointer
2025-09-09 21:29:12 +01:00
Ryan Houdek
1121f2a1fb
Merge pull request #4853 from lioncash/allocator
...
FEXCore/Allocator: Remove unused headers
2025-09-08 20:25:25 -07:00
Lioncache
a7989eb79f
FEXCore/Allocator: Remove unused headers
...
Reveals some more indirect inclusions.
2025-09-08 22:53:09 -04:00
Lioncache
b2407352a9
IR: Remove unnecessary forward declarations/headers
...
Pares the base IR header down to a modest size and also reveals a few indirect
reliances on the allocator facilities.
2025-09-08 22:03:25 -04: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
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
03c968a8fe
Merge pull request #4831 from lioncash/header
...
IntrusiveIRList/RegisterAllocationData: Remove unused headers
2025-09-04 11:20:14 -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
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
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
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
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
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
Tony Wasserka
dcaa90a855
CodeCache: Remove legacy interfaces
2025-09-02 12:06:52 +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
Ryan Houdek
67e9b40bab
Merge pull request #4803 from neobrain/refactor_irdumper_cleanup
...
IRDumper: Clean up formatting using fmt
2025-08-25 11:43:36 -07:00
Tony Wasserka
99cfe05ee5
IRDumper: Clean up formatting using fmt
2025-08-25 17:05:10 +02:00
Tony Wasserka
887f586874
IRDumper: Remove unneeded maybe_unused attribute
2025-08-25 10:36:01 +02:00
Tony Wasserka
51e64c69f3
LogManager: Unconditionally evaluate assertion conditions
...
A prevalent pattern in the FEX codebase is to compute some data and store it
in a maybe_unused variable that's only ever passed to LOGMAN_THROW_A_FMT.
Besides few exceptions, we never compute expensive data in the macro
arguments themselves, so we can remove a lot of code noise by unconditionally
evaluating the condition even in assertion-disabled builds.
2025-08-25 10:36:01 +02:00
Alyssa Rosenzweig
0f3883152b
RegisterAllocationPass: call GetRAArgs less
...
..and be consistent about signedness.
clang doesn't seem able to do this itself.
Difference at 95.0% confidence, n=100
-0.272326% +/- 0.242353%
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-08 15:46:35 -04:00
Alyssa Rosenzweig
40beef061f
ConstProp: drop pass
...
now obsolete!
Results for the whole series are excellent:
Difference at 95.0% confidence
-3.97603% +/- 0.254656%
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Alyssa Rosenzweig
f0a434c167
IR: inline as we go
...
Augment IREmitter to inline constants as we generate code, rather than
needing a later clean up pass. This replaces the last function of ConstProp.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Alyssa Rosenzweig
92b66dbf17
IR: describe immediate inlining in json
...
This drops some register class validation since InlineConstants don't have a
register class.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Alyssa Rosenzweig
f336261d6b
IR: introduce & use more add helpers
...
so we can stash all the opts.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Alyssa Rosenzweig
c6324b83ea
IR: introduce & use constant add helpers
...
more ergonomic and gives us a place to stash more logic.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Alyssa Rosenzweig
dcef1212c6
OpcodeDispatcher: add and use NZCVSelect01 helper
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Alyssa Rosenzweig
2030b70ff8
OpcodeDispatcher: do Select 0/1 inline in dispatcher
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-06 20:40:49 -04:00
Billy Laws
afa1327242
FEXCore: Implement a write+code invalidate IR op for mono SMC
2025-08-06 22:39:17 +01:00