Lioncache
530821fc4a
IR: Convert rounding modes to enum class
...
Same behavior, but more compact
2025-10-01 23:37:57 -04:00
Lioncache
863d1e0007
IR: Convert FenceType to an enum class
...
Same thing minus an extra struct lingering around.
2025-10-01 23:13:08 -04:00
Lioncache
a798880ac8
IR: Convert CondClassType over to enum class
...
Instead of having this sort of odd indirection through a struct type,
we can add support for defining custom enums in the IR description.
This lets us both get strong typing (and allow for weak typing, should
any enum in the future need it), without needing a struct for a basic
value type.
Even then, if we do need a struct for anything in the future, then
we still allow strong typing for values themselves while allowing
them to be used in various ways.
2025-10-01 10:45:00 -04:00
Ryan Houdek
7f8fffbb24
FEXCore: Implement support for AVX gathers with overflow
...
Falls down the emulated path so we can zero extend the address
calculation. No way for SVE gathers to use 32-bit addressing.
2025-09-29 16:06:02 -07:00
Ryan Houdek
e5680e031d
Merge pull request #4835 from pmatos/fix/classify
...
Fix quiet and signalling nan propagation
2025-09-23 11:17:37 -07:00
Paulo Matos
e7a47a647c
Fix quiet and signalling nan propagation
...
This adds a new mode X87StrictReducedPrecision.
The strict reduced precision is like the reduced precision but adds extra checks,
like the currently implemented nan and snan propagations.
Fix for __builtin_issignaling() test of SPEC2017 classify test.
2025-09-23 13:48:45 +02: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