Ryan Houdek
bb10f25808
OpcodeDispatcher: Minor division improvement
...
No need to extract the subregisters out before operating on them since
the long division and long remainder IR operations correctly zero/sign
extend the incoming sources as necessary. Saves a couple of
instructions.
2024-12-20 13:20:52 -08:00
Billy Laws
b51fa497c5
OpcodeDispatcher: Mask TF for pop ss instructions
2024-12-10 15:20:47 +00:00
Paulo Matos
72a4063651
Cache predicate register generation from pattern
2024-12-06 10:15:38 +01:00
Paulo Matos
1d3ce30e50
Generate SVE for 80bit load/stores when possible
...
Fixes #4166 .
2024-12-06 10:15:29 +01: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
Alyssa Rosenzweig
2350ae5a07
OpcodeDispatcher: optimize BTC on !flagm
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-11-26 08:59:19 -05:00
Alyssa Rosenzweig
6076d1747e
OpcodeDispatcher: use NZV invalidate CF set for BT
...
this is similar perf on flagm and better on not flagm.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io >
2024-11-26 08:59:19 -05:00
Alyssa Rosenzweig
f4ce6fb621
OpcodeDispatcher: optimize AAS/AAD flag
...
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
7b615a07d0
OpcodeDispatcher: Various missed OpSize implicit cast fixes
...
NFC
Probably more of these around, just tracking the few I found.
2024-10-28 19:18:36 -07:00
LC
704841f004
Merge pull request #4144 from Sonicadvance1/iropsize_addrsize
...
OpcodeDispatcher: Convert address size helpers to use OpSize
2024-10-28 22:12:40 -04:00
Ryan Houdek
f74f276d64
OpcodeDispatcher: Convert address size helpers to use OpSize
...
NFC
2024-10-28 19:02:34 -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
5ed82fa0f6
OpcodeDispatcher: Convert {Load,Store}GPRRegister to OpSize
...
Trivial but quite a few places pass in a raw integer
NFC
2024-10-28 16:35:23 -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
d26d9e7e03
IR: Change CRC32 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
34050431ff
IR: Change VDupFromGPR to use IR::OpSize
2024-10-28 01:20:06 -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
7ec21b7121
IR: Change VFAddP to use IR::OpSize
2024-10-28 00:41:18 -07:00
Ryan Houdek
b2ae829731
IR: Change VUnZip to use IR::OpSize
2024-10-28 00:31:23 -07:00
Ryan Houdek
9c2292289b
IR: Change VZip to use IR::OpSize
2024-10-28 00:26:34 -07:00
Ryan Houdek
0dfd5dd96f
IR: Change VXor to use IR::OpSize
2024-10-28 00:15:33 -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
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
Ryan Houdek
8cf92d3303
IR: Change VSShrI to use IR::OpSize
2024-10-27 23:03:21 -07:00
Ryan Houdek
9b981a4f61
IR: Change VShlI to use IR::OpSize
2024-10-27 22:55:08 -07:00
Ryan Houdek
c791893b4a
IR: Change VDupElement to use IR::OpSize
2024-10-27 22:50:47 -07:00
Ryan Houdek
0a34a43976
IR: Change VFSqrt to use IR::OpSize
2024-10-27 22:42:37 -07:00
Ryan Houdek
b533dcd86d
IR: Change VNot to use IR::OpSize
2024-10-27 22:27:28 -07:00
Ryan Houdek
886db4ffca
IR: Change LoadNamedVectorConstant to use IR::OpSize
2024-10-27 22:05:42 -07:00
Ryan Houdek
e6f6ee2bcd
IR: Change VectorImm to use IR::OpSize
2024-10-27 21:58:34 -07:00
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