Billy Laws
8d1d3fe12b
Windows: Implement SyscallHandler code range invalidation
2025-08-06 22:39:17 +01:00
Billy Laws
87ae0f058a
LinuxEmulation: Implement SyscallHandler code range invalidation
2025-08-06 22:39:17 +01:00
Billy Laws
7e1be6625f
SyscallHandler: Add a method for invalidating a guest code range
2025-08-06 22:39:17 +01:00
Billy Laws
0c6fcd1678
FEXCore: Add function to recover the current block entrypoint
2025-08-06 22:39:17 +01:00
Billy Laws
37ac46273d
Windows: Print extra debug info on image map
2025-08-06 22:39:17 +01:00
LC
c28b94890c
Merge pull request #4761 from neobrain/fix_debug_strace_build
...
Syscalls: Fix DEBUG_STRACE build
2025-08-05 11:17:19 -04:00
LC
63a910d2fc
Merge pull request #4760 from Sonicadvance1/vex_log
...
Frontend: Remove log about VEX map_select
2025-08-05 11:15:53 -04:00
Tony Wasserka
fbef5c6a6a
Syscalls: Fix DEBUG_STRACE build
2025-08-05 15:51:34 +02:00
Ryan Houdek
674b6e9f43
Frontend: Remove log about VEX map_select
...
During multiblock code discovery this fires a lot and it isn't
interesting. Just remove the log, it'll SIGILL correctly if it actually
hits.
2025-08-04 15:46:36 -07:00
Ryan Houdek
7897b6ad55
Merge pull request #4759 from alyssarosenzweig/ra/simplify
...
RegisterAllocationPass: simplify next-use logic
2025-08-04 14:59:13 -07:00
Alyssa Rosenzweig
6769b54e1c
unittests: add blake3 test
...
this provokes RA spilling and hit an assertion fail on main.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 17:06:15 -04:00
Alyssa Rosenzweig
734ab4429f
RegisterAllocationPass: fix SRA spilling corner
...
I hate this.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 17:06:15 -04:00
Ryan Houdek
5db6a64f3f
Merge pull request #4758 from alyssarosenzweig/opt/x87ftw-2
...
OpcodeDispatcher: optimize SetX87FTW
2025-08-04 13:14:57 -07:00
Alyssa Rosenzweig
dcc458ea94
RegisterAllocationPass: simplify next-use logic
...
I doubt this will fix the regression but it might make it easier to identify.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 14:31:08 -04:00
Alyssa Rosenzweig
7354e7e3c9
InstCountCI: Update
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 14:13:10 -04:00
Alyssa Rosenzweig
07ef765f7e
OpcodeDispatcher: optimize SetX87FTW
...
In b8dd5d95b ("OpcodeDispatcher: optimize X87FTWTag"), we optimized
X87FTWTag using an efficient Morton interleave operation. Here, we do the
inverse, optimizing SetX87FTW using an efficient Morton deinterleave
operation.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 14:13:10 -04:00
Alyssa Rosenzweig
c58ad8b593
IR: add AndShift op
...
will use it for next commit.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 14:09:20 -04:00
Alyssa Rosenzweig
31091c1053
RegisterAllocationPass: remove some indentation
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-04 08:16:28 -04:00
Ryan Houdek
59659a7184
Docs: Update for release FEX-2508
FEX-2508
2025-08-01 18:24:33 -07:00
Ryan Houdek
e6de17e72e
Merge pull request #4752 from alyssarosenzweig/opt/defer-next-use-analysis-2
...
RegisterAllocationPass: defer next-use analysis
2025-08-01 16:38:31 -07:00
Ryan Houdek
0457bdc7ce
Merge pull request #4751 from lioncash/perm
...
ASIMDOps: Remove unused permute overloads
2025-08-01 12:45:50 -07:00
Ryan Houdek
7e54c2735c
Merge pull request #4750 from lioncash/op6
...
ASIMDOps: Move remaining base opcodes into implementing function
2025-08-01 12:45:24 -07:00
Alyssa Rosenzweig
7bcc58687f
IR: remove a bunch of unused atomic ops
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 14:01:44 -04:00
Alyssa Rosenzweig
6a03df7b8d
RedundantFlagCalculationElimination: drop dead syscall/atomic opts
...
I don't think these are worth it, and also currently they don't trigger ever.
n=100:
Difference at 95.0% confidence
-0.00245961 +/- 0.00139573
-0.524468% +/- 0.297615%
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 14:01:37 -04:00
Alyssa Rosenzweig
7ee5a8065c
RegisterAllocationPass: defer next-use analysis
...
This is expensive and only needed for spilling, so only do it for spilling. This
complicates the RA a bit but speeds us up on average since most blocks
don't spill. Total results of this change (including the prep commits that
slowed things down temporarily):
Difference at 95.0% confidence
-1.71952% +/- 0.455996%
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 13:24:52 -04:00
Alyssa Rosenzweig
2f2353765f
RegisterAllocationPass: use kill bits
...
this is a lot lighter weight than next uses for the same purpose.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 13:24:52 -04:00
Alyssa Rosenzweig
8b4c2f5093
RegisterAllocationPass: consider AnySpilled at start of iteration
...
if we spill for SRA, we don't need/want to execute this code path. this will be
load bearing by the end of this series.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 13:24:52 -04:00
Alyssa Rosenzweig
d80662a9ba
RegisterAllocationPass: ignore kill bit in SRA
...
needed for the backwards pass internally due to ordering. a little awkward but
shrug.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 12:11:53 -04:00
Alyssa Rosenzweig
68c5c72dbc
IR: model kill bits
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 12:04:50 -04:00
Lioncache
b460cbc91a
ASIMDOps: Remove unused permute overloads
...
These aren't used at all and don't really provide anything that the existing
non-templated overloads can't.
2025-08-01 11:51:55 -04:00
Lioncache
f7939078c2
ASIMDOps: Remove unnecessary ins() overload
...
There's no difference between this and the non-templated version, in fact,
this variant wasn't even used at all, so we can just remove it.
2025-08-01 11:24:44 -04:00
Lioncache
e103af3b93
ASIMDOps: Move base opcode into ASIMDScalarCopy()
...
Now we have no more duplicated opcodes in ASIMDOps.
2025-08-01 11:13:58 -04:00
Lioncache
45bec06d5b
ASIMDOps: Move base opcode into ASIMDFloatConvBetweenInt()
...
Deduplicates the second last remaining instruction category in ASIMDOps
2025-08-01 10:49:52 -04:00
Alyssa Rosenzweig
c82efe7621
RegisterAllocationPass: set AnySpilled less
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-01 10:39:11 -04:00
Ryan Houdek
ba85dbf526
Merge pull request #4749 from lioncash/op5
...
ASIMDOps: Move most remaining base opcodes into their implementing functions
2025-07-31 12:21:31 -07:00
Lioncache
e624e87b29
ASIMDOps: Move base opcode into ASIMDExtract()
...
Minor deduplication of the base opcode.
2025-07-31 10:44:06 -04:00
Lioncache
6ff8d0953f
ASIMDOps: Move base opcode into ASIMDPermute()
...
Gets rid of the need to respecify the base opcode in every instruction implementation
2025-07-31 10:43:17 -04:00
Lioncache
9f2fcdf0b3
ASIMDOps: Move base opcode into Crypto2RegSHA()/Crypto3RegSHA()
...
Removes the need to specify the base opcode multiple times.
2025-07-31 10:23:38 -04:00
Lioncache
cecb9bfe32
ASIMDOps: Move base opcode into CryptoAES()
...
Minor deduplication.
2025-07-31 10:15:15 -04:00
Lioncache
6a989d844a
ASIMDOps: Move base opcode into ASIMDTable()
...
Gets rid of duplication of the opcode in all instruction implementations.
2025-07-31 10:10:35 -04:00
Ryan Houdek
318b3115a8
Merge pull request #4748 from lioncash/op4
...
ASIMDOps: Constrain more instructions with IsQOrDRegister
2025-07-30 16:22:14 -07:00
Lioncache
017952e89e
ASIMDOps: Constrain more instructions with IsQOrDRegister
...
We had quite a few instructions that we weren't constraining with this,
now the instruction itself will show up in the failure output more immediately
instead of failing on the internal implementation function if anything is
incorrectly passed through.
2025-07-30 19:03:33 -04:00
LC
b0c74e1b66
Merge pull request #4747 from Sonicadvance1/cpuid
...
CPUID: Update documentation comments
2025-07-30 18:31:54 -04:00
Ryan Houdek
a190086504
Merge pull request #4746 from lioncash/op3
...
ASIMDOps: Move base opcode into ASIMDModifiedImm()/ASIMDShiftByImm()
2025-07-30 15:30:37 -07:00
Ryan Houdek
84704d1cc2
CPUID: Update documentation comments
...
Additional reserved bits have set uses now.
Additionally set the cpuid bit for bus-lock-detect, because FEX
definitely detects bus-locks.
2025-07-30 15:13:08 -07:00
Lioncache
b1ef8bbc5a
ASIMDOps: Move base opcode into ASIMDModifiedImm()
2025-07-30 18:03:43 -04:00
Lioncache
f19a6343dd
ASIMDOps: Move base opcode into ASIMDShiftByImm()
...
Avoids needing to duplicate the opcode all over the place
2025-07-30 18:03:36 -04:00
Ryan Houdek
23d0d7d4a4
Merge pull request #4745 from lioncash/op2
...
ASIMDOps: Move base opcode into ASIMD2RegMisc()
2025-07-30 13:50:04 -07:00
Lioncache
ed7bc28c21
ASIMDOps: Simplify size conditionals in several 2-reg misc instructions
...
In many of these, the long ternaries are equivalent to a subtraction by 1,
which is much more efficient
2025-07-30 16:31:33 -04:00
Lioncache
05dcb160bd
ASIMDOps: Move base opcode into ASIMD2RegMisc()
...
Avoids the need to specify the opcode repeatedly, making implementations less noisy.
2025-07-30 16:25:24 -04:00