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
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
Ryan Houdek
a10da81c4d
Adds ctest step to the CI
...
This ensures all unit tests are ran every PR and merge
2020-03-18 13:18:22 -07:00
Ryan Houdek
55a2c3ca99
Merge pull request #41 from Sonicadvance1/fix_llvm9
...
LLVM 9 fixes
2020-03-18 11:05:40 -07:00
Ryan Houdek
fc452de973
Some more fixes for LLVM picked up from the AArch64 side
...
AArch64 is a bit more picky when mixing vector and scalar ops
2020-03-17 19:28:17 -07:00
Ryan Houdek
2e0851975f
Makes sure LLVM on AArch64 can read the cycle counter
2020-03-17 19:28:08 -07:00
Ryan Houdek
d6fb1f2d17
Make sure OpDispatcher is using explicit scalar operations
...
LLVM specifically gets really picky if you mix vector and scalar ops.
Additionally AArch64 seems to be even pickier than x86 for this
2020-03-17 19:27:58 -07:00
Ryan Houdek
94cf11068c
Makes sure Interpreter zeros the upper 64bits when doing Double->Float
2020-03-17 19:27:50 -07:00
Ryan Houdek
aa259c65ef
Merge pull request #42 from Sonicadvance1/unittests/more_desc_names
...
Make unit test names more descriptive about what arguments are passed
2020-03-17 17:01:26 -07:00
Ryan Houdek
90c4b3dae7
Merge pull request #33 from Sonicadvance1/minor_x86_vsqxtun
...
Minor optimization in vsqxtun for x86
2020-03-17 17:01:18 -07:00
Ryan Houdek
c89ed356a3
Make unit test names more descriptive about what arguments are passed
...
Rather than an integer between 0 and 8, just give each argument
configuration a short descriptor.
This makes it easier to parse the error output
2020-03-17 14:40:28 -07:00
Ryan Houdek
388e723c78
Fixes shift ops in LLVM9
...
These don't need to operate at 128bit, just one size larger than
incoming.
This is because of 8bit and 16bit shifts rely on 32bit size masking
rather than 8bit and 32bit, so they have to shift at a larger size due
to ensure correct behaviour(that is not undefined).
LLVM-8 worked with the previous behaviour but broke with LLVM-9.
So changing it to this slightly smarter code gen.
2020-03-17 13:52:23 -07:00
Ryan Houdek
16382c4202
Fixes Scalar FCMP in LLVM9
...
LLVM9 is a bit more strict when mixing scalar and vector ops.
Was causing crashes inside of LLVM when mixing a vector source with a
scalar source
2020-03-17 13:51:07 -07:00
Ryan Houdek
8ea266e10f
Implements the new IR ops in the CPU backends
2020-03-17 13:50:37 -07:00
Ryan Houdek
4692a761b6
Implements two new IR Op codes
...
Extracts a vector element to a scalar value
Inserts a scalar element in to a vector
2020-03-17 13:49:47 -07:00
Stefanos Kornilios Mitsis Poiitidis
734618b588
Merge pull request #38 from Sonicadvance1/unittests/smaller_vmem
...
Make the unit test runner allocate less SHM space
2020-03-17 20:15:05 +02:00
Stefanos Kornilios Mitsis Poiitidis
2993e4dab6
Merge pull request #37 from Sonicadvance1/unittests/bt_reg
...
Unit tests and fixes for BT ops with GPR destination
2020-03-17 19:43:44 +02:00
Stefanos Kornilios Mitsis Poiitidis
a32efcfec0
Merge pull request #39 from Sonicadvance1/llvm_typo
...
Fixes AArch64 LLVM intrinsic typo
2020-03-17 19:42:31 +02:00
Stefanos Kornilios Mitsis Poiitidis
7a70b89547
Merge pull request #40 from Sonicadvance1/fix_old_cmake
...
Moves FEXCore install target to the FEXCore/Source directory
2020-03-17 19:42:10 +02:00
Ryan Houdek
e21bf077ab
Moves FEXCore install target to the FEXCore/Source directory
...
This fixes an issue with older cmake versions where it throws an error
if the install target was declared in a different cmake file
Newer cmake doesn't seem to care
2020-03-17 09:39:04 -07:00
Ryan Houdek
7ba9aef304
Fixes AArch64 LLVM intrinsic typo
...
arch64 != aarch64
2020-03-17 09:35:39 -07:00
Ryan Houdek
4ea18647ed
Make the unit test runner allocate less SHM space
...
It doesn't need 64GB of virtual memory, so knock it down to its minimum
virtual memory required
2020-03-17 09:34:20 -07:00
Ryan Houdek
d1154bcb9c
Implements BT op unit tests with GPR destination
2020-03-17 09:28:01 -07:00
Ryan Houdek
469935e5b8
Fixes x86-64 JIT using invalid movzx
...
Found with BT test ops
2020-03-17 09:26:52 -07:00
Ryan Houdek
21e9ec5f8a
Fixes BT ops masking bit selection on GPR destination
...
When the destination is a GPR instead of a memory location then the
source bitselect register is masked by the size of the operation
2020-03-17 09:25:21 -07:00
Ryan Houdek
38cb3d6578
Merge pull request #34 from Sonicadvance1/unittests/known_failures
...
Adds known failure support to unit test runner
2020-03-17 09:22:55 -07:00
Ryan Houdek
a16638844f
Merge pull request #31 from Sonicadvance1/fix_llvm_jit
...
Implements all the ops missing in the LLVM JIT
2020-03-17 09:22:44 -07:00
Ryan Houdek
0a87cbf9d9
Merge pull request #30 from Sonicadvance1/aarch64_jit_fixes
...
Get AArch64 JIT to feature parity of the x86 JIT
2020-03-17 09:22:34 -07:00
Ryan Houdek
c0a660ecb7
Merge pull request #28 from Sonicadvance1/vm_noop
...
Adds noop VM source file
2020-03-17 09:22:26 -07:00
Ryan Houdek
4718493d6c
Merge pull request #27 from Sonicadvance1/fixes_jit_x86_#2
...
x86-64 JIT unit test fixes
2020-03-17 09:22:17 -07:00
Stefanos Kornilios Mitsis Poiitidis
d25ad38b81
Merge pull request #32 from Sonicadvance1/ir_cc_print
...
Fixes names of cond names in debug print
2020-03-17 17:08:58 +02:00
Stefanos Kornilios Mitsis Poiitidis
37dfb638cd
Merge pull request #29 from Sonicadvance1/unittests/tzcnt
...
Fixes FindTrailingZeros IR op in x86 JIT
2020-03-17 17:08:22 +02:00
Stefanos Kornilios Mitsis Poiitidis
cb54e87b56
Merge pull request #36 from Sonicadvance1/fix_rclse
...
Fixes RCLSE pass generating bad IR
2020-03-17 17:06:11 +02:00
Ryan Houdek
ef63f5f30f
Fixes RCLSE pass generating bad IR
...
Don't do DCE inside the pass, let the DCE pass actually handle this.
This was causing later passes to crash
2020-03-16 13:13:17 -07:00
Ryan Houdek
6305b40a33
Adds known failure support to unit test runner
...
This will allow us to add unit tests that have known failures like
unsupported features
Additionally if the test passes and is on the known failure list then it
still fails since its state has changed
2020-03-16 12:35:09 -07:00
Ryan Houdek
9a54578fd8
Minor optimization in vsqxtun for x86
...
No need to zero the register when we are going to logical shift the
upper 64bits to the lower 64bits anyway
2020-03-15 22:32:23 -07:00
Ryan Houdek
dd3a2644de
Fixes names of cond names in debug print
2020-03-15 22:31:22 -07:00
Ryan Houdek
568af31578
Implements all the ops missing in the LLVM JIT
...
Lets the LLVM pass the unit tests as well as the interpreter and other
JITs
2020-03-15 22:30:11 -07:00
Ryan Houdek
1cf60f43cb
[AArch64] Implements vector integer length and narrow ops
2020-03-15 00:54:33 -07:00
Ryan Houdek
99d95d5bca
[AArch64] Implements float conversion ops
2020-03-15 00:53:49 -07:00
Ryan Houdek
deac8d5a75
[AArch64] Implements vector float compare ops
2020-03-15 00:52:43 -07:00
Ryan Houdek
823c803142
[AArch64] Fixes GPR<->FPR conversion moves
2020-03-15 00:45:50 -07:00
Ryan Houdek
702473d3a5
[AArch64] Implements vector shift by immediate ops
2020-03-15 00:44:35 -07:00
Ryan Houdek
4212d177a3
[AArch64] Fixes VSLI/VSRI for byte shifts larger than the register. Needs to zero the reg
2020-03-15 00:44:15 -07:00
Ryan Houdek
35317d0e8a
[AArch64] Fixes and implements vector shift ops
2020-03-15 00:43:06 -07:00
Ryan Houdek
a670d05274
[AArch64] Fixes VEXTR op
2020-03-15 00:42:11 -07:00
Ryan Houdek
8f1d5e9a4c
[AArch64] Fixes FRSQRT Op
2020-03-15 00:40:38 -07:00
Ryan Houdek
803bbe817e
[AArch64] Fixes FSQRT Op
2020-03-15 00:39:40 -07:00
Ryan Houdek
214728e19e
[AArch64] Implements vector saturating add/sub ops
2020-03-15 00:38:43 -07:00
Ryan Houdek
5530e9eb0e
[AArch64] Implements VUMULL IR op
2020-03-15 00:38:17 -07:00