Commit Graph
9533 Commits
Author SHA1 Message Date
Ryan Houdek a247dfe9b9 Adds noop VM source file
This is necessary to fix building on non-x86 platforms.
2020-03-15 00:24:11 -07:00
Ryan Houdek c4b40b2d8f Implements vector shift by immediate ops 2020-03-13 17:55:28 -07:00
Ryan Houdek 664466b60f Fixes 64bit Vector SToF
Was just using the 32bit instruction on accident
2020-03-13 17:54:43 -07:00
Ryan Houdek 26aa13e7a9 Replaces x86 rsqrtss usage with sqrtss+divss
x86 documentation only claims 1.5 * 2^-12 precision on rsqrtss.
Which was enough to make rsqrt of 1.0 be off by a significant amount
This made unit tests fail, so let's just make it more accurate
2020-03-13 17:52:26 -07:00
Ryan Houdek de444dc62b Fixes SplatVector IR Op 2020-03-13 17:52:07 -07:00
Ryan Houdek 39bac4efea Fixes 32bit memory load op
xbyak was silently treating this dword load as a 64bit load because the
destination was a 64bit register
2020-03-13 17:51:07 -07:00
Ryan Houdek 7fa3a318db Division op fixes
Some division ops weren't sign extending properly and implements 16bit
ops
2020-03-13 17:49:38 -07:00
Ryan Houdek 23d516d7f3 Fixes SHL/SHR ops
Makes sure they are operating at the correct sizes.
Also removes the BMI2 SHRX/SHLX ops
2020-03-13 17:47:53 -07:00
Ryan Houdek e426a622bb Fixes PRINT op in IR JIT. Needs correct stack alignment 2020-03-13 17:47:25 -07:00
Ryan Houdek cf106289d3 Removes bad vector BFE usage in MOVMSK op
BFE isn't actually meant to be used on vector ops.
Interpreter got away with it because it doesn't have register classes.
Actually do a correct element extract and sign bit extraction
2020-03-13 17:45:36 -07:00
Ryan Houdek 4227a0cdc7 Removes old asserts from CMPS instruction 2020-03-13 17:45:14 -07:00
Ryan Houdek 3bb154b7f0 Merge pull request #17 from Sonicadvance1/rename_cvts
Cleans up and renames the CVT ops
2020-03-13 17:43:53 -07:00
Ryan Houdek 79ffd11c1d Cleans up and renames the CVT ops
Fixes issue #14.

A lot of these were named in very confusing ways.
Makes them very explicit about what the operation is doing
2020-03-13 17:42:39 -07:00
Ryan Houdek 121bed017c Merge pull request #24 from Sonicadvance1/fixes_jit_x86
Various fixes for the x86 JIT
2020-03-13 15:52:48 -07:00
Ryan Houdek 0e80dc27cc Merge pull request #21 from Sonicadvance1/movshdup
Implements Movshdup instruction
2020-03-13 15:52:24 -07:00
Ryan Houdek 30338dd7f4 Merge pull request #20 from Sonicadvance1/pextrw
Implements PExtrw instruction
2020-03-13 15:52:09 -07:00
Ryan Houdek 78bcf3960d Merge pull request #19 from Sonicadvance1/psrl_family
Implements PSRL{W,D,Q} instruction family
2020-03-13 15:51:58 -07:00
Ryan Houdek 4459a048f7 Merge pull request #18 from Sonicadvance1/Interpreter/vushr
Removes undefined behaviour in the VUSHR in interpreter
2020-03-13 13:04:56 -07:00
Ryan Houdek 7cb97ed2f8 Merge pull request #16 from Sonicadvance1/fixes_cmake_aarch64
Fixes CMake configuration on AArch64 host
2020-03-13 13:04:38 -07:00
Ryan Houdek dd8e784b9a Merge pull request #15 from Sonicadvance1/force_pic
Enables PIC
2020-03-13 13:04:25 -07:00
Ryan Houdek d5481efa6b Fixes AtomicFetch{Add,Sub} for 8bit and 16bit ops in the x86 JIT 2020-03-12 22:13:53 -07:00
Ryan Houdek 600f43779c Fixes and implements a couple vector shift ops in the x86 JIT 2020-03-12 22:13:17 -07:00
Ryan Houdek 12288ab887 Fixes VFCMPLE in x86 JIT 2020-03-12 22:12:34 -07:00
Ryan Houdek 2c44338478 Implements VFCMPNEQ in x86 JIT 2020-03-12 22:11:52 -07:00
Ryan Houdek 2e34f25257 Implements VSQXTUN and VSQXTUN2 in x86 JIT 2020-03-12 22:11:36 -07:00
Ryan Houdek d0a7685bfa Implements VUMULL in x86 JIT 2020-03-12 22:11:18 -07:00
Ryan Houdek 5bb93e5b8e Implements VSQADD and VSQSUB in x86 JIT 2020-03-12 22:09:49 -07:00
Ryan Houdek e3e62f3dd1 Fixes VInsGPR in x86 JIT 2020-03-12 22:09:21 -07:00
Ryan Houdek 6730d5601c Fixes VExtractToGPR on x86 JIT 2020-03-12 22:08:30 -07:00
Ryan Houdek 739b471731 Implements signed/unsigned div/rem on x86 JIT 2020-03-12 22:07:36 -07:00
Ryan Houdek 42830d3e48 Merge pull request #22 from phire/fix_condslt
Fix Signed LT in x86 jit
2020-03-12 22:02:12 -07:00
Ryan Houdek 26ffd0b5dd Merge pull request #23 from phire/not_neg
Fix Neg IR_OP, Add Not IR_OP
2020-03-12 22:02:02 -07:00
Scott Mansell f2967e8ef9 OP_NEG/OP_NOT: add support for other opsizes. 2020-03-13 17:54:09 +13:00
Scott Mansell 99d1dcad98 Fix Neg IR_OP, Add Not IR_OP
In some places, Neg meant logical one's complement negation.
In others it meant arithmetic two's complement negation.

