Commit Graph
445 Commits
Author SHA1 Message Date
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