LC
585286a617
IRValidation: Remove unused members from BlockInfo
...
HasExit is assigned to but never used, but we check this condition a
different way right after leaving the main loop anyway.
2026-07-24 16:00:20 -04:00
LC
4904fd43e9
IRValidation: Make BlockInfo private
...
This isn't used outside the context of the pass.
2026-07-24 16:00:20 -04:00
LC
9e3f287c1f
IRValidation: Use C instead of CW
...
This op isn't mutated anywhere in the pass.
2026-07-24 16:00:20 -04:00
LC
f5e4e26e08
IRValidation: Move var closer to usage
...
Same behavior, just more compact.
2026-07-24 16:00:20 -04:00
LC
6c5a39e164
IRValidation: Turn ORs with true into assignment
...
These are just unconditional setting to true anyway.
2026-07-24 16:00:17 -04:00
LC
6d4c80adff
x87StackOptimizationPass: Remove IR member
...
This is only used in the store helpers, so we can just pass it in
directly
2026-07-23 02:26:46 -04:00
LC
56dd470528
x87StackOptimizationPass: Remove unnecesary return in Run()
...
It's a void function, so we don't need this at the end
2026-07-23 02:21:26 -04:00
LC
6741f53d87
x87StackOptimizationPass: Mark getValidMask()/getInvalidMask() as const
...
These don't modify instance state.
2026-07-23 02:18:33 -04:00
LC
19550c5417
x87StackOptimizationPass: Pass by const reference in setTop()
...
Avoids redundant copies. Just a minor codegen saving.
2026-07-23 02:17:02 -04:00
LC
04d06d386f
IRDumper: stringstream -> ostringstream
...
These are purely output operations, so we don't need to use the more
heavyweight class.
2026-07-21 04:29:03 -04:00
LC
c5eddd922d
FEXCore: Resolve missing prototype warnings
...
Makes sure we mark everything internally linked as necessary, or make
declarations visible to their implementation.
2026-07-17 02:48:45 -04:00
LC
4bb675a530
x87StackOptimizationPass: Reduce noise in slow push/pop paths
...
Deduplicates the repeated rotate behavior.
2026-07-16 10:31:40 -04:00
LC
8d62773570
x87StackOptimizationPass: Make helpers internally linked
...
Makes it obvious they're only used in this TU and allows the compiler to
warn if they ever become unused.
2026-07-16 09:56:14 -04:00
LC
9e26c57643
x87StackOptimizationPass: Fix isValid()
...
Previously this wouldn't have worked, since .first isn't a valid member.
The only reason it wasn't caught is because the function is never
instantiated.
2026-07-16 09:56:14 -04:00
LC
35bc502062
x87StackOptimizationPass: Make use of std::array for FixedSizeStack
...
Reduces the overall generated code for state management.
Drops the overall text size from 11447294 to 11441918
2026-07-16 09:56:05 -04:00
Ryan Houdek
34ef28dea5
Merge pull request #5749 from lioncash/calc
...
RedundantFlagCalculationElimination: Minor tidying
2026-07-15 09:05:45 -07:00
Ryan Houdek
0f2463dda2
Merge pull request #5748 from lioncash/invariant
...
RegisterAllocationPass: Ensure pair reg invariant
2026-07-15 09:04:38 -07:00
LC
1325fef703
RFCE: Prefer accessing ops with C instead of CW
...
CW is only intended when the op needs to be writable, but most of these
are only reading data.
2026-07-15 07:06:23 -04:00
LC
d2d0ef1803
RFCE: Remove unnecessary std::invoke()
...
We can just call this normally (and also make the constituent helper
function internally linked).
2026-07-15 07:03:09 -04:00
LC
d6fb60d512
RegisterAllocationPass: Ensure pair reg invariant
...
Allows us to actually catch if this requirement ever gets broken in
the future.
2026-07-15 06:46:24 -04:00
LC
f2212a497b
x87StackOptimizationPass: Remove shadowing variable in PUSHSTACK case
...
No behavioral change, since the one in the outer scope does the same thing.
2026-07-14 08:01:30 -04:00
LC
4254c0f5a9
RegisterAllocationPass: Function cleanup
...
Marks a few functions const or static to clarify usage a little more.
2026-07-13 15:26:51 -04:00
LC
9b8ae25491
Common/BitSet: Amend byte size retrieval
...
This needs to divide by 8 to get a proper byte size for all type sizes.
The only usage of this is currently a uint64_t, so it worked by
coincidence, since sizeof(uint64_t) == 8.
2026-07-13 08:17:27 -04:00
LC
995e2657bb
RegisterAllocationPass: Amend type cast in DecodeSRANode()
...
Uses the proper type for StoreRegister. Same behavior though, due to
layout.
2026-07-11 16:39:35 -04:00
LC
710b85be70
IR: Remove need to specify element size for vector bitwise ops
...
Element size doesn't really mean anything here, considering all bits are
acted upon independently of segmentation.
Makes using these ops a little bit less noisy.
2026-07-09 13:26:51 -04:00
LC
201216ba54
HostFeatures: Put SVE support querying into single function
...
Lets us avoid open-coding long checks for the existence of either
SVE-128 or SVE-256.
2026-06-30 03:34:17 -04:00
Paulo Matos
37b010795e
Re-optimize FYL2X for reduced precision x87 path
2026-06-30 15:00:16 -07:00
LC
a1f90dd8d3
Passes: Trim unnecessary forward declarations
...
Less visual noise and lingering types left in the header.
2026-06-20 13:59:18 -04:00
Paulo Matos
30e853305d
JIT-inline F64SIN, F64COS, and F64TAN for reduced precision x87 path
2026-03-19 18:58:46 +01:00
Tony Wasserka
91c55facb2
IRDumper: Avoid passing packed member data as references
...
Fixes "Cannot bind packed field to reference type" build errors on GCC.
2026-03-16 19:15:05 +01:00
Ryan Houdek
217bbf423b
FEXCore: Switch constant emission to default to NoPad
...
Most constants don't need to be padded for relocations. So now that
these have all been audited, switch to defaulting to NoPad to reduce
verbosity.
The number of constant that need to be explicitly padded are now marked
and with all the prior changes, this allows bisecting if something has
gone wrong.
2025-12-29 11:45:51 -08:00
Ryan Houdek
a480793708
Passes/RegisterAllocationPass: _Constant audit
2025-12-29 11:04:35 -08:00
Ryan Houdek
c2d5ee43c6
Passes/x87StackOptimizationPass: _Constant audit
2025-12-29 11:04:35 -08:00
Paulo Matos
f91ac09f87
Set current code block in x87 pass
...
This resets the constant pool in IREmit used by SelectAddressMode().
Fixes #5084 .
2025-12-02 15:33:08 +01:00
Paulo Matos
39dbf46422
Refactoring of storing code in x87 opt. stack pass
...
Enables memcpy optimization of 80bit floats on reduced precision.
Also uncovered a bug where if we had done 80bit memcpy
optimization, we wouldn't have properly stored the 80bits.
This was caught by the existing tests when we enabled the optimization.
2025-11-17 10:14:29 +01:00
Paulo Matos
6ee9984280
f80 stack xchg optimization for fast path
2025-11-05 11:20:02 +01:00
Paulo Matos
70b6bc2bae
Remove InterpretAsFloat from x87StackOptimizationPass
...
The InterpretAsFloat was never properly made use of. There's a couple of issues
that are fixed more easily with this gone, so lets remove it.
If there's a specific optimization that requires this, we can bring it back
at a later time. This should not have any effect on the current code generation.
2025-10-28 11:26:28 +01:00
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
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
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
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
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
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