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
Ryan Houdek
0589d9b872
Merge pull request #5779 from lioncash/x87
...
x87StackOptimizationPass: Minor cleanup
2026-07-22 18:58:17 -07: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
10a0fe2e71
SharedCodeBufferManager: Make AllocateNew() signature consistent with declaration
2026-07-23 01:42:41 -04:00
LC
c9add0d292
SharedCodeBufferManager: Hoist prctl define into util header
...
Same behavior, but just moves the potential define to be alongside all
of the others in the wrapper header.
2026-07-23 01:40:49 -04:00
LC
c239d09ea0
SharedCodeBufferManager: Add missing header
...
Ensures the page size define is always visible.
2026-07-23 00:16:56 -04:00
Ryan Houdek
d2c92808f5
FEXCore: Split out CodeBuffer management to its own file
...
NFC
- Renames CodeBufferManager to SharedCodeBufferManager to be more
explicit about it being shared between threads
- Renames `CodeBuffers` to `SharedCodeBuffers` to make it more explicit
about sharing these buffers between threads.
- Separates the Manager to its own file so it is distinct from the rest
of the CPUBackend code
Makes it easier to parse ownership and lifetime semantics of these
buffers.
2026-07-20 18:09:29 -07:00
LC
2464633431
Merge pull request #5776 from Sonicadvance1/190
...
JIT: Remove JIT detection string
2026-07-20 21:07:23 -04:00
Ryan Houdek
fe1ac1bc1d
JIT: Remove JIT detection string
...
Now that we have VMA region naming enabled on JIT buffers, this is no
longer used. Confirming a region is a JIT buffer is now just a case of
comparing the name that shows up in `/procfs/maps` rather than dumping
the first bytes of an unknown region.
2026-07-20 17:44:15 -07:00
Ryan Houdek
9edd27b214
JIT: Rename temporary CPU buffer allocator
...
`TempAllocator` was a bit too opaque as to what the allocator was for,
so I kept needing to lookup its usage every couple of months. Rename it
to `TempCodeBufferAllocator` so I can remember that it is a temporary
allocator for the staging JIT code buffer more easily.
NFC
2026-07-20 17:32:03 -07:00
Ryan Houdek
eb7e02ea1d
Merge pull request #5772 from lioncash/pass
...
PassManager: Simplify initialization interface
2026-07-19 16:28:07 -07: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
22bd10f3b1
CPUBackend: Remove unnecessary reinterpret_casts
...
This both take a void*, so the casting is unnecessary to begin with,
since this would occur anyway without it. We can also avoid a
duplication to reduce line noise.
2026-07-21 08:22:17 -04:00
Ryan Houdek
f374b4775a
Merge pull request #5769 from lioncash/bound
...
Core: Remove unnecessary bounds check in GenerateIR()
2026-07-18 21:35:34 -07:00
LC
ff213bbc5e
Core: Move vars closer to usage scope in GenerateIR()
...
Makes it so their purpose is more easily seen
2026-07-21 04:44:47 -04:00
LC
56a4ca6e6a
Core: Remove unnecessary bounds check in GenerateIR()
...
We already check the bounds in the loop prior to calling at().
2026-07-21 04:40:22 -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
aa26a780ed
Merge pull request #5767 from Sonicadvance1/188
...
AVX128: Optimize 256-bit vmovmaskpd as well
2026-07-17 16:56:23 -04:00
Ryan Houdek
c4a5ac892f
AVX128: Optimize 256-bit vmovmaskpd as well
...
Similar to #5757 , but once the elements have been zipped together, we
can treat it identically to the 128-bit 32-bit element path.
Closes #3782
2026-07-17 13:15:47 -07:00
Ryan Houdek
1cffa009fe
Merge pull request #5763 from lioncash/const
...
IREmitter: Mark some helpers as const
2026-07-17 07:59:47 -07:00
Tony Wasserka
c0c95da796
Arm64Emitter: Fix incorrect condition for constant NOP padding
...
This needs to be enabled when *generating* caches, not at runtime when we're
loading them (unless we're compiling for validation).
Previous code would incorrectly disable NOP padding in FEXOfflineCompiler and
instead enable it at runtime when it wasn't needed.
2026-07-17 12:47:51 +02: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
Ryan Houdek
0467d523c0
Merge pull request #5759 from neobrain/fix_codebuffer_max_size
...
CodeCache: Use maximal code buffer size when generating code caches, too
2026-07-16 13:53:42 -07:00
Ryan Houdek
b0af054a95
Merge pull request #5757 from MoonFlowww/avx128-vmovmsk-256
...
AVX_128: Optimize VMOVMSKPS from 11 to 7 instructions
2026-07-16 13:53:00 -07:00
Ryan Houdek
6846f10510
Merge pull request #5758 from lioncash/x87
...
x87StackOptimizationPass: Make use of std::array for FixedSizeStack
2026-07-16 12:39:08 -07:00
Tony Wasserka
228c351396
CodeCache: Use maximal code buffer size when generating code caches, too
...
This is less likely to happen, but will still be required for very large libraries.
2026-07-16 16:37:18 +02: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
LC
4b4aa1cdbe
Arm64Emitter: Pull FillSpecialRegs bools into a struct
...
Makes this easily expandable over time without modifying the prototype,
and lets us be a little more informative at call sites.
2026-07-16 08:07:57 -04:00
moonfloww
3680282b30
new vmovmsk from 11 to 7 ins.
2026-07-16 13:57:12 +02:00
Ryan Houdek
921ce59054
Merge pull request #5750 from lioncash/pred
...
VectorOps: Make use of unpredicated shifts
2026-07-15 09:15:04 -07:00
Ryan Houdek
a7627ba39a
Merge pull request #5751 from lioncash/sq
...
VectorOps: Add trivial case handling in VSQXTN2
2026-07-15 09:06:59 -07: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
Ryan Houdek
5ec852637c
Merge pull request #5745 from lioncash/addv
...
VectorOps: Simplify 256-bit VAddV
2026-07-15 09:03:57 -07:00
LC
ba8b0afe7a
VectorOps: Use unpredicated shifts where applicable for 256-bit scalar shifts
...
Lets us trim some output
2026-07-15 09:10:57 -04:00
LC
98d45a6a9b
VectorOps: Make use of unpredicated immediate shifts
...
Same behavior, just without introducing a predicate register dependency.
2026-07-15 08:00:58 -04:00
LC
6bc808cb06
VectorOps: Add trivial case handling in VSQXTN2
...
Lets us generate much more optimal code in the event the destination and
lower source are the same.
2026-07-15 07:49:50 -04:00