Mai
9ca34ca306
Merge pull request #2178 from Sonicadvance1/const_jit
...
Arm64: Const on unmodified argument
2022-12-05 13:03:21 +00:00
Ryan Houdek
69f39a0bc3
Arm64: Const on unmodified argument
...
Just noticed this when tinkering around the JIT.
These arguments can safely be const.
2022-12-05 03:54:17 -08:00
Ryan Houdek
50cf74db0a
Linux: Improve performance of hot paths in path searching
...
`GetEmulatedPath` and `OpenAt` are called a /lot/ in applications.
std::filesystem::path handling here is quite heavy and costly for what
we are trying to achieve.
Remove this usage and instead use lstat, access, and readlink directly
which is a heck of a lot faster.
In particular this helps out pressure-vessel, shaving off launch times
by 1-2 seconds.
Going from ~22 seconds down to ~20 seconds.
2022-12-05 03:51:50 -08:00
Ryan Houdek
6886d8ff65
FEXLoader: Make IsInterpreterInstalled
check less horrible.
...
`std::filesystem::exists` is particularly gnarly in how it checks to see
if the file exists.
It allocates memory, it creates lists, it splits things, then eventually
checking the status
Remove all this overhead to help out minorly for applications that
execve a lot.
2022-12-05 02:58:15 -08:00
Mai
c1d118c1d4
Merge pull request #2191 from Sonicadvance1/minor_aeskeygenassist_optimization
...
Arm64: Minor optimization in AESKEYGENASSIST
2022-12-04 06:59:31 +00:00
Ryan Houdek
5e46d63c42
Arm64: Minor optimization in AESKEYGENASSIST
...
The less number of FPR<->GPR movement instructions the better.
This removes one instance of `ins` and replaces the other with a 64-bit
`dup` instead.
The LoadConstant still turns in to a single `movz` instruction with the
shift.
2022-12-03 03:59:27 -08:00
xianwei zheng
863a59a8e2
Thunk: Crash on XSetErrorHandler(NULL) ( #2190 )
...
* BUGFIX:Adding the nullptr check to FinalizeHostTrampolineForGuestFunction. It will lead crash on interpreter code set function nullptr callback. eg. XSetErrorHandler(NULL)
* fix #2189
2022-11-30 21:57:09 -08:00
Ryan Houdek
c37fcf136a
Merge pull request #2187 from lioncash/and
...
OpcodeDispatcher: Handle VANDPD/VANDPS/VPAND/VANDNPD/VANDNPS/VPANDN
2022-11-30 16:22:42 -08:00
lioncash
02a2292115
OpcodeDispatcher: Handle VPANDN
2022-11-30 15:51:10 +00:00
lioncash
a483bc9837
OpcodeDispatcher: Handle VANDNPD
2022-11-30 15:51:10 +00:00
lioncash
120a6b85f4
OpcodeDispatcher: Handle VANDNPS
2022-11-30 15:51:05 +00:00
Ryan Houdek
9fea774a93
Merge pull request #2188 from lioncash/pclmul
...
unittests: Expand VPCLMULQDQ unit test
2022-11-29 17:15:34 -08:00
lioncash
bf1e619ead
unittests: Expand vpclmulqdq unit test
...
Now that we have some AVX instructions in place, we can make the test
use them and also enforce correctness behavior in the upper lane.
2022-11-29 22:07:38 +00:00
lioncash
0f8fcfc43e
OpcodeDispatcher: Handle VPAND
2022-11-29 19:08:58 +00:00
lioncash
698b7fda06
OpcodeDispatcher: Handle VANDPD
2022-11-29 19:06:25 +00:00
lioncash
23caa6e20f
OpcodeDispatcher: Handle VANDPS
2022-11-29 19:04:29 +00:00
Ryan Houdek
34e39c996e
Merge pull request #2186 from lioncash/or
...
OpcodeDispatcher: Handle VORPD/VORPS/VPOR
2022-11-29 10:57:17 -08:00
lioncash
16ed20cfae
OpcodeDispatcher: Handle VPOR
2022-11-29 18:43:38 +00:00
lioncash
ef368ceafa
OpcodeDispatcher: Handle VORPD
2022-11-29 18:40:04 +00:00
lioncash
45480ef32c
OpcodeDispatcher: Handle VORPS
2022-11-29 18:38:13 +00:00
Ryan Houdek
4de69029e5
Merge pull request #2185 from lioncash/xor
...
OpcodeDispatcher: Handle VPXOR/VXORPD/VXORPS
2022-11-29 10:28:02 -08:00
lioncash
c065770f48
OpcodeDispatcher: Handle VPXOR
2022-11-29 18:12:04 +00:00
lioncash
27957ea051
OpcodeDispatcher: Handle VXORPD
2022-11-29 18:05:28 +00:00
lioncash
94e9d1ab3b
OpcodeDispatcher: Handle VXORPS
2022-11-29 18:04:29 +00:00
Ryan Houdek
a374a9af35
Merge pull request #2184 from lioncash/vzero
...
OpcodeDispatcher: Handle VZEROUPPER/VZEROALL
2022-11-29 08:33:07 -08:00
lioncash
3e80416eb6
OpcodeDispatcher: Handle VZEROUPPER/VZEROALL
2022-11-29 16:15:32 +00:00
Ryan Houdek
b35c6c6d22
Merge pull request #2183 from lioncash/vmovq
...
OpcodeDispatcher: Handle VMOVQ
2022-11-28 18:33:26 -08:00
lioncash
69d26cfee6
OpcodeDispatcher: Handle combined VMOVQ/VMOVD
2022-11-29 01:49:58 +00:00
lioncash
e3be1540f1
OpcodeDispatcher: Handle VMOVQ
...
Fairly trivial, we can reuse the existing implementation for MOVQ.
2022-11-29 01:49:15 +00:00
Ryan Houdek
8e2b0d10e5
Merge pull request #2181 from Sonicadvance1/defer_cpuinfo
...
EmulatedFiles: Defer cpuinfo file initialization to first access
2022-11-28 17:48:42 -08:00
Ryan Houdek
57c5761920
Merge pull request #2179 from Sonicadvance1/tsl_maps
...
Core: Replace a couple maps with tsl robin_map
2022-11-28 17:48:27 -08:00
Ryan Houdek
0841ff5feb
Merge pull request #2182 from lioncash/ntdq
...
OpcodeDispatcher: Handle VMOVNTDQ/VMOVNTDQA/VMOVNTPD/VMOVNTPS
2022-11-28 17:47:27 -08:00
lioncash
45115384b5
OpcodeDispatcher: Handle VMOVNTPD
2022-11-28 16:58:37 +00:00
lioncash
dae2563850
OpcodeDispatcher: Handle VMOVNTPS
2022-11-28 16:56:00 +00:00
lioncash
fb4df5a0b7
OpcodeDispatcher: Handle VMOVNTDQA
2022-11-28 16:51:06 +00:00
lioncash
b2f0303d1e
OpcodeDispatcher: Handle VMOVNTDQ
2022-11-28 16:49:01 +00:00
Ryan Houdek
f8b2a0b4d8
Merge pull request #2180 from Sonicadvance1/disable_aot_stores
...
FEXLoader: Disables some AOT shutdown overhead when not enabled
2022-11-28 01:08:39 -08:00
Ryan Houdek
e1fcb78ce3
FEXLoader: Disables some AOT shutdown overhead when not enabled
...
When AOT wasn't enabled it was still doing some accesses to the
filesystem on shutdown.
Slightly improves shutdown time.
2022-11-27 16:02:58 -08:00
Ryan Houdek
d6309088c0
EmulatedFiles: Defer cpuinfo file initialization to first access
...
This improves startup time by a couple of milliseconds.
Most applications don't query cpuinfo so deferring improves most
application's startup times.
2022-11-27 15:34:10 -08:00
Ryan Houdek
1fb3a2e28f
Core: Replace a couple maps with tsl robin_map
...
Improves the shutdown time a small amount and performance of these maps.
2022-11-27 04:35:27 -08:00
Mai
df25d4e03e
Merge pull request #2177 from Sonicadvance1/disable_multiblock_default
...
Config: Disable multiblock by default
2022-11-26 06:23:24 +00:00
Ryan Houdek
9c2f0287e0
Config: Disable multiblock by default
...
This causes users pain currently since the JIT isn't doing any caching
and our RA being a hack mess means it is quite slow.
Disable by default to improve JIT time performance.
2022-11-25 18:08:25 -08:00
Mai
9912d41714
Merge pull request #2174 from Sonicadvance1/emulated_sgdt
...
OpcodeDispatcher: Implement SGDT
2022-11-25 05:23:56 +00:00
Ryan Houdek
8b2cd87d9e
unittests: Disable SGDT tests on host
...
The Zen+ CI runner doesn't support the UMIP hardware feature, so it
doesn't hit the kernel emulated path.
Instead the instruction returns real data on this hardware. Still in
kernel space, so it is unmapped as expected.
2022-11-24 18:29:05 -08:00
Ryan Houdek
3e6d23ae7e
unittests: SGDT tests
2022-11-24 17:47:31 -08:00
Ryan Houdek
c96c39d5b1
OpcodeDispatcher: Implement SGDT
...
Ran in to this when running Team Sonic Racing.
This game uses Denuvo Anti-Tamper which some versions rely on SGDT.
The Linux kernel catches and emulates this instruction.
It will always return a limit of 0 and a base of `0xFFFFFFFFFFFE0000ULL`
which is guaranteed to be in kernel space.
This gets the game slightly farther but still not running entirely.
2022-11-24 17:43:52 -08:00
Mai
a4556e90cd
Merge pull request #2170 from Sonicadvance1/optimize_sra_step_one
...
OpcodeDispatcher: Moves all GPR and XMM accesses to direct register accesses
2022-11-24 06:17:55 +00:00
Mai
4d2c4b4423
Merge pull request #2172 from Sonicadvance1/minor_vector_initialization_improvement
...
Syscalls: Minor optimization with initialization of syscall definition vector
2022-11-23 22:16:36 +00:00
Ryan Houdek
530de3f031
Syscalls: Minor optimization with initialization of syscall definition vector
...
Shaves a couple milliseconds off initialization time.
Noticed this while poking around.
2022-11-23 12:59:08 -08:00
Ryan Houdek
c9622f6fd4
unittests/IR: Update tests for new IR semantics
2022-11-22 23:06:18 -08:00