Billy Laws
3792f707dc
FEXLoader: Convert between abridged/full tag fmts in signal dispatch
...
X86 fpstate expects FTW to be saved in the FSAVE format, whereas X64
fpstate expects it to be saved in the abridged format used by FXSAVE.
2023-09-02 09:17:33 -07:00
Billy Laws
cb49373f47
FEXCore: Rework X87 tag word handling
...
The FXSAVE and FSAVE tag words are written out in different formats,
with FXSAVE using an abridged version that lacks the zero/special/valid
distinction. Switch to using this abridged version internally for
simplicity, and to allow the calculation of zero/special/valid
distinction to be deferred until an fxsave instruction (in the future,
currently the distinction is ignored and only valid/empty states are
possible).
2023-09-02 09:17:33 -07:00
Ryan Houdek
435f03c703
Context: Adds helper to reconstruct and consume packed EFLAGS
...
Currently FEX's internal EFLAGS representation is a perfect 1:1 mapping
between bit offset and byte offset. This is going to change with #3038 .
There should be no reason that the frontend needs to understand how to
reconstruct the compacted flags from the internal representation.
Adds context helpers and moves all the logic to FEXCore. The locations
that previously needed to handle this have been converted over to use
this.
2023-09-02 07:05:54 -07:00
Ryan Houdek
1446d4fe12
IR: Adds support for named vector zero
...
This is useful for caching a zero register vector which we use in
various locations. This will be abused soon.
2023-08-30 18:59:38 -07:00
Ryan Houdek
81a32c3998
FEXCore: Allows disabling telemetry at runtime
...
This is useful for InstCountCI so you can disable the telemetry
gathering even if enabled so it doesn't affect the CI system.
2023-08-30 12:59:41 -07:00
Ryan Houdek
d8f131fa3d
Arm64: Optimize AESKeyGenAssist
...
We can load the swizzle table from our constant pool now. This removes
the only usage of VTMP3 from our Arm64 JIT.
I would say the this is now optimal for the version without RCON set.
With RCON we could technically make some of the move of the constant
more optimal.
2023-08-30 12:15:09 -07:00
Ryan Houdek
572cc57aa3
IR: Adds printer for OpSize
2023-08-30 11:32:43 -07:00
Ryan Houdek
f741ebf970
IR: Removes implicit sized add
...
Saw a few locations in here that we operate things at 64-bit
unconditionally around pointer calculation. Will be coming back for
those when running in 32-bit mode.
This is the last of the implicit sized ALU operations! After this I'll
be going through the IR more individually to try and remove any
stragglers.
Then should be able to start cleaning up and actually optimizing GPR
operations.
2023-08-29 22:26:51 -07:00
Ryan Houdek
e8b767b553
IR: Removes implicit sized bfe
...
This one is a bit of a mess, looking forward to coming back and cleaning
this up.
2023-08-29 19:43:39 -07:00
Ryan Houdek
9e70aa4192
IR: Removes implicit sized and
2023-08-28 22:43:21 -07:00
Ryan Houdek
b5dc6a69c7
IR: Removes implicit sized sub
2023-08-28 22:05:02 -07:00
Ryan Houdek
a276b37252
IR: Removes bfi from variable size
...
This one was already explicit sized. Just convert it over to OpSize.
2023-08-28 21:31:37 -07:00
Ryan Houdek
8bc84c202c
IR: Removes implicit sized xor
2023-08-28 19:51:14 -07:00
Ryan Houdek
e9a3848602
Merge pull request #3027 from Sonicadvance1/remove_implicit_andn
...
IR: Removes implicit sized andn
2023-08-28 19:39:49 -07:00
Ryan Houdek
1699ec9a76
IR: Removes implicit sized andn
2023-08-28 19:16:16 -07:00
Ryan Houdek
db6c8852fc
IR: Removes implicit sized or
2023-08-28 19:06:05 -07:00
Ryan Houdek
65dc6f3e90
IR: Removes implicit sized lshr
2023-08-28 18:16:56 -07:00
Ryan Houdek
60c4438780
IR: Removes implicit sized lshl
2023-08-28 17:50:41 -07:00
Ryan Houdek
898ce1ce8f
IR: Removes implicit sized UMulH
2023-08-28 17:20:55 -07:00
Ryan Houdek
aa8dfd6af1
IR: Removes implicit sized UMul
2023-08-28 17:20:55 -07:00
Ryan Houdek
6a6d808b0d
IR: Removes implicit sized MulH
2023-08-28 17:20:55 -07:00
Ryan Houdek
fac5b2ac72
IR: Removes implicit sized Mul
2023-08-28 17:20:55 -07:00
Ryan Houdek
b9e4a1423f
IR: Removes sext IR helper
...
You hold no power here IR operation.
2023-08-28 17:03:38 -07:00
Ryan Houdek
c0bb6a053f
IR: Removes implicit sized {Create,Extract}ElementPair
2023-08-28 16:50:00 -07:00
Ryan Houdek
a36427d01e
IR: Removes implicit sized CAS
2023-08-28 07:12:31 -07:00
Ryan Houdek
594baff705
IR: Removes implicit sized CASPair
2023-08-28 07:12:31 -07:00
Ryan Houdek
e9f2bc037f
IR: Removes non-opsize AtomicAdd/Sub/And/Or
...
These were unused
2023-08-28 07:12:31 -07:00
Ryan Houdek
6dcfd6eb73
IR: Removes non-opsize AtomicXor
2023-08-28 07:12:31 -07:00
Ryan Houdek
4f8a63459c
IR: Removes non-opsize AtomicSwap
2023-08-28 07:12:31 -07:00
Ryan Houdek
ab230bf527
IR: Removes non-opsize AtomicFetchAdd
2023-08-28 07:12:31 -07:00
Ryan Houdek
8ba9613972
IR: Removes non-opsize AtomicFetchSub
2023-08-28 07:12:31 -07:00
Ryan Houdek
9370e30af4
IR: Removes non-opsize AtomicFetchAnd
2023-08-28 07:12:31 -07:00
Ryan Houdek
25ce57ef92
IR: Removes non-opsize AtomicFetchOr
2023-08-28 07:12:31 -07:00
Ryan Houdek
436e0f6f86
IR: Removes non-opsize AtomicFetchXor
2023-08-28 07:12:31 -07:00
Ryan Houdek
f44c6f394f
IR: Removes non-opsize AtomicFetchNeg
2023-08-28 07:12:31 -07:00
Ryan Houdek
48669b7006
IR: Removes implicit sized orlshl/orlshr
2023-08-28 05:04:32 -07:00
Ryan Houdek
16481c0e55
IR: Removes implicit sized rev
2023-08-28 05:04:32 -07:00
Ryan Houdek
b00310674a
IR: Removes implicit sized not
2023-08-28 05:04:32 -07:00
Ryan Houdek
5768444ce9
IR: Removes implicit sized abs
2023-08-28 05:04:32 -07:00
Ryan Houdek
1f1473eb74
IR: Removes implicit sized neg
2023-08-28 05:04:32 -07:00
Ryan Houdek
cccd7001cb
IR: Removes implicit sized ashr
2023-08-28 05:04:32 -07:00
Ryan Houdek
ce8392d5ae
IR: Removes implicit sized ror
2023-08-28 05:02:01 -07:00
Ryan Houdek
386cf36cfd
IR: Removes implicit sized sbfe
...
This one is a bit weird since currently it /always/ assumes a 64-bit
operating size.
We'll likely need to revisit this.
2023-08-28 05:02:01 -07:00
Ryan Houdek
0ddc23a5c9
IR: Removes implicit sized Popcount
2023-08-28 05:02:01 -07:00
Ryan Houdek
b95648a4ab
IR: Removes implicit sized FindMSB
2023-08-28 05:02:01 -07:00
Ryan Houdek
bf18672999
IR: Removes implicit sized FindLSB
2023-08-28 05:02:01 -07:00
Ryan Houdek
f405c1be69
IR: Removes inverted EntrypointOffset/InlineEntrypointOffset
2023-08-28 05:02:01 -07:00
Ryan Houdek
f3cd115fa7
IR: Removes implicit sized CountLeadingZeroes
2023-08-28 05:02:00 -07:00
Ryan Houdek
a14720e130
IR: Removes implicit sized FindTrailingZeroes
2023-08-28 05:02:00 -07:00
Ryan Houdek
86ed909de8
IR: Removes implicit sized DIV/REM
2023-08-28 05:02:00 -07:00