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
1b06a06a4e
Makes RoundType a unique type
...
This allows us to have the IRDumper have unique output for the type
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
2b9029623e
General: Abstract trapping behind a define
...
Provides a layer of separation from direct usages of compiler builtins.
2021-06-07 06:18:44 -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
4fa8522d9e
Merge pull request #1057 from lioncash/cprop
...
ConstProp: Separate out constituent chunks of const prop
2021-06-05 14:08:40 -07:00
Lioncash
58272ffc47
ConstProp: Separate out constituent chunks of const prop
...
Makes it nicer to find where each part of the pass is, and also see how
the pass is operating at a high level.
2021-06-05 16:52:03 -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
262389f4ea
ConstProp: Mark internal functions as static
...
Allows them to have internal linkage.
2021-06-05 15:25:35 -04: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
Ryan Houdek
0a7f0a3441
Merge pull request #1052 from lioncash/fmtimpl
...
LogManager: Add fmt-capable logging functions
2021-06-05 05:46:56 -07:00
Lioncash
ca2b04b309
LogManager: Add fmt-capable logging functions
...
Addresses #146 a little more by providing an interface to perform
fmt-compatible logging.
No more, will people on the project be tormented by classic printf
features like:
- Accidentally passing in a non-trivial type
- PRI macros
- Not being able to add support for custom types
- Mixing up signed/unsigned printf formatting specifiers accidentally
fmt-capable versions of the logging functions are named the same as the
existing functions, just with a "Fmt" or _FMT suffix (depending on
whether or not it's a function being used or a macro, respectively).
2021-06-05 08:29:48 -04:00
Lioncash
35f3777797
IRParser: Make use of insert_or_assign where applicable
...
Avoids some minor potential default constructions that get overwritten
immediately.
2021-06-05 06:43:17 -04:00
Lioncash
d73b79470e
IRParser: Mark parameter of CheckPrintError as a const reference
...
Def is only ever accessed to read members, so we can signify to the
reader to not expect it to be modified.
2021-06-05 06:43:16 -04:00
Lioncash
676d9cb665
IRParser: std::move elements where advantageous
...
e.g. LineDefinitions are moderately beefy, they contain
two strings and a vector of strings among other things,
so we can move instances into their containing vector to avoid some
allocation churn.
2021-06-05 06:43:13 -04:00
Lioncash
993b4513d9
IRParser: Convert array of std::string over to array of std::string_view
...
Same behavior, but allows the arrays to be constexpr (and use less
space; 16 bytes vs 32 bytes per element).
2021-06-05 06:16:42 -04:00
Lioncash
525d50f07e
config: Pass strings by const reference where applicable
...
In a few cases, the strings aren't ever directly modified, so they can
be passed by reference to eliminate a few trivial copies.
2021-06-04 12:46:34 -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
Ryan Houdek
6cba775d4e
Merge pull request #1032 from FEX-Emu/skmp/aotir-gen-mt
...
Multi threaded AOTGen
2021-05-24 23:06:13 -07:00
Lioncash
37a33bf127
Externals: Add fmt as an external
...
Begins the process of addressing issue #146 .
This is separated off, so that others can make use of fmt for other
purposes (general localized non-sucky string formatting), while the
logging rework is being tackled.
2021-05-20 13:18:38 -04: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
Ryan Houdek
1e40148f60
Fixes host thread stacks ending up in lower 32-bit VA
...
Overriding glibc's mmap and munmap functions don't encapsulate that functions they use
for allocating stack data so it was falling down the system mmap/munmap path.
This was causing host side stacks to end up in the 32-bit VA space in 32-bit applications.
2021-05-04 22:15:46 -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
8d1f9a9081
Merge pull request #1006 from Sonicadvance1/implement_clflush
...
Implements support for CLFLUSH
2021-05-02 12:27:54 -07:00
Ryan Houdek
4961604807
Implements support for CLFLUSH
...
JRE requires this to run
2021-05-02 12:18:35 -07:00
Stefanos Kornilios Mitsis Poiitidis
d6b7f32d33
AOTGen: Cleanup unwind symbol logic, add to x86-32 binaries
2021-05-02 11:08:12 +03:00
Ryan Houdek
63dee0e132
Remove reliance on librt and libnuma
...
These can fall down the raw syscall path
2021-05-01 17:40:33 -07:00