Ryan Houdek
6ec628fa31
Merge pull request #3433 from bylaws/arm64ec-pt1
...
Arm64Emitter: Introduce ARM64EC SRA mappings
2024-02-23 14:48:43 -08:00
Alyssa Rosenzweig
90256730c3
Merge pull request #3447 from Sonicadvance1/fix_instcountci
...
Fix instcountci
2024-02-22 17:24:24 -04:00
Ryan Houdek
3a0f9db512
Fix instcountci
2024-02-22 12:44:10 -08:00
Alyssa Rosenzweig
5378ae2e76
Merge pull request #3436 from alyssarosenzweig/ir/af-simplify
...
Simplify CalculateAF
2024-02-22 08:17:07 -04:00
Ryan Houdek
cc9c80d79f
Merge pull request #3445 from alyssarosenzweig/instc/fmod
...
InstCountCI: add FMOD block
2024-02-21 19:27:07 -08:00
Ryan Houdek
60e8da05cd
Merge pull request #3442 from alyssarosenzweig/instc/witcher3
...
InstCountCI: add The Witcher 3 block
2024-02-21 18:56:39 -08:00
Alyssa Rosenzweig
aac7fa9b58
InstCountCI: add hot scalar FMOD block
...
both AFP and non-AFP versions, since this is greatly affected by AFP opts.
pulled from #2563
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-21 22:36:15 -04:00
Ryan Houdek
bd4a81a2a1
Moves JITSymbol allocation
...
This isn't actually using TLS allocations. Instead it is an allocation
tied to the InternalThreadState object.
2024-02-21 17:57:34 -08:00
Alyssa Rosenzweig
a6211f29e7
InstCountCI: add The Witcher 3 block
...
Closes : #2688
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-21 21:44:12 -04:00
Ryan Houdek
da263834f8
InstcountCI: Adds addressing limitations to instcountci
...
Spurred on by #3421
This does a bunch of GPR and vector loads to showcase addressing
limitations between ARM and x86.
Tests:
- 8/16/32/64-bit GPR loads
- Both 32-bit and 64-bit addressing modes
- 32/64/128-bit Vector loads
- Both 32-bit and 64-bit addressing modes
- Duplicate the tests for 32-bit addressing mode with a 32-bit process
- Since it should change behaviour.
Untested:
- 8/16-bit vector loadstores since those don't exist on x86
- 16-bit x87 integer load exists but that doesn't go through a vector
load in FEX.
2024-02-21 16:50:00 -08:00
Ryan Houdek
d4be2dc636
Merge pull request #3434 from bylaws/arm64ec-pt3
...
FEXCore: Expose AbsoluteLoopTopAddress to the frontend
2024-02-21 14:31:04 -08:00
Ryan Houdek
3e5694bd06
Merge pull request #3432 from bylaws/arm64ec-pt0
...
CMake: Define _M_ARM_64EC when building for ARM64EC
2024-02-21 14:30:09 -08:00
Ryan Houdek
66feea9e8e
Merge pull request #3422 from neobrain/feature_libfwd_wayland32
...
Library Forwarding: Add support for 32-bit Wayland
2024-02-21 13:41:38 -08:00
Alyssa Rosenzweig
2bcd285851
Merge pull request #3430 from Sonicadvance1/tsc_scale
...
Implement small TSC scaling
2024-02-21 13:16:27 -04:00
Alyssa Rosenzweig
30ff225e80
InstCountCI: Update
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-21 12:49:14 -04:00
Alyssa Rosenzweig
8762bc1fa3
OpcodeDispatcher: simplify CalculateAF signature
...
- Res is unused
- SrcSize doesn't matter since we ignore the high bits, might as well always use
32-bit, it doesn't matter
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-21 12:48:15 -04:00
Billy Laws
5b4162b712
FEXCore: Expose AbsoluteLoopTopAddress to the frontend
...
ARM64EC has a shared SRA mapping between ARM64 and X64 code, so there
needs to be a public way to enter the dispatcher without refilling SRA
from the in-memory context struct.
2024-02-21 11:46:24 +00:00
Billy Laws
cb5c07f4b1
Arm64Emitter: Introduce ARM64EC SRA mappings
...
See https://learn.microsoft.com/en-us/cpp/build/arm64ec-windows-abi-conventions?view=msvc-170
note that since mm registers are volatile there is no need to match the
mapping for them when in JIT, so they can be used as scratch regs.
Disallowed regs are also wiped on context switches, so they cannot be
taken advantage of to e.g. avoid spilling.
2024-02-21 11:18:10 +00:00
Billy Laws
3364b48f3b
CMake: Define _M_ARM_64EC when building for ARM64EC
2024-02-21 11:18:07 +00:00
Tony Wasserka
67530171e6
Library Forwarding/wayland: Clean up wl_interface exchange
2024-02-21 11:44:55 +01:00
Tony Wasserka
6f00611892
Library Forwarding/wayland: Add functions required by zink + Super Meat Boy on 32-bit
2024-02-21 11:44:55 +01:00
Tony Wasserka
67941f04eb
Library Forwarding/wayland: Write arguments for callbacks to guest stack
2024-02-21 11:44:55 +01:00
Tony Wasserka
42531108b7
Library Forwarding/wayland: Enable 32-bit build
2024-02-21 11:44:55 +01:00
Tony Wasserka
7edab7ee3b
Library Forwarding/wayland: For 32-bit guests, support repacking wl_interface/wl_message/wl_argument
2024-02-21 11:44:55 +01:00
Tony Wasserka
b9f2389d74
Library Forwarding/wayland: Avoid using global state to substitute callback tables
...
The pointer tracked internally by Wayland can be queried via
wl_proxy_get_listener, so we don't need our own bookkeeping.
This also changes the callback table's element type to a fixed-size uint64_t,
which makes it work for 32-bit guests.
2024-02-21 11:44:55 +01:00
Tony Wasserka
3c0b041c44
Library Forwarding/wayland: Support reading message signatures on 32-bit guests
2024-02-21 11:44:54 +01:00
Tony Wasserka
80fcd640be
unittests/Library Forwarding: Test interaction between ptr_passthrough and fixed-size integer mapping
2024-02-21 11:44:54 +01:00
Tony Wasserka
0908968e87
Library Forwarding/gen: Don't register types used exclusively with ptr_passthrough annotations
...
This allows forwarding APIs that sparsely use non-repackable types.
2024-02-21 11:44:54 +01:00
Ryan Houdek
8e0543d9af
InstcountCI
2024-02-20 12:05:44 -08:00
Ryan Houdek
b902b8edab
Implement small TSC scaling
...
Games engines are expecting >1Ghz cycle counters. Scale them to work
around the issue.
Resolves the excessive busy waiting in Unreal Engine 5 games.
2024-02-20 12:05:44 -08:00
Alyssa Rosenzweig
9c38332e7e
Merge pull request #3429 from alyssarosenzweig/cleanup/nzcv-helpers
...
Cleanup NZCV metadata
2024-02-20 10:18:15 -04:00
Alyssa Rosenzweig
0503c89ff6
OpcodeDispatcher: use NZCV update helpers
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-19 14:12:54 -04:00
Alyssa Rosenzweig
6dd410698a
OpcodeDispatcher: add helpers for updating NZCV metadata
...
to reduce error-prone copypaste
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-19 14:12:54 -04:00
Ryan Houdek
bbac014d6d
Merge pull request #3427 from Sonicadvance1/fix_vdso_crash
...
Fixes VDSO crash in 64-bit code
2024-02-18 18:47:41 -08:00
Ryan Houdek
a723ff09c1
Fixes VDSO crash in 64-bit code
...
Ever since #3406 this has been crashing. Struct tail padding was saving
this before.
2024-02-17 16:43:09 -08:00
Mai
5769ffbba7
Merge pull request #3425 from Sonicadvance1/frontend_pointer
...
FEXCore: Add a frontend pointer to InternalThreadState
2024-02-16 19:41:41 -05:00
Mai
a7c7fe4a35
Merge pull request #3426 from Sonicadvance1/thread_leak
...
Linux: Make sure to destroy thread object when thread shuts down
2024-02-16 19:41:23 -05:00
Ryan Houdek
80f20ad121
Linux: Make sure to destroy thread object when thread shuts down
...
This fixes a fairly large memor leak.
2024-02-16 15:08:29 -08:00
Ryan Houdek
808ced455d
FEXCore: Add a frontend pointer to InternalThreadState
...
FEXCore is guaranteed to not touch this pointer and can be used by
frontends to store thread-specific data.
2024-02-15 02:06:16 -08:00
Mai
0505b30d34
Merge pull request #3423 from Sonicadvance1/fix_fd_leak
...
FileFormatCheck: Fixes FD leak
2024-02-14 16:01:29 -05:00
Ryan Houdek
16a5d1a6b1
FileFormatCheck: Fixes FD leak
2024-02-14 12:21:47 -08:00
Ryan Houdek
9cab746aa7
Merge pull request #3407 from neobrain/feature_libfwd_arguments_on_guest_stack
...
Library Forwarding: Allocate packed arguments on the guest stack if needed
2024-02-12 16:31:34 -08:00
Ryan Houdek
b888bb5ce5
Merge pull request #3406 from neobrain/feature_libfwd_packed_arguments
...
Library Forwarding: Disable struct padding for packed arguments
2024-02-12 16:23:44 -08:00
Ryan Houdek
47218254a1
Merge pull request #3416 from alyssarosenzweig/opt/add-smol
...
Optimize 8/16-bit adds/subs
2024-02-12 15:52:05 -08:00
Ryan Houdek
7cb15582c2
Docs: Update for release FEX-2402
FEX-2402
2024-02-12 10:37:55 -08:00
Ryan Houdek
930d2650f8
Merge pull request #3417 from Sonicadvance1/workaround_hang
...
ThreadManager: StealAndDropActiveLocks in the child forked process
2024-02-12 10:36:16 -08:00
Alyssa Rosenzweig
fba5678476
InstCountCI: Update
...
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-12 12:36:48 -04:00
Alyssa Rosenzweig
68232366e4
OpcodeDispatcher: don't mask add/sub sources
...
not needed in the new approach
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-12 12:36:28 -04:00
Alyssa Rosenzweig
d7ff1b78fb
IR: handle 8/16-bit AddNZCV/SubNZCV
...
we can do it more effectively than the current s/w lowering.
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
2024-02-12 12:36:09 -04:00
Mai
780b48620b
Merge pull request #3420 from Sonicadvance1/preserve_all_3419
...
Fix #3419
2024-02-10 23:24:38 -05:00