Ryan Houdek
5566b4455b
IR: Change VFCMPScalarInsert to use IR::OpSize
2024-10-27 18:35:03 -07:00
Ryan Houdek
fed2c13521
IR: Change VFToIScalarInsert to use IR::OpSize
2024-10-27 18:32:11 -07:00
Ryan Houdek
5626f4e50a
IR: Change VSToFVectorInsert to use IR::OpSize
2024-10-27 18:27:39 -07:00
Ryan Houdek
081907e168
IR: Change VFAddScalarInsert to use IR::OpSize
2024-10-27 18:14:37 -07:00
Ryan Houdek
1a115a8ce6
IR: Change FCmp to use IR::OpSize
2024-10-27 18:06:34 -07:00
Ryan Houdek
1bde30a196
IR: Change Float_ToGPR_S to use IR::OpSize
2024-10-27 18:02:45 -07:00
Ryan Houdek
764aacaa8f
IR: Change VExtractToGPR to use IR::OpSize
2024-10-27 17:58:53 -07:00
Ryan Houdek
b31ce13f68
IR: Change Pop to use IR::OpSize
2024-10-27 17:41:30 -07:00
Ryan Houdek
260d3b0b4e
IR: Change Push to use IR::OpSize
2024-10-27 17:39:21 -07:00
Ryan Houdek
c8c7ffbf05
IR: Change VBroadcastFromMem to use IR::OpSize
2024-10-27 17:35:56 -07:00
Ryan Houdek
4b03185b77
IR: Change VStoreVectorElement to use IR::OpSize
2024-10-27 17:32:25 -07:00
Ryan Houdek
014917301a
IR: Change StoreMem to use IR::OpSize
2024-10-27 17:14:18 -07:00
Ryan Houdek
07f8a4eadd
IR: Change LoadMem to use IR::OpSize
2024-10-27 16:33:14 -07:00
Ryan Houdek
ece89ddeab
IR: Change LoadContextIndexed to use IR::OpSize
2024-10-27 15:50:03 -07:00
Ryan Houdek
2f9b0de742
IR: Change StoreContext to use IR::OpSize
2024-10-27 15:46:32 -07:00
Ryan Houdek
40fd4bbb66
IR: Change LoadContext to use IR::OpSize
2024-10-27 15:42:07 -07:00
Ryan Houdek
e8baf4a28c
OpcodeDispatcher: Ensure IR ops use OpSize
...
NFC
2024-10-27 14:11:25 -07: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
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
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
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
0d53f2b45c
Implements explicit state switch between X87 and MMX
...
Fixes #3850
2024-10-15 17:58:53 +02:00
Alyssa Rosenzweig
e2d58809ed
OpcodeDispatcher: rm dead
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-02 13:38:48 -04:00
Alyssa Rosenzweig
967a74cda9
OpcodeDispatcher: manually inline constants
...
less work for constprop.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-10-02 13:38:48 -04:00
Ryan Houdek
dc2a26582f
FEXCore/OpcodeDispatcher: Fixes missing static on some tables
...
This was causing egregious stack usage in these two functions
2024-09-16 18:52:55 -07:00
Ryan Houdek
c984bdb42a
OpcodeDispatcher: Remove previous template instantiantions and use Bind
2024-09-16 18:52:54 -07:00
Ryan Houdek
2645b374a7
OpcodeDispatcher: Deduplicate InstallToTable helper
2024-09-16 18:52:54 -07:00
Ryan Houdek
0e57cbf5b9
OpcodeDispatcher: Remove EVEX table install
...
This hasn't been necessary for quite a while as we handle
invalid/unsupported opcodes in the frontend now.
2024-09-16 17:40:20 -07:00
Ryan Houdek
c7413d96ad
OpcodeDispatcher: Constexpr-ify VEX & VEXGroup tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
f3ba8cb33c
OpcodeDispatcher: Constexpr-ify DDD tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
e714933b10
OpcodeDispatcher: Constexpr-ify H0F3A tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
9a0f83cbf6
OpcodeDispatcher: Constexpr-ify H0F38 tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
c4d30e8437
OpcodeDispatcher: Constexpr-ify SecondaryModRM tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
7b30df8a56
OpcodeDispatcher: Constexpr-ify SecondaryGroup tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
86aa459dd1
OpcodeDispatcher: Constexpr-ify PrimaryGroup tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
6c9a47fc71
OpcodeDispatcher: Constexpr-ify Secondary OpSizeMod tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
7a72cf631b
OpcodeDispatcher: Constexpr-ify Secondary RepNEMod tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
3d98eef7b8
OpcodeDispatcher: Constexpr-ify Secondary RepMod tables
2024-09-16 17:40:20 -07:00
Ryan Houdek
f2011b0b79
OpcodeDispatcher: Constexpr-ify Secondary base tables
2024-09-16 17:40:19 -07:00
Ryan Houdek
37a70e2ec6
FEXCore: Convert Base tables over to constexpr
...
Only doing the single table for review purposes. Once reviewed I will
hammer out the remaining tables.
Similar to #3320 , most of the OpcodeDispatcher tables can be consteval
and made to be a compile time constant. This just requires shuffling the
code slightly. The idea is to get almost all of the table setup out of
the `InstallOpcodeHandlers` function and instead only install the
handlers that change based on 32-bit or 64-bit, just like the x86 tables
we also did.
2024-09-13 11:39:09 -07:00
Ryan Houdek
a94aaca0ec
OpcodeDispatcher: Add default FEX_UNREACHABLE
...
This can't happen but if it changes then make sure we capture it.
2024-09-08 18:03:20 -07:00
Alyssa Rosenzweig
e9ab514962
IR: push parity evaluation down
...
so we can optimize it globally
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-09-07 08:26:04 -04:00
Billy Laws
f7b911ca43
OpcodeDispatcher: Do not forbid INT 2E syscalls on 64-bit Windows
...
This works fine on real Windows and is relied on by wine as SystemCall
is set to 1 in KUSER_SHARED_DATA, which causes the ntdll thunks to use
it over `syscall`
2024-09-06 15:58:17 +00:00
Ryan Houdek
fd4f6b8020
FEXCore: Dynamically scale TSC
...
When I implemented TSC scaling originally, I chose a scale factor of 128
because it basically covered the range of devices we cared about without
going too high. I also only tested devices that had a TSC scale factor
from 19.2Mhz to 34Mhz. Turns out there is hardware that also has a 48Mhz
cycle counter, which cause them to effectively have a 6.1Ghz cycle
counter, which is kind of absurd.
Instead of a fixed scale, just calculate the amount of scaling we need
to get >= the minimum threshold of 1Ghz. This will change the shift from
7 to 5 or 6 for the faster cycle counter devices.
Of course if someone wants to know the scale factor they can still use
cpuid function 15h to know it.
Fixes #4026
2024-09-03 13:41:31 -07:00
Alyssa Rosenzweig
335cd9180e
OpcodeDispatcher: optimize mul rax
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-08-27 12:32:43 -04:00
Mai
2829ad56a1
Merge pull request #3996 from Sonicadvance1/more_bind
...
OpcodeDispatcher: Convert more template handlers to Bind handlers
2024-08-23 18:27:59 -04:00