LC
ee2fb57f4e
AVX: Handle full broadcast in VDPPS
...
Another trivial case that can be handled without crazy codegen.
2026-06-27 10:11:27 -04:00
LC
11fe95d8ea
AVX: Simplify trivial case of VDPPS
...
Just a silly case where we only need to return the zero vector
2026-06-27 09:55:35 -04:00
LC
78832cc0d0
Merge pull request #5612 from Sonicadvance1/174
...
Windows: Load unixlib if possible
2026-06-27 22:25:43 -04:00
Ryan Houdek
70fe9a4405
Merge pull request #5614 from lioncash/whoops
...
Vector: Fix typo in VPERMQOp
2026-06-26 21:45:33 -07:00
Ryan Houdek
c09225f868
Windows: Load unixlib if possible
...
Currently does nothing other than load it (as the library also doesn't
do anything yet). Ensured it was working by temporarily creating a test
entrypoint and doing `Call` on to it.
Next step after this is to reimplement some of the nasty hacks FEX is
doing inside the unixlib code itself.
2026-06-26 20:50:24 -07:00
Ryan Houdek
126bcd365d
winternl: Update enums
...
Newer WINE has a better mechanism for asking to load unix libraries.
Older WINE like what is in Proton doesn't have this yet. Add definitions
for both so we can try either one.
2026-06-26 20:50:19 -07:00
LC
fe4d2bc6c5
Merge pull request #5611 from Sonicadvance1/173
...
Windows: Adds empty Linux side unix library
2026-06-26 23:48:51 -04:00
Ryan Houdek
dbaf22372c
Windows: Adds empty Linux side unix library
...
We are going to need a unix library. Going to take this one step at a
time without AI/ML so I fully understand all the pieces of the puzzle,
and to ensure we don't lose any functionality before we're ready.
This only ensures that we are building the Linux facing .so files for
arm64ec and wow64, but they are empty today. Next PR will be
initializing it on the PE side.
2026-06-26 19:05:08 -07:00
LC
43bd243457
Merge pull request #5609 from Sonicadvance1/170
...
OpcodeDispatcher: Fixes CRC32 with high 8-bit register
2026-06-26 15:30:00 -04:00
Ryan Houdek
26266c6a94
InstcountCI: Adds CRC32 with high 8-bit register
2026-06-26 11:38:08 -07:00
Ryan Houdek
64392b2d45
OpcodeDispatcher: Fixes CRC32 with high 8-bit register
...
Assertion failure in `_Bfe` IR operation when encountering this
instruction. Ensure the GPR source is sized appropriately.
2026-06-26 11:34:45 -07:00
LC
d555ee8bcc
Vector: Fix typo in VPERMQOp
...
Noticed this in my own writing and it bothered me.
2026-06-26 14:16:54 -04:00
Simon Scherer
0c1a35f297
unittests/ASM: Add unit test for crc32 with 8bit register operand
2026-06-26 11:10:06 -07:00
Tony Wasserka
9ac608ca43
Merge pull request #5606 from Sonicadvance1/169
...
LibraryForwarding/cuda: Convert constexpr to const
2026-06-26 11:17:49 +02:00
Ryan Houdek
7ae55d73c1
Merge pull request #5607 from lioncash/broadcast
...
AVX: Handle easily broadcastable permutations in VPERMQ
2026-06-25 20:23:55 -07:00
LC
8102a0974a
AVX: Handle easily broadcastable permutations in VPERMQ
...
When we have a 3 element identical permutation followed by a single
unique outlier, we can simplify the whole operation into a single
broadcast followed by an insert.
e.g.
0b00'00'00'01
0b00'01'01'01
0b11'11'00'11
are all examples of cases where we can broadcast and then insert.
2026-06-25 21:48:56 -04:00
Ryan Houdek
f8491794d3
thunks/cuda: Convert constexpr to const
...
Apparently some compilers or libstdc++ or libc++ takes offence to
constexpr std::array that gets filled by GOT. My compiler this generates
the same code regardless but I guess this'll probably fix #5582 .
2026-06-25 16:53:59 -07:00
Ryan Houdek
d5be15c90e
Merge pull request #5605 from lioncash/permq
...
AVX: Skip identity insertions in VPERMQ
2026-06-25 11:51:25 -07:00
LC
e91efc6694
AVX: Skip identity insertions in VPERMQ
...
In the slower case, if our iteration index and the selector index match,
then all that means is that we'd be inserting the same data that already exists
at that location, so we can skip the insertion in that case.
2026-06-25 14:33:49 -04:00
Ryan Houdek
3d66be9e5a
Merge pull request #5604 from lioncash/pcmpstr
...
instcountci: Add 16-bit pcmpxstrx variants
2026-06-25 10:23:59 -07:00
Ryan Houdek
ec1b24d05b
Merge pull request #5603 from lioncash/permq
...
AVX: Handle transpose cases in VPERMQ
2026-06-25 01:18:01 -07:00
Ryan Houdek
d93997c1cb
Merge pull request #5602 from lioncash/same
...
AVX: Remove unnecessary dup if sources are the same in SHUFOpImpl
2026-06-24 23:38:29 -07:00
Ryan Houdek
e19aa975c8
Merge pull request #5597 from simon902/BTOpTypo
...
OpcodeDispatcher: Fix incorrect comment for BTOp. ZF must be preserved.
2026-06-24 23:31:09 -07:00
Simon Scherer
3f02dd0a36
OpcodeDispatcher: Update BTOp comment to clarify AMD vs Intel flag behavior
2026-06-25 07:36:32 +02:00
Ryan Houdek
ab4e0f653a
Merge pull request #5600 from lioncash/palign
...
AVX: Shave some moves off 256-bit VPALIGNR
2026-06-24 11:18:51 -07:00
Ryan Houdek
fda023e7dc
Merge pull request #5601 from lioncash/pshufb
...
AVX: Reduce moves in 256-bit VPSHUFB
2026-06-24 10:44:07 -07:00
Ryan Houdek
ad618be979
Merge pull request #5599 from lioncash/unused
...
Vector: Remove unused OpcodeArgs parameter from SHUFOpImpl
2026-06-24 09:47:38 -07:00
Ryan Houdek
5881266256
Merge pull request #5598 from lioncash/ilpd
...
AVX: Wire up helper to VPERMILPD
2026-06-24 09:03:22 -07:00
Simon Scherer
e03187852b
OpcodeDispatcher: Fix incorrect comment for BTOp. ZF must be preserved.
2026-06-24 16:11:13 +02:00
Ryan Houdek
b846cb6c2c
Merge pull request #5596 from lioncash/ilps
...
AVX: Wire up lane helper for VPERMILPS imm variant
2026-06-24 00:56:36 -07:00
Ryan Houdek
62ecdd650f
Merge pull request #5595 from lioncash/pspd
...
AVX: Wire up lane helper for VSHUFPD/VSHUFPS
2026-06-24 00:22:12 -07:00
Ryan Houdek
9f195ff377
Merge pull request #5594 from lioncash/pshuf
...
AVX: Wire up lane helper for VPSHUFD/VPSHUFLW/VPSHUFHW
2026-06-23 20:31:04 -07:00
Ryan Houdek
27a5f09185
Merge pull request #5592 from ShadowCurse/fixes
...
JIT: Arm64: fix the loop in CacheLineClear/Clean
2026-06-23 17:15:07 -07:00
Ryan Houdek
01b0b4e653
Merge pull request #5593 from lioncash/dup
...
VectorOps: Avoid dup if able in VInsElement 128-bit element path
2026-06-23 17:10:35 -07:00
Egor Lazarchuk
ff5dfff5bb
IR: fix typo in CacheLineClean description
2026-06-24 00:38:59 +01:00
Egor Lazarchuk
e3e9777ee6
JIT: Arm64: fix the loop in CacheLineClear/Clean
...
These functions need to clean at least 64 bytes of cache since this is
the default on x86_64, but previously they could clean less if
DCacheLineSize was smaller than 64 bytes.
2026-06-24 00:38:48 +01:00
Ryan Houdek
7dc2dc8749
Merge pull request #5591 from lioncash/typo
...
OpcodeDispatcher: Fix typo in comment
2026-06-23 16:16:29 -07:00
Ryan Houdek
4eb5694872
Merge pull request #5590 from lioncash/insert
...
AVX: Reduce inserts in VBLENDPS/VPBLENDD/VPBLENDW
2026-06-23 15:21:45 -07:00
Ryan Houdek
681c5e8097
Merge pull request #5589 from lioncash/selector
...
OpcodeDispatcher: Sanitize selectors for VBLENDPD/VPBLENDD
2026-06-23 13:01:41 -07:00
Ryan Houdek
5ad06b0255
Merge pull request #5588 from lioncash/pinsr
...
AVX: Remove unnecessary moves from PINSRX ops
2026-06-23 12:34:03 -07:00
LC
a2889a09e3
Vector: Move zero constant closer to use in PCMPXSTRXOpImpl
...
Same behavior, but constrains the only scope it's used in.
2026-06-23 09:35:41 -04:00
LC
a4cd5f7584
instcountci: Add 16-bit pcmpxstrx variants
...
Also adds expanded mask variants. Lets us get a better whole picture on
all the main paths of these instructions.
2026-06-23 09:25:37 -04:00
LC
cf098a0de6
AVX: Handle transpose cases in VPERMQ
...
These can be single instruction operations.
2026-06-23 00:39:42 -04:00
Ryan Houdek
1619374252
Merge pull request #5587 from lioncash/pd
...
[SVE256] Add fast paths for trivial VSHUFPD flags (0b0000, and 0b1111)
2026-06-22 21:04:42 -07:00
Ryan Houdek
c13064e201
Merge pull request #5586 from lioncash/mov
...
[SVE256] Remove unnecessary move in VCVTPS2PD
2026-06-22 20:44:23 -07:00
LC
20647f2287
AVX: Remove unnecessary dup if sources are the same in SHUFOpImpl
...
Eliminates a trivial move.
2026-06-22 22:15:34 -04:00
Ryan Houdek
37e32fbcb9
Merge pull request #5585 from lioncash/cmp-move
...
[SVE256] Remove heavy handed moves from scalar compares
2026-06-22 17:26:37 -07:00
Ryan Houdek
27acbba52e
Merge pull request #5584 from lioncash/cmp_scalar
...
[SVE256] More comprehensively test SSE insertions for scalar comparisons
2026-06-22 15:49:57 -07:00
Ryan Houdek
6f33d2b4c4
Merge pull request #5583 from lioncash/scalar
...
[SVE256] Add more SSE scalar variant unit tests
2026-06-22 12:41:52 -07:00
LC
a2e4209f4f
AVX: Reduce moves in 256-bit VPSHUFB
...
Just a minor reduction by avoiding insertion overhead.
2026-06-22 10:47:49 -04:00