Paulo Matos
eb1689e79f
instcountci: Revert Fix quiet and signalling nan propagation
2025-10-16 09:11:01 +02:00
Paulo Matos
bc6295a78d
Revert "Fix quiet and signalling nan propagation"
...
This reverts commit e7a47a647c .
2025-10-16 08:53:44 +02:00
Lioncache
b98d5f30c0
RegisterAllocationPass: Ensure relevant members are initialized
...
Ensures that they have deterministic values on construction
2025-10-09 04:17:21 -04:00
Ryan Houdek
673e826e46
FEX: Remove InlineSyscall and related flags
...
FEXCore no longer optimizes syscalls to be inline.
NFC, just avoids passing around a bunch of data structures for no
reason.
2025-10-08 19:33:58 -07:00
Ryan Houdek
f1f81f9de2
FEXCore: Remove InlineSyscall
...
Due to IR changes we can no longer do this, its use was fairly limited
anyway.
2025-10-08 18:47:18 -07:00
Lioncache
7aa5bc0503
EnumUtils: Further simplify enum passthrough formatting
...
Turns out a simpler way was added to the docs at some point and I never
noticed.
Before:
text data bss dec hex filename
4159895 1471360 4336824 9968079 9819cf Bin/FEX
After:
text data bss dec hex filename
4157159 1471360 4336824 9965343 980f1f Bin/FEX
2025-10-07 01:52:05 -04:00
Lioncache
c1cfd4db83
Addressing: Shave 8 bytes off AddressMode
...
Just a trivial rearrangement, Drops the struct down to 40 bytes.
We can also make some functions take it by const reference so we
aren't churning some copies.
Before:
text data bss dec hex filename
4160559 1471360 4336824 9968743 981c67 Bin/FEX
After:
text data bss dec hex filename
4159927 1471360 4336824 9968111 9819ef Bin/FEX
2025-10-06 15:52:15 -04:00
Ryan Houdek
06ff0a45a7
Merge pull request #4935 from lioncash/move
...
IR: Remove Swap1/Swap2 ops
2025-10-05 11:57:35 -07:00
Ryan Houdek
c948d532a7
Merge pull request #4934 from lioncash/select
...
OpcodeDispatcher: Move off implicit _Select
2025-10-05 11:54:59 -07:00
Lioncache
16b09a9dd3
OpcodeDispatcher: Move off implicit _Select
...
Resolves a lingering TODO.
2025-10-05 13:57:36 -04:00
Lioncache
4f6800b768
IR: Remove Swap1/Swap2 ops
...
These are no longer used.
2025-10-05 13:26:51 -04:00
Lioncache
c84801adb3
RedundantFlagCalc: Avoid vector copy in OptimizeParity()
...
Previously this was making a copy of the vector, when we only
need to read from it.
2025-10-05 12:17:45 -04:00
Lioncache
69f990c1f8
RedundantFlagCalc: Organize headers
...
Also remove incorrect comment that this pass isn't used.
2025-10-05 12:17:45 -04:00
Lioncache
8a83564678
RedundantFlagCalc: Remove unimplemented prototype
...
Just tidies the interface a little.
2025-10-05 12:17:45 -04:00
Lioncache
43d93f836f
RedundantFlagCalc: Mark members as const where applicable
...
These don't affect member state.
2025-10-05 03:14:21 -04:00
Ryan Houdek
a499ad6404
IR: Implement two new IR ops
...
rbit is useful in generic algorithms.
`MaskGenerateFromBitWidth` is only really useful for SSE4a, but
implemented in the OpcodeDispatcher is rough, so add an operation.
2025-10-04 02:43:39 -07:00
Lioncache
48c6acbc87
IR: Move RegisterAllocationPass forward decl to JITClass
...
This isn't actually used anywhere in the IR header, so we can
move it to where it's actually used.
Now the IR interface header doesn't have anything related to the
independent passes in it.
2025-10-04 00:08:58 -04:00
Ryan Houdek
b5d93bc4a0
Merge pull request #4928 from lioncash/passthru
...
EnumUtils: Add define for default passthrough formatting
2025-10-03 19:45:41 -07:00
Ryan Houdek
012c2ba851
IR: Fixes vector 64-bit binops
...
We were only supporting operating size of 256-bit and 128-bit. These
also support 64-bit which wasn't wired up.
SSE4a will want to use 64-bit.
2025-10-03 13:04:09 -07:00
Lioncache
a0c2ce0068
EnumUtils: Add define for default passthrough formatting
...
Handles a normal case where printing an enum type as an integral value
is still desirable.
Mainly just a way to reduce boilerplate.
2025-10-03 14:21:19 -04:00
Lioncache
0258e914e0
IR: Convert RegisterClassType to an enum class
...
Removes the last of the wrapper value types in favor of enum classes.
2025-10-03 03:54:56 -04:00
Ryan Houdek
c35b81d2c5
Merge pull request #4925 from lioncash/regclass
...
IREmitter: Add register class helpers
2025-10-02 22:14:41 -07:00
Lioncache
fc63dcedb6
IR: Migrate to new helpers
...
Reduces a bunch of noise related to the register classes and hoists them
out so that converting the classes over to enums should be fairly
straightforward.
2025-10-03 00:53:02 -04:00
Lioncache
c879650c4b
IR: Add GPR/FPR helpers
...
These will be utilized in follow up PRs
2025-10-02 23:53:50 -04:00
Lioncache
3841cc4aa5
IRDumper: Add remaining missing enum values
...
Now that the compiler can warn against these, we can fill the
remaining list in.
2025-10-02 12:18:36 -04:00
Lioncache
468f2f2d2d
IRDumper: Convert remaining printers to lambda style invocations
...
This allows easily moving the default case out of the switch, making it
easier for compilers to warn about missing values in switches if any
enum members are added in the future but aren't added to the
formatters.
2025-10-02 12:18:28 -04:00
Lioncache
be5db91c13
IRDumper: Add missing CheckTF BranchHint
2025-10-02 03:01:11 -04:00
Lioncache
6e7d0a520a
IRDumper: Fix error message for FloatCompareOp
...
If ever printed this would give a misleading error that it was an
unrecognized OpSize type.
2025-10-02 02:57:29 -04:00
Lioncache
e37996873a
IRDumper: Add missing FenceType entry
2025-10-02 02:55:34 -04:00
Lioncache
25e851b570
IRDumper: Add missing SyscallFlags entry
2025-10-02 02:55:31 -04:00
Lioncache
d65c54ba21
IR: Remove TypeDefinition struct
...
These aren't used at all.
2025-10-02 00:50:51 -04:00
Lioncache
f76e8c7185
IR: Convert MemOffsetType to enum class
...
Gets rid of another wrapper struct.
2025-10-02 00:24:42 -04:00
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