Commit Graph
11 Commits
Author SHA1 Message Date
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 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
Stefanos Kornilios Mitsis Poiitidis e9ea4cbb76 FEXCore: Move to Externals/FEXCore 2020-03-06 09:07:37 +02:00