Ryan Houdek
a97c2c8bb3
Adds MMX decoding support to the frontend
2020-03-27 18:07:57 -07:00
Stefanos Kornilios Mitsis Poiitidis
84743796a5
Merge pull request #67 from Sonicadvance1/more_cvt
...
Implements two more CVT instructions
2020-03-23 00:39:59 +02:00
Stefanos Kornilios Mitsis Poiitidis
d0667452e6
Merge pull request #66 from Sonicadvance1/pmul
...
Implements PMULLW
2020-03-23 00:39:49 +02:00
Stefanos Kornilios Mitsis Poiitidis
75e3f1a9aa
Merge pull request #68 from Sonicadvance1/paddb
...
Implements PADDB
2020-03-23 00:39:37 +02:00
Ryan Houdek
8e21e6b456
Implements PADDB unit test
2020-03-22 13:07:39 -07:00
Ryan Houdek
33e68cf0c4
Implements PADDB in OpDispatcher
2020-03-22 13:07:25 -07:00
Ryan Houdek
7cdaefccd4
Adds CVTSS2SI unit test
2020-03-22 13:06:19 -07:00
Ryan Houdek
c87ef005b1
Adds CVTTPD2DQ unit test
2020-03-22 13:05:54 -07:00
Ryan Houdek
71b507f8de
Extends CVTTSS2SI test to test negative numbers
2020-03-22 13:05:34 -07:00
Ryan Houdek
eeebfeaec1
Implements two more CVT instructions
...
CCVTSS2SI and CVTTPD2DQ
2020-03-22 13:03:34 -07:00
Ryan Houdek
bdf1440e11
Adds unit test for PMULLW
2020-03-22 13:00:36 -07:00
Ryan Houdek
ad71b4de94
Implements PMULLW in OpDispatcher
...
Renames the PMULL function that does PMUL to larger element to have the distinction between the two
2020-03-22 13:00:36 -07:00
Ryan Houdek
f4dc6ee1ce
Adds vector multiply op to LLVM JIT
2020-03-22 13:00:36 -07:00
Stefanos Kornilios Mitsis Poiitidis
013ac22744
Merge pull request #62 from Sonicadvance1/vector_mul
...
Implement vector integer multiply IR ops
2020-03-22 09:01:35 +02:00
Stefanos Kornilios Mitsis Poiitidis
7930712ef2
Merge pull request #63 from Sonicadvance1/vector_ftozs
...
Implements Vector_FTOZS op in x86 JIT
2020-03-22 09:01:21 +02:00
Stefanos Kornilios Mitsis Poiitidis
7989a22802
Merge pull request #53 from Sonicadvance1/fix_flag_setting
...
Implements and fixes flag setting in a few instructions
2020-03-22 09:01:08 +02:00
Stefanos Kornilios Mitsis Poiitidis
208dc794e8
Merge pull request #64 from Sonicadvance1/more_syscalls
...
Implements more syscalls that I found while running applications
2020-03-22 08:58:39 +02:00
Stefanos Kornilios Mitsis Poiitidis
9ecdfefdd9
Merge pull request #65 from Sonicadvance1/comiss
...
Implements the COMISS instructions
2020-03-22 08:57:17 +02:00
Ryan Houdek
f89ef01578
Implements the COMISS instructions
...
These are fairly popular so not having them around is causing headaches.
We will really want these in the future to use the host register, btu
that is more time consuming than I want to dedicate to at the moment.
So the FCMP instruction must be told which flags to generate up front,
then it generates the flags in to a GPR which are then tracked and
pulled out with a specific IR op.
This can be augmented in the future to more easily RA the host flag
register
2020-03-21 22:52:46 -07:00
Ryan Houdek
b948be7ad8
Implements more syscalls that I found while running applications
...
Futex needs to be looked at seriously soon to see if we can just pass it
directly
2020-03-21 21:12:15 -07:00
Ryan Houdek
c94102051c
Implements Vector_FTOZS op in x86 JIT
2020-03-21 20:58:53 -07:00
Ryan Houdek
2133a1755d
Implement vector integer multiply IR ops
2020-03-21 20:56:54 -07:00
Stefanos Kornilios Mitsis Poiitidis
628a208db2
Merge pull request #61 from Sonicadvance1/ELFLoader_arg_plumbing
...
Plumbs ELFLoader arguments through the CodeLoader
2020-03-22 03:19:16 +02:00
Ryan Houdek
3fd1475d30
Plumbs ELFLoader arguments through the CodeLoader
...
This is necessary for execve in the future to keep everything in sync
2020-03-21 15:19:31 -07:00
Ryan Houdek
8459f75487
Updates cpp-optparse submodule
2020-03-21 15:18:20 -07:00
Stefanos Kornilios Mitsis Poiitidis
e18fafbf5c
Merge pull request #60 from Sonicadvance1/remove_sarx
...
Removes sarx usage in the x86 JIT
2020-03-21 22:04:55 +02:00
Ryan Houdek
b93848c343
Removes sarx usage in the x86 JIT
2020-03-21 12:44:27 -07:00
Stefanos Kornilios Mitsis Poiitidis
f9b7eff7c6
Merge pull request #58 from Sonicadvance1/instruction_fixes
...
Fixes for SQRTPD, SQRTPS, RSQRTPS
2020-03-21 09:31:00 +02:00
Stefanos Kornilios Mitsis Poiitidis
8a1a3c222b
Merge pull request #57 from Sonicadvance1/fix_futex
...
Fixes a couple bugs in the futex syscall
2020-03-21 09:30:51 +02:00
Stefanos Kornilios Mitsis Poiitidis
24be8b974f
Merge pull request #50 from Sonicadvance1/keep_print
...
Makes sure DCE pass doesn't remove print IR op
2020-03-21 09:27:37 +02:00
Stefanos Kornilios Mitsis Poiitidis
c4cc36d23b
Merge pull request #54 from Sonicadvance1/threaded_compile_workaround
...
Throws a mutex in CompileBlock until we properly handle threaded compilation.
2020-03-21 09:27:06 +02:00
Stefanos Kornilios Mitsis Poiitidis
790faab6a3
Merge pull request #51 from Sonicadvance1/cpuid_hypervisor
...
Adds hypervisor CPUID function
2020-03-21 09:22:32 +02:00
Stefanos Kornilios Mitsis Poiitidis
43df66de29
Merge pull request #52 from Sonicadvance1/remove_old_code
...
Removes old test code from FEXCore
2020-03-21 09:21:51 +02:00
Stefanos Kornilios Mitsis Poiitidis
c6e606c609
Merge pull request #55 from Sonicadvance1/more_syscalls
...
Adds a few new syscalls that I saw in app testing
2020-03-21 09:19:41 +02:00
Stefanos Kornilios Mitsis Poiitidis
f2f6c34309
Merge pull request #56 from Sonicadvance1/fix_automatic_dynamic_linker
...
Fixes the dynamic linker detection
2020-03-21 09:17:55 +02:00
Ryan Houdek
6de60bea70
Fixes FRSQRT in AArch64
...
fmov (vector, immediate, broadcast) keys register size based on the
float/double constant passed in
So since 1.0f was missing the f, it was passed as a double, duplicating
64bit doubles rather than 32bit floats
2020-03-20 19:49:05 -07:00
Ryan Houdek
2bc7c28a9c
Fixes AArch64 ROL implementation
...
In the case that RA does Dst = Src[1] then we would have overwrote our
shift value. Move the negation to the top of the 8bit and 16bit ROL to
make sure that doesn't happen
2020-03-20 18:58:39 -07:00
Ryan Houdek
6899a8f53a
Implements unit tests for sqrtpd, sqrtps, and rsqrtps
2020-03-20 18:14:44 -07:00
Ryan Houdek
76d67812ed
Implements 64bit RSQRT and fixes vector 32bit RSQRT in the x86 JIT.
2020-03-20 18:14:44 -07:00
Ryan Houdek
ba71271982
Implements SQRTPS in OpDispatcher
2020-03-20 18:14:44 -07:00
Ryan Houdek
24159b969c
Fixes RSQRTPS x86 tables
2020-03-20 18:14:39 -07:00
Ryan Houdek
ca36fd4523
Fixes a couple bugs in the futex syscall
...
futex command 9 is actually WAIT_BITSET, not WAKE_BITSET
Implements futexes with timeouts as well, necessary for anything using
std::condition_variable and wait_for/wait_until
2020-03-20 17:32:37 -07:00
Ryan Houdek
e5dc72ad69
Fixes the dynamic linker detection
...
Fixes #49
Makes it so we no longer have to pass in the ld location to the
ELFLoader application.
Once we switch over to the dynamic linker, the program being executed to
us is no longer a dynamic program.
But the frontend ELF loader also still needs to know that we are
executing the dynamic linker so it can append the linker to the
arguments.
2020-03-20 13:08:33 -07:00
Ryan Houdek
ea167cf7d9
Adds a few new syscalls that I saw in app testing
...
madvise, dup, bind, syslog, getresuid, get_mempolicy, newfstatat, execve
execve specifically returned error. We don't support it yet.
2020-03-20 12:30:08 -07:00
Ryan Houdek
8e06765101
Throws a mutex in CompileBlock until we properly handle threaded compilation.
...
This is purely a workaround until it gets implemented correctly
2020-03-20 12:25:14 -07:00
Ryan Houdek
c44da5d3eb
Implements and fixes flag setting in a few instructions
...
A few instructions were missing flag setting entirely or were generating
wrong flags
- ROL, ROR, SHL, SHR, ASHR, SHLD, SHRD, CMPXCHG
This fixes those instructions and removes a few outdated comments
Specifically noticed when trying to run xcalc, it was using the flag
results from SHL for something and crashed without flag setting.
Unit tests for RFLAG setting instructions is still forthcoming
2020-03-20 12:22:00 -07:00
Ryan Houdek
105d27d0da
Removes old test code from FEXCore
...
These weren't ever actually used and were more of a blasting zone for
testing
2020-03-20 12:11:44 -07:00
Ryan Houdek
a059fc1943
Adds hypervisor CPUID function
...
4000'0000h is the hypervisor CPUID information leaf, can just return all
zeroes to imply we aren't running under a hypervisor
EAX: The maximum input value for CPUID supported by the hypervisor.
- We return zero here to signify no Hypervisor
EBX, ECX, EDX: Vedor ID signature
CPUID 4000'0001h - 4000'000Fh is reserved for hypervisor, which we don't
need to expose since we return zero in EAX
2020-03-20 12:06:01 -07:00
Ryan Houdek
9c24a92f73
Makes sure DCE pass doesn't remove print IR op
...
This is useful for debugging, don't want the DCE pass to remove it
2020-03-20 12:04:23 -07:00
Stefanos Kornilios Mitsis Poiitidis
12c71ad227
Merge pull request #45 from Sonicadvance1/unittests/arm64_ci_ctest
...
Adds ctest step to the CI
2020-03-19 10:22:25 +02:00