Commit Graph
9533 Commits
Author SHA1 Message Date
Ryan Houdek 5a240c3586 Implements CVTPD2DQ unit test 2020-09-10 16:50:47 -07:00
Ryan Houdek 7a80f2bcbb Implements missing CVTPD2DQ
Without impementing MXCSR still, this matches the already implemented
CVTTPD2DQ
2020-09-10 16:50:05 -07:00
Ryan Houdek 07cb2c5ca2 Merge pull request #337 from FEX-Emu/skmp/dead-flags-mb
IR: Add DeadFlagStoreElimination
2020-09-10 16:43:52 -07:00
Ryan Houdek f61a2a74c1 Merge pull request #350 from FEX-Emu/skmp/fix-loopcc
loopOp: Constant takes size in bits, not bytes
2020-09-10 16:43:31 -07:00
Ryan Houdek fb459701f4 Implements two more memory syscalls
These don't really do much in a coherent and UMA situation, but some
games are hitting them, so may as well as implement them
2020-09-10 16:38:37 -07:00
Ryan Houdek d39fe11427 Fixes getpriority syscall
Just use the syscall directly rather than call through the glibc
interface.

The getpriority syscall biases the return value so it never returns a
negative, while the glibc interface returns [-20,19), so you need to do
some errno juggling for the -1 return.

Just use the syscall directly instead

Fixes some game complaining heavily when getpriority results were wrong
2020-09-10 16:34:20 -07:00
Ryan Houdek c4799404e4 Adds initial 32bit unit tests
This is a very small change, but it gets us starting to test 32bit
2020-09-07 22:32:17 -07:00
Ryan Houdek 5b0386ad83 Ensures the RIP only gets stored as 32bit in 32bit mode 2020-09-07 00:04:30 -07:00
Stefanos Kornilios Mitsis Poiitidis 9423bab83c Merge pull request #352 from FEX-Emu/skmp/disable-bfe-identity
IR/ConstProp: Disable BFE identity as it breaks cs:go
2020-09-07 01:57:56 +03:00
Stefanos Kornilios Mitsis Poiitidis 508d7eed6a Thunks: Improve SDL2 so that CSGO creates the window and GL context 2020-09-07 01:16:44 +03:00
Stefanos Kornilios Mitsis Poiitidis 0adb874755 IR/ConstProp: Disable BFE identity as it breaks cs:go 2020-09-07 00:58:29 +03:00
Stefanos Kornilios Mitsis Poiitidis e2fc0f03c9 loopOp: Constant takes size in bits, not bytes 2020-09-07 00:51:38 +03:00
Ryan Houdek 4b17521ab9 Merge pull request #343 from Sonicadvance1/cpuid_improvements
Has /proc/cpuinfo generated from CPUID
2020-09-06 12:40:03 -07:00
Ryan Houdek 6e28fd68c3 Merge pull request #344 from Sonicadvance1/rcpc
Adds support for RCPC load instructions
2020-09-06 12:31:28 -07:00
Stefanos Kornilios Mitsis Poiitidis 54bf7a095a Merge pull request #349 from Sonicadvance1/fix_altstack_disable
Fixes guest disabling sigaltstack.
2020-09-06 17:40:26 +03:00
Stefanos Kornilios Mitsis Poiitidis f719f0e646 Merge pull request #347 from Sonicadvance1/tso_option
Adds option to disable TSO
2020-09-06 17:39:21 +03:00
Stefanos Kornilios Mitsis Poiitidis 89abb9ea8e Merge pull request #346 from Sonicadvance1/clean_build_folder
Has the github action clean its build folder
2020-09-06 17:39:12 +03:00
Ryan Houdek 50227ba379 Fixes guest disabling sigaltstack.
Previously we never checked for SS_DISABLE.
We were also only ever checking for ss_sp being a valid memory range
when we should have been checking for the absense of SS_DISABLE.

Fixes #326
2020-09-05 21:59:52 -07:00
Ryan Houdek 61072ba37e Has /proc/cpuinfo generated from CPUID
Instead of having this file mostly just copy and pasted, it'll now be
generated.
We end up losing a lot of supported flags with this change, which is for
the best since we wouldn't have actually supported those things.
2020-09-05 16:59:10 -07:00
Ryan Houdek c12847cbcb Cleans up CPUID
Instead of saying we support the world, actually go through each
individual flag and say that we support the correct things.
Puts FEX plus the git hash in to the model name for now.
Once we have a tagged release in the future we can change this to have
its version tag inside of it.
2020-09-05 16:59:10 -07:00
Ryan Houdek e177bb3ebc Adds a git_version generated header
Allows us to get the short git hash at runtime
2020-09-05 16:59:10 -07:00
Ryan Houdek 2175e9d9c8 Adds support for RCPC load instructions
If the host CPU supports RCPC instructions then it'll use those
instruction of atomics for LoadMemTSO ops.

This pushed my worst case FTL test from 16FPS to 17FPS .

There is another extension to RCPC to add short immediate offset support
which the c630 doesn't support any way. For future optimization on
hardware we can use that.
2020-09-05 16:58:50 -07:00
Ryan Houdek 5fe7466d92 Adds check for RCPC support 2020-09-05 16:58:50 -07:00
Ryan Houdek b21767c9e3 Has the github action clean its build folder
We have hit issues where the non-clean folder would end up leaving
artifacts which allowed tests to pass.

