Stefanos Kornilios Mitsis Poiitidis
c6e09ddec5
Merge pull request #1046 from Sonicadvance1/more_sse41
...
Implements SSE4.1
2021-06-08 16:52:12 +03:00
Lioncash
a2b8fedba5
Utils: Add header for bit-related utilities
...
Places a layer of separation around the remaining compiler builtins.
2021-06-08 08:25:32 -04:00
Ryan Houdek
748c3182a7
Fixes a typo in interpreter LSHL
...
This was causing uint32_t pointers to sign extend on 32-bit
New tests being run were hitting this when we were expecting them to zero extend
2021-06-08 02:44:40 -07:00
Ryan Houdek
dfc454873c
Moves AOTIR cache queue object to be inside the context
...
This fixes a crash that occurs due to mixing memory allocators.
This PR has tickled the allocation just enough that it broke
2021-06-08 02:44:40 -07:00
Ryan Houdek
fec078f924
Fixes bug in interpreter VInsGPR
...
If the source GPR had data that was larger than the element it would overwrite other elements
Mask it correctly. This then matches behaviour with the other CPU backends
2021-06-08 02:44:39 -07:00
Ryan Houdek
a313253510
Enables SSE 4.1 in CPUID
2021-06-08 02:44:39 -07:00
Ryan Houdek
7b2b2a3d07
Implements all the remaining SSE4.1 instructions
...
Theres a fair number of these so I won't describe them all.
A couple highlights are MPSADBW and PHMINPOSUW.
These don't really match with AArch64 very well so their IR is a bit ugly.
2021-06-08 02:44:39 -07:00
Ryan Houdek
910a25b0ed
Cleans up some vector ops that don't need dedicated functions
...
All of these ops can use the VectorALUOp and VectorUnaryOp templated functions
2021-06-08 02:44:39 -07:00
Ryan Houdek
75bae81331
Describe the remaining SSE4.1 ops in the tables
2021-06-08 02:44:39 -07:00
Ryan Houdek
02abbd216a
Fixes an issue with debug printing vectors
...
We need to save the vector registers otherwise we will corrupt them.
Also in the case of printing a vector register, fall down the specialized path
Only useful when debugging
2021-06-08 02:44:39 -07:00
Ryan Houdek
8b7a7e91c9
Implements new IR ops
...
Adds VBic, VUMinV, VPopcount, VUnZip, VUnZip2, VDupElement, Vector_FToI, and VUABDL
We will need these for the SSE4.1 ops
2021-06-08 02:44:39 -07:00
Lioncash
18e0f2636f
General: Make use of the <bit> header where applicable
...
Since C++20, a bunch of bit manipulation functions finally have a common
interface, so lets make use of those
2021-06-07 08:16:51 -04:00
Lioncash
6798afe91f
General: Abstract unreachable behind a define
...
Provides a layer of separation from direct use of compiler built-ins.
2021-06-07 06:13:26 -04:00
Ryan Houdek
4c275ecc08
Merge pull request #1056 from lioncash/compiler-defs
...
Utils: Add CompilerDefs.h for compiler-specifics
2021-06-05 12:57:51 -07:00
Ryan Houdek
294ec80aaf
Merge pull request #1055 from lioncash/enum-cls
...
InternalThreadState: Make SignalEvent an enum class
2021-06-05 12:55:10 -07:00
Lioncash
341b811642
Utils: Add CompilerDefs.h for compiler-specifics
...
Puts a layer of separation around compiler specifics (and also makes
them nicer to write).
2021-06-05 13:55:54 -04:00
Lioncash
32744d074e
InternalThreadState: Make SignalEvent an enum class
...
Makes the enumeration strongly typed, preventing implicit conversions,
minimizing the potential chances of an invalid value being used by
accident.
2021-06-05 10:52:56 -04:00
Lioncash
5f91bbe28d
GdbServer: Migrate code to fmt
...
Simplifies a bunch of string manipulation code.
Much nicer to grok than stream formatting in many cases.
2021-06-05 10:34:59 -04:00
Lioncash
1936ebc59c
General: Add missing const specifiers where applicable
...
Minor change that adds missing const specifiers to getters that don't
modify internal class state.
2021-06-03 20:24:27 -04:00
Lioncash
37e2210f64
DecodedOperand: Convert operand type into an enum class
...
Now possible in a less messy way, since the type is now centralized in
one location.
Makes it strongly typed and prevents any potential accidental implicit
assignments to Type instead of something intended for the Data members.
2021-06-02 06:51:15 -04:00
Lioncash
1f0bc49e54
DecodedOperand: Add helper functions for type testing
...
Significantly shortens the amount of code necessary for testing the type
of a decoded operand.
Also relocates the type field out of all the union types to have it in a
central location.
2021-06-02 05:59:12 -04:00
Ryan Houdek
edd1dfdfe8
Merge pull request #1040 from Sonicadvance1/more_syscalls_5_12
...
Implements more syscalls for supporting a higher guest kernel version
2021-06-01 00:27:50 -07:00
Ryan Houdek
2d342d4662
Handle user provided siginfo_t with user signal
...
If the guest has sent a signal and the si_code is SI_USER then
we need to pass that siginfo_t through without touching it.
User could be sticking whatever they want in to that struct
2021-05-27 22:59:27 -07:00
Ryan Houdek
211e7bf0f0
Implements SSE4.1 insertps
...
Cheap Golf is using this instruction unconditionally.
With this implemented the game now runs
2021-05-26 21:40:39 -07:00
Stefanos Kornilios Mitsis Poiitidis
d70c91ddc6
AOTIR: Multi-threaded AOTGen
2021-05-19 14:19:55 +03:00
Stefanos Kornilios Mitsis Poiitidis
b8dc63754b
AOTIR: Don't keep IR,RA,Code data around when aotirgenerating
2021-05-11 15:15:39 +03:00
Stefanos Kornilios Mitsis Poiitidis
df8f1850ae
AOTIR: .aotir files are now stream-written
2021-05-11 14:37:12 +03:00
Ryan Houdek
82b04d9886
Fixes JITSymbols for x86-64 JIT
2021-05-06 01:12:51 -07:00
Stefanos Kornilios Mitsis Poiitidis
c8bb02f3a6
JIT: Add reason 1 (0xCD) to OP_BREAK implementations
2021-05-04 13:22:00 +03:00
Ryan Houdek
fd6d33d197
Merge pull request #996 from FEX-Emu/skmp/aotirgen
...
AOTIR: Offline Generation
2021-05-03 15:58:57 -07:00
Stefanos Kornilios Mitsis Poiitidis
1d82e9e59e
JIT: Stub Break reasons 2, 3
2021-05-03 05:42:46 +03:00
Ryan Houdek
4961604807
Implements support for CLFLUSH
...
JRE requires this to run
2021-05-02 12:18:35 -07:00
Ryan Houdek
417e8836a4
Arm64: Fixes some wrong sign extensions
2021-05-01 07:39:14 -07:00
Ryan Houdek
5143100a73
Switches more usages of memory allocation routines over to FEX internal
2021-05-01 07:39:14 -07:00
Stefanos Kornilios Mitsis Poiitidis
8b6e767742
Frontend: Slightly more resilient max instruction size handling
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
be0b29bbc6
OpDisp: Convert more asserts to soft-errors
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
ee8f8ed176
Improve error handling
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
5b8cbae1e1
Core/Frontend: Improve error handling
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
b98ef9e48b
Core/Frontend: Improve error handling
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
fd724448ab
Front End: Fix an error check
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
f4083883ca
Frontend: Fix ExternalBranches initialization
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
ab44f800f7
AOTgen: Cleaner interfaces, use LogMan
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
1a5bc39d09
Rebase fixes
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
244ef94e9b
AOTIR: Generate list of files with code, add Scripts/FEXUpdateAOTIRCache.sh to generate all files
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
a85ef061d1
AOITR: Add AOTIRGenerate fo FEXLoader option that does generation
2021-05-01 09:40:50 +03:00
Stefanos Kornilios Mitsis Poiitidis
4e847d03b7
Remove more assertions for invalid code
2021-05-01 09:40:49 +03:00
Stefanos Kornilios Mitsis Poiitidis
ce9324f50f
Kinda-parse unwind table
2021-05-01 09:40:49 +03:00
Stefanos Kornilios Mitsis Poiitidis
0897fc4a0a
pretrans wip
2021-05-01 09:40:49 +03:00
Stefanos Kornilios Mitsis Poiitidis
8a73783a07
AOTIR: Use FEXCore::Allocator
2021-04-29 08:16:21 +03:00
Stefanos Kornilios Mitsis Poiitidis
32b4b02302
AOTIR: mmap based loading
2021-04-28 13:08:43 +03:00