2732 Commits

Author SHA1 Message Date
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
Ryan Houdek
1b4ea20b17 Implements REPNE for SCAS 2020-03-10 18:21:16 -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
Stefanos Kornilios Mitsis Poiitidis
e2e9e1eb41
Merge pull request #9 from Sonicadvance1/unittests/stos
Adds unit tests for the STOS instruction family
2020-03-10 15:25:49 +02:00
Stefanos Kornilios Mitsis Poiitidis
dc2ed29e18
Merge pull request #8 from Sonicadvance1/unittests/movs
Adds unit tests for the MOVS instruction family
2020-03-10 09:47:29 +02:00
Ryan Houdek
4f0a8187ce Implements support for STOS without REP flag
It doesn't support REPNE so update that assert as well
2020-03-09 22:59:07 -07:00
Ryan Houdek
edf472a98a Updates assert in the MOVS
REPNE on MOVS is unsupported, most likely the prefix is ignored but
until a hardware test can confirm update the comment
2020-03-09 22:31:31 -07:00
Ryan Houdek
7a052000c9 Implements SCAS with no repeat prefix
This is used in a couple unit tests
2020-03-09 18:15:05 -07:00
Ryan Houdek
66b08b3bad Fixes MOV to moffset destination
With how we decode literals the destination actually ends up in Src[1]
2020-03-09 18:14:20 -07:00
Ryan Houdek
0fc06c7bfa Implements an x86Table flag to partially ignore overlays
Currently only support partially ignoring for overlay 0x66, this means
we only support no overlay at all and 0x66. Using only two bits of flag
space rather than 3.
If we find an instruction family that supports a different one then we
should break it out to three independent flags. Keeping it two until
then

Unit tests to ensure this keeps working is forthcoming
2020-03-09 13:06:46 -07:00
Stefanos Kornilios Mitsis Poiitidis
39f639e07a
Merge pull request #4 from Sonicadvance1/fix_push_reg
Fixes PUSH with register encoded in op
2020-03-09 11:35:20 +02:00
Ryan Houdek
e1c7c9c0f3 Fixes BTC, BSF, BSR, and XADD table flags
They require FLAGS_NO_OVERLAY otherwise the frontend can't find the
instructions.
2020-03-08 22:07:00 -07:00
Ryan Houdek
c11ac417ce Fixes BSR and BSF 32bit op when source is zero
BSR/BSF needs to not write to destination when source is zero
This ensures it doesn't clear the upper 32bits of the register in this
case.
2020-03-08 22:05:47 -07:00
Ryan Houdek
30b2f019b4 Implements 16bit SHLD/SHRD
Unit tests found them missing
2020-03-08 22:05:08 -07:00
Ryan Houdek
19a6292813 Fixes bug in SHRD
Need to negate by the size of the op, not just regular negate
instruction
2020-03-08 22:04:26 -07:00
Ryan Houdek
2726e2512d Fixes PUSH with register encoded in op
Unittest to ensure this keeps working is forthcoming.
2020-03-08 16:05:25 -07:00
Ryan Houdek
e9092b328b Implements 16bit long div and long remainder in interpreter
Missed this originally when implementing, unit tests found it missing
2020-03-07 21:52:40 -08:00
Ryan Houdek
86fb69a5a2 Fixes CVTDQ2PS that unit tests uncovered
This was actually doing 2xint32 -> 2xdouble translations initially.
Needed to do 4xint32 -> 4xfloat
2020-03-07 21:51:45 -08:00
Ryan Houdek
2da7e9d29b Minor cleanup in the flag calculation for sub
No need to make a switch statement to extract the sign bit of the source
2020-03-07 21:51:04 -08:00
Ryan Houdek
03c954930a Fixes translation of a 16bit CALL instruction
This instruction is effectively dead since Linux reserves the lower
16bits for itself, but in the case that someone manages to encode it
then we will at least attempt to access the correct RIP.
2020-03-07 21:49:46 -08:00
Ryan Houdek
463710929a Fixes a bug in PUSH that unit tests uncovered
In an edge cases of pushing with a 32bit immediate sign extended to
64bit then there could have been a conflict.
Rearrange the ordering a bit to ensure it is correct
2020-03-07 21:48:22 -08:00
Ryan Houdek
65b85b2b4d Fixes bugs uncovered by the Group1 Primary table unit tests
These instructions treat the immediate encoding differently depending on
the operating size of the instruction

For 16bit and 32bit operation they treat the immediate as an
appropriately sized immediate.
For 64bit operand size the immediate is sign extended to handle the new
operating width.
CMP was previously set to SEXT for this which would have its own set of
problems handling it like that.
2020-03-06 22:12:16 -08:00
Ryan Houdek
41dbf5b4e7 Adds xbyak to externals
Removes cmake check to see if it exists
2020-03-06 00:20:13 -08:00
Ryan Houdek
98d0b36177 Update vixl to latest make it a shallow copy to be smaller 2020-03-05 23:24:21 -08:00
Ryan Houdek
891ac58d8f Fixes FEXCore cmake file to no longer search for SonicUtils subdir 2020-03-06 09:10:32 +02:00
Ryan Houdek
369686c992 Initial Commit 2020-03-06 09:08:13 +02:00
Stefanos Kornilios Mitsis Poiitidis
e9ea4cbb76 FEXCore: Move to Externals/FEXCore 2020-03-06 09:07:37 +02:00
Ryan Houdek
2000bf7baa Update vixl external to fix CNTVCT_EL0 2020-03-06 07:56:07 +02:00
Ryan Houdek
6ac9f93d0d Update vixl submodule 2020-03-06 07:54:33 +02:00
Ryan Houdek
7252050e42 Initial commit 2020-03-06 07:48:39 +02:00
Stefanos Kornilios Mitsis Poiitidis
a468d10d56 SonicUtils: Move to External/SonicUtils 2020-03-06 07:24:46 +02:00