Ryan Houdek
93c428ae53
Docs: Update for release FEX-2508.1
FEX-2508.1
2025-08-05 19:51:54 -07:00
Alyssa Rosenzweig
5836309525
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-05 19:50:53 -07:00
Alyssa Rosenzweig
43092ce48b
RegisterAllocationPass: fix SRA spilling corner
...
I hate this.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-08-05 19:50:48 -07:00
Alyssa Rosenzweig
e5d51a20b2
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-05 19:50:43 -07: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
Ryan Houdek
e49155ff90
Merge pull request #4744 from lioncash/op
...
ASIMDOps: Move base opcode into implementation function for some categories
2025-07-30 12:46:07 -07:00
Ryan Houdek
265525e472
Merge pull request #4740 from Sonicadvance1/multiple_segments
...
FEXCore/Frontend: Ensure multiple prefix bytes work
2025-07-30 12:43:51 -07:00
Ryan Houdek
d4dcbfa90b
FEXCore/Frontend: Ensure multiple prefix bytes work
...
Only the last prefix byte is retained when multiple are set. We were
accidentally generating a mask.
Additionally with 64-bit code, the legacy segment prefixes don't
overwrite if FS or GS have been set. So no weird behaviour where FS/GS
is set, a legacy prefix is used for padding, and then it "ignores" a bad
prefix by ignoring only the latest one.
2025-07-30 12:30:13 -07:00
Ryan Houdek
6724673482
Merge pull request #4739 from Sonicadvance1/remove_check
...
Frontend: Remove arbitrary check
2025-07-30 12:26:13 -07:00
Ryan Houdek
d04f75df29
Frontend: Remove arbitrary check
...
REX prefix isn't even encoded in to the instruction tables if a 32-bit
process is running. Just remove this.
2025-07-30 11:53:15 -07:00
Ryan Houdek
a5260f4233
Merge pull request #4738 from bylaws/peggle
...
Implement inline SMC handling for linux FEX
2025-07-30 11:48:28 -07:00
Ryan Houdek
369ca5cb72
Merge pull request #4719 from Sonicadvance1/runtime_mode_switch_take2
...
Runtime mode switch take 2
2025-07-30 11:47:54 -07:00
Lioncache
a3e02cbafa
ASIMDOps: Simplify conditionals in saddlv/uaddlv
...
Really all these size conversions are emulating is a subtraction by 1.
Also we can drop in an assert that was missed in uaddlv
2025-07-30 11:21:06 -04:00
Lioncache
4cca2f6915
ASIMDOps: Move base opcode into ASIMDAcrossLanes()
2025-07-30 11:07:08 -04:00
Lioncache
64ca48c4b1
ASIMDOps: Move base opcode into ASIMD3Different()
...
Deduplicates the open-coded base opcode in the instruction implementations.
2025-07-30 10:59:11 -04:00
Lioncache
74a897271f
ASIMDOps: Move base opcode into ASIMD3Same()
...
Moves the base opcode into the actual implementation, so that we
aren't open-coding it into every relevant instruction function.
2025-07-30 10:40:17 -04:00
Tony Wasserka
c6733a6eec
Merge pull request #4731 from Sonicadvance1/armtifacts
...
github: Upload armtifacts
2025-07-30 10:22:49 +02:00
Tony Wasserka
f7e99678b4
Merge pull request #4730 from Sonicadvance1/fix_thunk_functional_path
...
unittests: Fixes thunk unittest path
2025-07-30 10:20:46 +02:00
Tony Wasserka
976b68ffec
Merge pull request #4713 from Sonicadvance1/free_the_stats
...
Profiler: Decouple profile stats from the profiler option
2025-07-30 10:19:07 +02:00