Remove the build folder on each run to clean up
2020-09-05 16:58:28 -07:00
Ryan Houdek ee8dfc96fa Adds support for the AArch64 JIT to disable TSO
AArch64 is the only backend that currently needs to do something
different for TSO
2020-09-05 16:58:03 -07:00
Ryan Houdek 0819a40c57 Adds option to disable TSO
This is a knowingly wrong option for anything running in a threaded
environment
2020-09-05 16:58:03 -07:00
Stefanos Kornilios Mitsis Poiitidis 6734dcf954 Merge pull request #345 from Sonicadvance1/fix_posix_tests
Emergency fix. POSIX tests failing because of ELFLoader rename
2020-09-06 02:54:19 +03:00
Ryan Houdek 5f696336d7 Emergency fix. POSIX tests failing because of ELFLoader rename 2020-09-05 15:48:35 -07:00
Ryan Houdek 6d26801d68 Merge pull request #342 from Sonicadvance1/binfmt_misc
Binfmt_misc support
2020-09-05 14:59:29 -07:00
Ryan Houdek 1785b310f9 Adds a binfmt_misc install target
This will install a binfmt_misc target for x86_64 targets that allows
FEXLoader to be the interpreter.

Everything else is already set up to allow this to work, just time to
hook it up.
2020-09-03 23:20:57 -07:00
Ryan Houdek 7c9f06f2d8 Allows installing FEXLoader
This wasn't installed at all previously
2020-09-03 18:39:41 -07:00
Ryan Houdek 0111175036 Renames ELFLoader to FEXLoader
This makes more sense for us when we are installed to /usr/bin/
2020-09-03 18:38:46 -07:00
Ryan Houdek eface7d911 Merge pull request #341 from FEX-Emu/skmp/fix-jitsymbols-arm64
fix jit symbols arm64
2020-09-03 14:51:14 -07:00
Stefanos Kornilios Mitsis Poiitidis 0e0fddafec arm64: Return DebugData if passed 2020-09-03 07:06:18 +03:00
Stefanos Kornilios Mitsis Poiitidis 3083f9e12e Merge pull request #332 from FEX-Emu/skmp/iterative-rclse
IR: Iterative RCLSE
2020-09-03 05:18:11 +03:00
Stefanos Kornilios Mitsis Poiitidis e7cbe2ca91 Merge pull request #338 from FEX-Emu/skmp/identity-opts
IR: Add identity opts for AND/OR/XOR
2020-09-03 05:17:10 +03:00
Stefanos Kornilios Mitsis Poiitidis dd5c3a5e44 Merge pull request #333 from Sonicadvance1/more_signals
Moves our entire execution model over to signal execution
2020-09-03 02:12:21 +03:00
Ryan Houdek cf5afbcd8d Some minor optimizations in the AArch64 ASM dispatcher
Ensures the top of the loop is 16byte aligned to give Cortex's
prefetcher the best chance of loading the code.

If the address size is a power of two (We always do 64GB or 32GB VM atm)
then do the address size masking in one instruction instead of loading a
64bit constant first

Move some accessed constants to a literal pool at the end of the ASM
dispatcher.
2020-09-02 16:00:17 -07:00
Ryan Houdek a75a7b3dcd Fixes a crash in the AArch64 JIT from the previous signal work
Was accidently setting the buffer size then unmapping at that new size.
Make sure to unmap then resize.
Also cleans up which buffer is actually being touched here, only the
initial buffer ever changes here.
2020-09-02 16:00:17 -07:00
Ryan Houdek 50349db4c6 Moves our entire execution model over to signal execution
This requires implementing custom ASM dispatchers for the interpreter
side of things so it works correctly.
Allows all of our CPU backends to safely support signaling.
This is a bit of a nightmare change and requires rethinking logic about
debugging in some instances.
2020-09-02 16:00:17 -07:00
Ryan Houdek dbdc7e6b54 Merge pull request #340 from FEX-Emu/skmp/avoid-tzcnt
JIT/x86: Don't use tzcnt
2020-09-02 13:07:12 -07:00
Stefanos Kornilios Mitsis Poiitidis 273db52545 JIT/x86: Don't use tzcnt 2020-09-02 22:57:34 +03:00
Stefanos Kornilios Mitsis Poiitidis 2fb68583a0 IR: Add DeadFlagStoreElimination
Mutlblock pass that eliminates flag stores that are never read.

This is a sibling to RCLSE and will likely be absorbed by it when we add MB support there.
2020-09-02 21:57:39 +03:00
Stefanos Kornilios Mitsis Poiitidis b9ed084cc5 IR: Add identity opts for AND/OR/XOR 2020-09-02 21:50:54 +03:00
Stefanos Kornilios Mitsis Poiitidis aa3dc52799 RCLSE: Iterate until there are no changes 2020-09-02 21:34:39 +03:00
Ryan Houdek 04a558bae9 Merge pull request #336 from FEX-Emu/skmp/add-movn
arm64: Add movn to LoadConstant
2020-09-02 09:56:07 -07:00
Stefanos Kornilios Mitsis Poiitidis 15da415ac6 arm64: Add movn to LoadConstant 2020-09-02 19:48:49 +03:00
Ryan Houdek c52f5be1de Merge pull request #334 from Sonicadvance1/enable_assertions_option
Enables assertions on the buildbot
2020-08-31 11:23:25 -07:00
Ryan Houdek b05931caf3 Merge pull request #335 from phire/bitset
Fix minor bug in BitSet/BitSetView
2020-08-30 23:09:36 -07:00
Scott Mansell dfa1ab678f Fix minor bug in BitSet/BitSetView 2020-08-31 18:04:09 +12:00