Alyssa Rosenzweig
77415538f7
OpcodeDispatcher: use 64-bit XOR for AF calc
...
we don't need masking and the masking gets in the way of constprop.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-12-13 10:44:56 -05:00
Billy Laws
981c3009ee
FEXCore: Emulate EFLAGS.TF
...
When set - either via POPF or a thread context operation - the trap flag
raises a single step exception after the execution of each instruction.
As e.g. a JUMP instruction with TF set will raise an exception at the
jump target. Handle this on the FEX side by storing both the flag itself
(in bit 0) and a 'block exceptions' flag (in bit 1, inverted). Each
generated block when TF is set is then forced to a single instruction
with logic to raise the exception at the start. Initially after setting
TF exceptions are blocked, then at the start of the block they are
unblocked so that after the instruction executes an exception is raised
at the start of the next block.
2024-12-10 15:20:47 +00:00
Ryan Houdek
0123946ed1
FEXCore: Removes GetGPRSize and convert all uses to GetGPROpSize
...
Only a few remaining uses left, easy enough to convert. This finally
switches the final few uses over.
NFC
2024-12-01 05:38:09 -08:00
LC
2e7fc60dbf
Merge pull request #4169 from Sonicadvance1/x87_loadstore_tests
...
unittests/ASM: Fixes x87 80-bit loads on the edge of page boundaries.
2024-11-30 10:43:10 -05:00
Alyssa Rosenzweig
d19473160d
OpcodeDispatcher: drop InvalidateDeferredFlags
...
it is now useless.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-11-26 09:02:01 -05:00
Alyssa Rosenzweig
aeb2c98cbf
OpcodeDispatcher: drop PossiblySetNZCV
...
this is a pain to track and, it turns out, buys us virtually nothing on flagm
systems. rip it out.
this fixes a bug with failing to set in all the right places.
on non-flagm systems there's a slight instcountci impact, but that is mostly
mitigated by the earlier patches in the series. so overall a wash there but
worth it for making the codebase easier
to reason about.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-11-26 08:59:19 -05:00
Ryan Houdek
1465df874b
OpcodeDispatcher: Fixes 80-bit loads
...
Ensures reads don't go past the end of the page boundary.
SVE masked loads can make this more effective but `VLoadVectorMasked`
isn't setup to be efficient for this case yet.
2024-11-24 00:36:50 -08: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
4b10cbdafd
OpcodeDispatcher: Convert flags helpers over to OpSize
...
NFC
Plus the tertiary bits that require changing to support it.
2024-10-28 18:56:42 -07:00
Ryan Houdek
2dd0a82059
IR: Change F80CVTTo to use IR::OpSize
2024-10-28 02:23:47 -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
44f9df062e
IR: Change Vector_FToI 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
03bc962564
IR: Change Vector_FToS to use IR::OpSize
2024-10-28 01:28:56 -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
Ryan Houdek
65439956bf
IR: Change VCastFromGPR to use IR::OpSize
2024-10-28 01:18:21 -07:00
Ryan Houdek
bd5159c7d5
IR: Change VFMLA to use IR::OpSize
2024-10-28 01:15:01 -07:00
Ryan Houdek
0fa095cec5
IR: Change VFCMPEQ to use IR::OpSize
2024-10-28 01:10:07 -07:00
Ryan Houdek
9e3c50ca2c
IR: Change VExtr to use IR::OpSize
2024-10-28 01:08:35 -07:00
Ryan Houdek
365d8b9508
IR: Change VInsGPR to use IR::OpSize
2024-10-28 01:07:16 -07:00
Ryan Houdek
02ebe06496
IR: Change VInsElement to use IR::OpSize
2024-10-28 01:05:34 -07:00
Ryan Houdek
34d5e70e6b
IR: Change VUShlSWide to use IR::OpSize
2024-10-28 00:59:33 -07:00
Ryan Houdek
2d8bd7b59d
IR: Change VSShrSWide to use IR::OpSize
2024-10-28 00:57:02 -07:00
Ryan Houdek
3a6f5e638b
IR: Change VUShrSWide to use IR::OpSize
2024-10-28 00:54:45 -07:00
Ryan Houdek
ac14a88647
IR: Change VUABDL to use IR::OpSize
2024-10-28 00:48:32 -07:00
Ryan Houdek
c5f396d889
IR: Change VUMulH to use IR::OpSize
2024-10-28 00:47:08 -07:00
Ryan Houdek
503c86d47d
IR: Change VSMull to use IR::OpSize
2024-10-28 00:45:23 -07:00
Ryan Houdek
7ec21b7121
IR: Change VFAddP to use IR::OpSize
2024-10-28 00:41:18 -07:00
Ryan Houdek
33b3814642
IR: Change VTrn2 to use IR::OpSize
2024-10-28 00:37:44 -07:00
Ryan Houdek
85431a8132
IR: Change VTrn to use IR::OpSize
2024-10-28 00:35:12 -07:00
Ryan Houdek
b2ae829731
IR: Change VUnZip to use IR::OpSize
2024-10-28 00:31:23 -07:00
Ryan Houdek
a3c544a9a1
IR: Change VZip2 to use IR::OpSize
2024-10-28 00:27:28 -07:00
Ryan Houdek
9c2292289b
IR: Change VZip to use IR::OpSize
2024-10-28 00:26:34 -07:00
Ryan Houdek
ac55e468a7
IR: Change VAddP to use IR::OpSize
2024-10-28 00:20:07 -07:00
Ryan Houdek
e20db7dc88
IR: Change VSQSub to use IR::OpSize
2024-10-28 00:18:03 -07:00
Ryan Houdek
235bee9191
IR: Change VSQAdd to use IR::OpSize
2024-10-28 00:17:20 -07:00
Ryan Houdek
0dfd5dd96f
IR: Change VXor to use IR::OpSize
2024-10-28 00:15:33 -07:00
Ryan Houdek
beed43e577
IR: Change VAndn to use IR::OpSize
2024-10-28 00:12:37 -07:00
Ryan Houdek
fc04b9113e
IR: Change VAnd to use IR::OpSize
2024-10-28 00:11:44 -07:00
Ryan Houdek
68c038085a
IR: Change VSub to use IR::OpSize
2024-10-28 00:10:21 -07:00
Ryan Houdek
176f5a2860
IR: Change VAdd to use IR::OpSize
2024-10-28 00:07:30 -07:00
Ryan Houdek
e7c9623aa9
IR: Change VRev64 to use IR::OpSize
2024-10-27 23:36:03 -07:00
Ryan Houdek
0ba501636e
IR: Change VSRSHR to use IR::OpSize
2024-10-27 23:33:49 -07:00
Ryan Houdek
ceca9fff17
IR: Change VSQXTUNPair to use IR::OpSize
2024-10-27 23:30:02 -07:00
Ryan Houdek
5247b7124f
IR: Change VSQXTNPair to use IR::OpSize
2024-10-27 23:26:55 -07:00
Ryan Houdek
0692b34192
IR: Change VSXTL to use IR::OpSize
2024-10-27 23:21:17 -07:00