Ryan Houdek
9b0bb29d78
IR: Implement support for sha256h{2,}
...
I keep carrying this patch around. Not yet wired up to the instruction
implementation yet, but I don't want to forget about it.
2025-04-01 17:53:48 -07:00
Alyssa Rosenzweig
1f08f8df0d
IR: allow VUShrNI with bitshift=0
...
encodes to Xtn, we need this to narrow.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-03-31 16:03:18 -04:00
Alyssa Rosenzweig
0038a0b19c
IR: plumb Vector_FToISized op
...
this exposes the frint* opcodes in a new ir op
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-03-31 16:03:18 -04:00
Ryan Houdek
4ab6c2252d
IR: More validation for shifts
2025-03-27 04:36:41 -07:00
Ryan Houdek
4ebc307744
IR: Ensure BFE ops can't try to extract element larger than size
2025-03-27 04:26:40 -07:00
Alyssa Rosenzweig
694e674fe6
IR: tie VExtr
...
needed for sve-256 move reduction.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-03-25 15:22:55 -04:00
Alyssa Rosenzweig
7ebc0f32b8
IR: tie VInsGPR
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-03-25 15:16:25 -04:00
Alyssa Rosenzweig
68cacc2fc3
IR: tie VFMin/VFMax
...
this was missed.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-03-25 15:16:25 -04:00
Alyssa Rosenzweig
43eb597044
IR: tie VBSL source
...
this was missed before, noticed while experimenting with round robin RA.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2025-03-25 14:14:21 -04:00
Paulo Matos
e18a661b50
Refactor OP_STORESTACKMEM case in x87 Stack Opt Pass
2025-03-18 18:34:06 +01:00
Ryan Houdek
9f2f10a65f
IR: Add new 128-bit vector move operation
...
This allows us to slightly optimize some x87 behaviour.
2025-03-12 22:21:28 -07:00
Ryan Houdek
a37d6a3841
JIT: Optimize CAS
...
Hey kid, want to see a sick trick?
Finally optimal codegen for 64-bit cmpxchg.
2025-03-07 14:24:45 -08:00
Ryan Houdek
66841ce35c
IR: Remove some static analysis warnings
...
NFC
2025-03-05 12:30:27 -08:00
Paulo Matos
b5241e0f60
Improve reciprocal estimate and tests
...
3DNow Reciprocal estimations did not have enough accuracy. Tests were enabled
to check for accurate values of reciprocals.
* where needed, reciprocal accuracy was increased.
* 3DNow sqrt reciprocal fixed for negative values.
* New helper VFCopySign IR op added.
Fixes #4319 .
2025-02-27 15:07:14 +01:00
Ryan Houdek
de6931b1f5
OpcodeDispatcher: Emulate SHA1RNDS4 with ARM sha extensions
...
```diff
"sha1rnds4 xmm0, xmm1, 10b": {
- "ExpectedInstructionCount": 55,
+ "ExpectedInstructionCount": 10,
```
So I spent a few hours glaring at this instruction. Then spent a few
more glaring in to the sunset and then found the optimization.
2025-02-22 04:57:58 -08:00
Ryan Houdek
cdf6a16efc
JIT: Implement ARM VSha1SU1 IR operation
2025-02-19 11:33:38 -08:00
Ryan Houdek
bbcd4c168c
JIT: Implement support for VSha256U1 operation
2025-02-18 18:03:31 -08:00
Paulo Matos
44c65c35c8
Revert "Enable RA of SVE Predicate Registers"
...
This reverts commit fcbf0de05a .
The initial user of this code has been re-implemented in b148cc6c .
This is not needed any longer so we're removing it.
2025-01-29 11:56:19 +01:00
Paulo Matos
0bccb1ece5
Ensure predicate cache is reset when control flow leaves block
...
Whenever the control float leaves the block, it might clobber the
predicate register so we reset the cache whenever that happens.
Fixes #4264
2025-01-27 20:12:43 +01:00
Paulo Matos
2d53867668
x87 fst/fld optimization for different addrmodes
...
Includes tests and instcountci files and tests.
When the x87 optimizations were implement, we missed
optimizing different addressing modes. This commit addresses this issue.
Discussed in #4252 .
2025-01-14 16:20:33 +01:00
Ryan Houdek
1ecfa3253d
IR: Change convention from number of elements to elementsize
...
The IR stores elementsize, where the json was wanting number of
elements. While the IR Emitter function declaration always wanted
element size. This was causing us to do a little dance from ElementSize
-> Number of elements -> ElementSize. Just pass the ElementSize directly
instead of this bogus little dance.
2025-01-03 11:01:03 -08:00
Paulo Matos
1d3ce30e50
Generate SVE for 80bit load/stores when possible
...
Fixes #4166 .
2024-12-06 10:15:29 +01:00
Paulo Matos
fcbf0de05a
Enable RA of SVE Predicate Registers
2024-12-02 18:35:31 +01:00
Ryan Houdek
9b6cc8f7e0
IR: Convert OpSize over to enum class
...
NFC
Do the final mopping up to convert the OpSize enum to an enum class!
2024-10-29 16:52:16 -07:00
Ryan Houdek
82f936cb6d
IR: Converts base IR operations to store OpSize sizes
...
NFC
Finally converts the IR operations themselves to store the OpSize for
the IR operation size and element sizes.
This also finally, FINALLY, converts that remaining `_Constant` helper
to stop using a size field that is specified in bits rather than bytes
like all the other IR op handlers. That thing was so confusing and now
it's gone.
2024-10-28 21:26:59 -07:00
Ryan Houdek
6cca007817
IR: Fix some missing OpSize conversions
...
Missed these in the previous PR.
2024-10-28 16:25:36 -07:00
Ryan Houdek
65ddae1b71
IR: Change F80VBSLStack to use IR::OpSize
2024-10-28 02:25:17 -07:00
Ryan Houdek
063f524084
IR: Change F80CVTToInt to use IR::OpSize
2024-10-28 02:24:25 -07:00
Ryan Houdek
2dd0a82059
IR: Change F80CVTTo to use IR::OpSize
2024-10-28 02:23:47 -07:00
Ryan Houdek
b810070e9f
IR: Change F80CVTInt to use IR::OpSize
2024-10-28 02:07:20 -07:00
Ryan Houdek
4c7ac17f7d
IR: Change F80CVT to use IR::OpSize
2024-10-28 02:06:48 -07:00
Ryan Houdek
84767c8b20
IR: Change PushStack to use IR::OpSize
2024-10-28 02:05:35 -07:00
Ryan Houdek
eccfb53bd5
IR: Change StoreStackMemory to use IR::OpSize
2024-10-28 02:01:47 -07:00
Ryan Houdek
f4e930262f
IR: Change PCLMUL to use IR::OpSize
2024-10-28 01:50:24 -07:00
Ryan Houdek
d26d9e7e03
IR: Change CRC32 to use IR::OpSize
2024-10-28 01:50:24 -07:00
Ryan Houdek
51c1998d70
IR: Change VAESDecLast to use IR::OpSize
2024-10-28 01:50:24 -07:00
Ryan Houdek
87f818249d
IR: Change VAESDec to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
d81f92f5e2
IR: Change VAESEncLast to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
29ffe02afe
IR: Change VAESEnc to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
dfe4076fe4
IR: Change Vector_F64ToI32 to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
44f9df062e
IR: Change Vector_FToI to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
6f98ef8cbb
IR: Change VFCVTN2 to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
d54888a4c6
IR: Change VFCVTL2 to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
38c58706da
IR: Change Vector_FToF to use IR::OpSize
2024-10-28 01:50:23 -07:00
Ryan Houdek
8ad9286bd4
IR: Change Vector_FToZS to use IR::OpSize
2024-10-28 01:29:32 -07:00
Ryan Houdek
03bc962564
IR: Change Vector_FToS to use IR::OpSize
2024-10-28 01:28:56 -07:00
Ryan Houdek
947b7ae6fe
IR: Change Vector_SToF to use IR::OpSize
2024-10-28 01:23:20 -07:00
Ryan Houdek
30317ac979
IR: Change Float_FToF to use IR::OpSize
2024-10-28 01:22:45 -07:00
Ryan Houdek
4544e7c1af
IR: Change Float_FromGPR_S to use IR::OpSize
2024-10-28 01:21:48 -07:00
Ryan Houdek
34050431ff
IR: Change VDupFromGPR to use IR::OpSize
2024-10-28 01:20:06 -07:00