Ryan Houdek
f3449f2b00
IR: Change StoreMemTSO to use IR::OpSize
2024-10-27 17:17:26 -07:00
Ryan Houdek
d7691d9a25
IR: Change LoadMemTSO to use IR::OpSize
2024-10-27 17:16:23 -07:00
Ryan Houdek
f414d4934c
IR: Change StoreMemPair to use IR::OpSize
2024-10-27 17:15:00 -07:00
Ryan Houdek
014917301a
IR: Change StoreMem to use IR::OpSize
2024-10-27 17:14:18 -07:00
Ryan Houdek
cc483acbde
IR: Change LoadMemPair to use IR::OpSize
2024-10-27 16:33:52 -07:00
Ryan Houdek
07f8a4eadd
IR: Change LoadMem to use IR::OpSize
2024-10-27 16:33:14 -07:00
Ryan Houdek
5fd127b53a
IR: Change StoreContextIndexed to use IR::OpSize
2024-10-27 15:51:30 -07:00
Ryan Houdek
ece89ddeab
IR: Change LoadContextIndexed to use IR::OpSize
2024-10-27 15:50:03 -07:00
Ryan Houdek
a1565a7d99
IR: Change StoreContextPair to use IR::OpSize
2024-10-27 15:47:08 -07:00
Ryan Houdek
2f9b0de742
IR: Change StoreContext to use IR::OpSize
2024-10-27 15:46:32 -07:00
Ryan Houdek
7e5f1b5859
IR: Change LoadContextPair to use IR::OpSize
2024-10-27 15:42:39 -07:00
Ryan Houdek
40fd4bbb66
IR: Change LoadContext to use IR::OpSize
2024-10-27 15:42:07 -07:00
Ryan Houdek
e4143352c9
IR: Change Store{PF,AF} to use IR::OpSize
2024-10-27 15:37:41 -07:00
Ryan Houdek
c045e14837
IR: Change StoreRegister to use IR::OpSize
2024-10-27 15:37:05 -07:00
Ryan Houdek
f0f3c215ce
IR: Change Load{PF,AF} to use IR::OpSize
2024-10-27 15:35:26 -07:00
Ryan Houdek
8f4113d859
IR: Change LoadRegister to use IR::OpSize
2024-10-27 15:34:46 -07:00
Ryan Houdek
4cfc2ac1a4
IR: Change AllocateFPR to use IR::OpSize
2024-10-27 15:30:11 -07:00
Ryan Houdek
e8baf4a28c
OpcodeDispatcher: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:25 -07:00
Ryan Houdek
e438d32879
OpcodeDispatcher/Vector: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:07 -07:00
Ryan Houdek
32ef10b273
OpcodeDispatcher/AVX128: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:07 -07:00
Ryan Houdek
ad296051b7
OpcodeDispatcher/Crypto: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:07 -07:00
Ryan Houdek
e603136918
OpcodeDispatcher/Flags: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:07 -07:00
Ryan Houdek
f8a61f7d7e
OpcodeDispatcher/X87: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:07 -07:00
Ryan Houdek
cb5ba8baae
OpcodeDispatcher/X87F64: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:07 -07:00
Ryan Houdek
b31e4a3c27
JIT: Moves Arm64 JIT up one folder
...
We have only one JIT, there is no reason to subfolder this. Move it up
one folder.
NFC
2024-10-25 18:44:20 -07:00
LC
992d6e8477
Merge pull request #4136 from Sonicadvance1/support_tpidrro
...
FEXCore: Adds support for CPU Index through TPIDRRO
2024-10-25 21:43:33 -04:00
LC
f6cdb165a3
Merge pull request #4137 from Sonicadvance1/minor_pushf_opt
...
OpcodeDispatcher: Minor optimization to small pushf
2024-10-25 21:42:45 -04:00
Ryan Houdek
f143462ebe
OpcodeDispatcher: Minor optimization to small pushf
...
The push operation already truncates the result, there's no need to bfe
it. Noticed this while cleaning up in #4134 . Removes one instruction for
16-bit and 32-bit pushf instructions.
2024-10-25 15:41:22 -07:00
Ryan Houdek
048e967546
FEXCore: Adds support for CPU Index through TPIDRRO
2024-10-25 15:07:57 -07:00
Ryan Houdek
01a6e914f2
X86Tables: Removes XOP tables
...
These weren't even wired up to the frontend. We aren't going to support
XOP, so just remove the tables.
2024-10-25 14:32:13 -07:00
Paulo Matos
5f6c0d2245
X87 code simplification
...
Merges some of the code from reduced precision into the main path
since they are practically the same.
2024-10-24 18:15:49 +02:00
Ryan Houdek
caaacb6c15
Merge pull request #4127 from alyssarosenzweig/opt/masking
...
Optimize bsf, bsr, register cmpxchg, pcmpistri
2024-10-23 07:28:29 -07:00
Alyssa Rosenzweig
58a3d174ec
OpcodeDispatcher: explain why we provide defined bsf behaviour
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:36:24 -04:00
Alyssa Rosenzweig
9c605e7333
OpcodeDispatcher: optimize bsf/bsr
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:31:49 -04:00
Alyssa Rosenzweig
1fd7e88ffd
OpcodeDispatcher: optimize cmp in cmpxchg
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Alyssa Rosenzweig
c5e7da0631
OpcodeDispatcher: optimize more cmpxchg mask
...
none of it matters.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Alyssa Rosenzweig
68f58e415f
OpcodeDispatcher: optimize cmpxchg masking
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Alyssa Rosenzweig
698abec25c
JIT: drop FindMSB zero handling
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Alyssa Rosenzweig
1578f5ed47
JIT: drop FindLSB masking
...
consequence of the UB
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Alyssa Rosenzweig
80d7b5a5c9
JIT: drop FindLSB zero handling
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Alyssa Rosenzweig
eb023ceb51
IR: make FindLSB/FindMSB undefined for zero
...
these are used in places:
* bsf/bsr
* pcmpblabla
* x87 fild
In all cases we explicitly check for zero and change the behaviour accordingly.
So weaken the IR op to let us optimize. No sense checking twice.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-22 13:29:47 -04:00
Ryan Houdek
fafc04a59e
OpcodeDispatcher/AVX128: Fixes glibc allocation
2024-10-21 09:34:59 -07:00
Ryan Houdek
fe8f5c745d
OpcodeDispatcher/AVX128: Use unified PSHUF{L,H}W implementation
...
Allows the AVX128 implementation to use the same implementation as the
128-bit SSE implementation, because it works per 128-bit lane just like
SSE. Is a minor optimization.
2024-10-21 09:24:38 -07:00
Ryan Houdek
d876224358
OpcodeDispatcher: Unify MMX and SSE PSHUF{L,H}W implementations
...
No functional change.
2024-10-21 09:11:05 -07:00
Ryan Houdek
d7afcee622
AVX128: Fixes asome AVX bugs
...
vblendvps, vblendvpd, vpblendvb all broke because of failing to zext the
128-bit register correctly.
vinsertps broke because it was accidentally using the wrong
implementation.
Extends each of their unittests to handle these cases.
2024-10-18 15:49:25 -07:00
Paulo Matos
10ec6b63b6
Fix FXTRACT for 0.0 and -0.0
...
Fixes fxtract by returning the correct values for 0.0 and -0.0. We moved the split of fxtract into _sig and _exp, to the opcode dispatcher, to ease some comparisons.
Also removed the IR node F80XTRACTStack which is not needed anymore.
2024-10-17 09:05:10 +02:00
Paulo Matos
49087007be
Implement NZCVSelectV for selection on FPRs
...
Behaves like NZCVSelect for FPRs.
2024-10-17 08:42:50 +02:00
Ryan Houdek
4b945a9041
Merge pull request #4105 from pmatos/X87MMXState
...
Implement explicit state switch between X87 and MMX
2024-10-16 15:52:27 -07:00
Paulo Matos
0d53f2b45c
Implements explicit state switch between X87 and MMX
...
Fixes #3850
2024-10-15 17:58:53 +02:00
Ryan Houdek
e53f3969e9
FEXCore: Change yield implementation to use wfe
...
According to
https://github.com/rust-lang/rust/commit/c064b6560b7ce0adeb9bbf5d7dcf12b1acb0c807
turns out that the arm yield instruction is effectively a nop on all
reasonably new CPUs.
Instead switch over to wfe because it matches x86 `PAUSE` semantics more
closely.
2024-10-15 05:50:26 -07:00