As both x87 and aarch64 have neg instructions that do
two's complement negations, we will standardise on that.

Additionally we will add a Not_IR op for one's complement
2020-03-13 17:53:57 +13:00
Scott Mansell ba4e311dc2 Fix Signed LT in x86 jit 2020-03-13 17:52:49 +13:00
Ryan Houdek 5bf9dd13b3 Adds movshdup unit test 2020-03-12 18:31:41 -07:00
Ryan Houdek 6069fcb9d4 Implements Movshdup instruction 2020-03-12 18:31:33 -07:00
Ryan Houdek f10674160d Implements pextrw unit test 2020-03-12 18:28:57 -07:00
Ryan Houdek 64dd3187d5 Implements PExtrw instruction 2020-03-12 18:28:29 -07:00
Ryan Houdek 74a73c92a4 Implements PSRL{W,D,Q} unit tests 2020-03-12 18:24:03 -07:00
Ryan Houdek 612b74d001 Implements PSRL{W,D,Q}
Saw this family when running mesa softpipe
2020-03-12 18:23:01 -07:00
Ryan Houdek 5cb9f9e0fa Removes undefined behaviour in the VUSHR in interpreter 2020-03-12 18:20:12 -07:00
Ryan Houdek d082a5f551 Fixes CMake configuration on AArch64 host 2020-03-12 16:28:51 -07:00
Ryan Houdek 85a882909b Enables PIC
We don't require non-pie and this can also solve some linking problems I
saw on Arch64 hosts
2020-03-12 16:26:13 -07:00
Stefanos Kornilios Mitsis Poiitidis 99399ecbac Merge pull request #10 from Sonicadvance1/unittests/cmps
Adds unit tests for the CMPS instruction family
2020-03-12 10:57:59 +02:00
Stefanos Kornilios Mitsis Poiitidis 5afaf06c60 Merge pull request #11 from Sonicadvance1/scas
Implements REPNE for SCAS
2020-03-11 10:09:05 +02:00
Ryan Houdek 1b4ea20b17 Implements REPNE for SCAS 2020-03-10 18:21:16 -07:00
Ryan Houdek d9bde8cfcf Implements unit tests for CMPS
Isn't all encompassing, we're still missing REPNE tests for the larger sizes
2020-03-10 18:18:36 -07:00
Ryan Houdek a8f4e8a860 Implements CMPS support for REPNE and no prefix 2020-03-10 18:18:06 -07:00
Stefanos Kornilios Mitsis Poiitidis 963de98276 Merge pull request #7 from Sonicadvance1/unittests/primary_1
Primary table unit tests and a couple fixes
2020-03-10 15:26:05 +02:00