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
53befc68c9
PassManager: Ensure GetPass() only queries the underlying pass mappings
...
Previously this would create an entry in the map if it didn't exist.
2026-07-21 12:10:26 -04:00
LC
19f95d89ec
PassManager: Add basic documentation
2026-07-21 12:10:26 -04:00
LC
ecb9b3b7f8
PassManager: Constrain GetPass() template to Pass-derived objects
...
Makes the particular conversion types constrained to catch any trivial
misuses.
2026-07-21 12:10:26 -04:00
LC
d619e36523
PassManager: Pass string by const reference where applicable
...
Gets rid of potential extraneous copies. We also add handling for cases
where two passes with the same name are unintentionally added.
Previously we'd blindly overwrite the mapping.
2026-07-21 12:09:16 -04:00
LC
fa80d11960
PassManager: Remove SyscallHandler member
...
This isn't used anymore, so we can get rid of it to further simplify
initialization.
2026-07-21 11:28:12 -04:00
LC
2893d2b64f
PassManager: Simplify pass initialization
...
We don't conditionally add any passes, so we can simplify the interface
so that we just add all existing passes at once. Makes the core
initialization process a little more straightforward.
2026-07-21 11:28:09 -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
8b612a87c6
IREmitter: Mark some helpers as const
...
These don't modify internal state.
2026-07-17 03:20:36 -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
Ryan Houdek
356d461123
Merge pull request #5734 from lioncash/bytes
...
Common/BitSet: Amend byte size retrieval
2026-07-13 07:07:00 -07:00
LC
c0b2eec5de
IR: Enclose straggler Desc comments in brackets
...
Ensures the comments get rendered properly in output. We can also
make sure that the IR generation script catches this in the future.
2026-07-13 08:59:45 -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
9d3c388664
Crypto: Make use of XAR in SHA1NEXTE when available
...
Lets us shave an instruction off on hardware that supports XAR.
Closes #5730
2026-07-12 16:02:12 -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
0bfef9008b
IR: Use begin block type in operator--
...
Same behavior, just more correct from a descriptive PoV
2026-07-10 07:31:25 -04:00
LC
caa030714b
IR: Remove unused VUShraI
...
Given that this is currently unused and that we don't have the signed
equivalent implemented, we can just remove this for now.
2026-07-10 04:15:52 -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
6bc67609a3
[SVE256] Handle 256-bit blend operations much more efficiently
...
We can massage a given selector into a valid predicate register bitmask
and then simply perform a merging move, which eliminates most busywork
around optimizing 256-bit blends.
In the future, once we drop SVE2.1 support in, we can use PMOV to
eliminate the load from memory and related constant management.
2026-07-08 17:35:12 -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
LC
ef19242be3
IR: Add constant for swapping midsections of 256-bit vectors around
...
This'll let us eliminate some pretty gnarly inserts while
ZIP1Q/UZP1Q/etc are still unavailable.
2026-06-29 12:50:53 -04:00
Paulo Matos
37b010795e
Re-optimize FYL2X for reduced precision x87 path
2026-06-30 15:00:16 -07:00
Egor Lazarchuk
ff5dfff5bb
IR: fix typo in CacheLineClean description
2026-06-24 00:38:59 +01:00
Ryan Houdek
280568df2f
Merge pull request #5581 from lioncash/fwd
...
Passes: Trim unnecessary forward declarations
2026-06-21 20:05:23 -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
LC
2a67261eac
IntrusiveIRList: Amend signature for PostRA()
...
PostRA is a bool, not an unsigned value. We can also adjust SpillSlots()
to use uint32_t like its returned data member.
2026-06-20 13:39:35 -04:00
Paulo Matos
84d968c7d2
JIT-inline FPREM/FPREM1 for reduced precision x87 path
2026-05-11 10:27:08 +02:00
Paulo Matos
db50b04663
JIT-inline F64ATAN and F64FYL2X for reduced precision x87 path
2026-04-21 12:09:55 +02:00
Paulo Matos
6bf19ffe37
JIT-inline F64SCALE and F64F2XM1 for reduced precision x87 path
2026-04-16 11:24:19 +02:00
Ryan Houdek
4428aea5ee
IR: Adds support for printing strings
...
I utilize this functionality quite heavily when debugging and I need
bread crumbs spread around. Instead of reimplementing it a dozen times,
just have it upstreamed.
2026-03-28 17:53:33 -07:00
Paulo Matos
30e853305d
JIT-inline F64SIN, F64COS, and F64TAN for reduced precision x87 path
2026-03-19 18:58:46 +01:00