Ryan Houdek
a11aed2f47
Removes some undefined behaviour in the interpreter VExtr implementation
2020-09-26 12:52:26 -07:00
Ryan Houdek
ddd7b8f406
Adds a mixxing VXor op to the IREmitter helper
2020-09-26 12:52:26 -07:00
Ryan Houdek
5b96dd04f0
Updates XMM PAlignr test to test more cases
...
One larger than the first register, then another that would zero
everything
2020-09-26 12:52:02 -07:00
Ryan Houdek
d8d50e8200
Merge pull request #430 from Sonicadvance1/pabs
...
Implements support for SSSE3 PABS{B,W,D}
2020-09-26 12:51:10 -07:00
Ryan Houdek
e09a9fb651
Adds XMM register PABS unit tests
...
verified with host runner
2020-09-26 12:47:01 -07:00
Ryan Houdek
854c2f259a
Adds MMX register PABS unit tests
...
verified with host runner
2020-09-26 12:47:01 -07:00
Ryan Houdek
ec06806244
Implements support for SSSE3 PABS{B,W,D}
...
For both MMX and XMM registers
2020-09-26 12:47:01 -07:00
Stefanos Kornilios Mitsis Poiitidis
83db01f505
Merge pull request #429 from Sonicadvance1/psign
...
Implements support for SSSE3 PSIGN{B,W,D}
2020-09-26 20:20:06 +03:00
Stefanos Kornilios Mitsis Poiitidis
de62124b95
Merge pull request #428 from Sonicadvance1/lzcnt
...
Implements ABM's LZCNT instruction
2020-09-26 20:11:47 +03:00
Stefanos Kornilios Mitsis Poiitidis
ca676e324d
Merge pull request #427 from Sonicadvance1/duplicated_ops
...
Implements the couple of duplicated ops
2020-09-26 20:09:58 +03:00
Stefanos Kornilios Mitsis Poiitidis
5cb3a9df9d
Merge pull request #426 from Sonicadvance1/addsub
...
Implements ADDSUB{PS, PD}
2020-09-26 20:09:48 +03:00
Stefanos Kornilios Mitsis Poiitidis
cf6b07fc16
Merge pull request #425 from Sonicadvance1/remove_direct_widening_use
...
Removes some direct usage of widening flag
2020-09-26 20:09:35 +03:00
Stefanos Kornilios Mitsis Poiitidis
1f24fefdff
Merge pull request #422 from Sonicadvance1/host_runner_enable
...
Adds and enables the x86 host runner when building on x86 host!
2020-09-26 20:09:15 +03:00
Ryan Houdek
42c6eacfc5
Adds and enables the x86 host runner when building on x86 host!
...
Disables the thunking unit test on host because obviously it won't work
there
Also disables the SSE4a unit tests on host because Intel doesn't support
SSE4a and technically neither does FEX
2020-09-25 21:17:54 -07:00
Ryan Houdek
7c14619346
Support disabling ASM and IR tests per runner type
...
Allows us to disable specific tests for interpreter, jit, or host.
No architecture specific disabling yet
2020-09-25 21:17:54 -07:00
Stefanos Kornilios Mitsis Poiitidis
8662fb0db7
Merge pull request #424 from Sonicadvance1/mmx_cvt
...
Implements missing mmx conversion ops
2020-09-25 18:21:16 +03:00
Stefanos Kornilios Mitsis Poiitidis
e145876898
Merge pull request #404 from Sonicadvance1/x87_bcd
...
Adds support for BCD x87 intructions
2020-09-25 18:07:49 +03:00
Ryan Houdek
f9cf8344e8
Adds MMX register PSIGN unit tests
...
verified with host runner
2020-09-24 19:46:39 -07:00
Ryan Houdek
5c339d605e
Adds XMM register PSIGN unit tests
...
verified with host runner
2020-09-24 19:46:15 -07:00
Ryan Houdek
faa06771ef
Implements support for SSSE3 PSIGN{B,W,D}
...
For both MMX and XMM registers
2020-09-24 19:45:39 -07:00
Ryan Houdek
b68832f31b
Adds the IR ops to the IREmitter helper
2020-09-24 19:45:17 -07:00
Ryan Houdek
7c73920a2c
Implements the new IR ops in the x86-64 JIT
2020-09-24 19:44:55 -07:00
Ryan Houdek
6254d15f02
Implements the new IR ops in the ARM64 JIT
2020-09-24 19:36:15 -07:00
Ryan Houdek
2079e3ca31
Implements the new IR ops in the interpreter
2020-09-24 19:35:18 -07:00
Ryan Houdek
c6385093eb
Adds a few new IR ops
...
VectorZero, useful to generate a zero vector without any previous
dependencies
and comparisons with zero which ARM supports faster versions of
2020-09-24 19:34:19 -07:00
Ryan Houdek
04d2d70e51
Implements LZCNT unit test
...
Verified correct with the hsot unit test runner
2020-09-23 22:35:32 -07:00
Ryan Houdek
84936e6297
Implements ABM's LZCNT instruction
...
This overlaps the previous BSR instruction which is why the table had to
be changed.
We were accidently claiming support for ABM in CPUID before so that
didn't need to be changed.
We now implement both LZCNT and TZCNT so we fully support ABM now.
2020-09-23 22:35:32 -07:00
Ryan Houdek
697df88314
Implements the new CLZ IR op in the x86 JIT
2020-09-23 22:14:56 -07:00
Ryan Houdek
47c3fdafd7
Implements the new CLZ op in the ARM64 JIT
2020-09-23 22:14:36 -07:00
Ryan Houdek
935deb0167
Implements new CLZ op in the interpreter
2020-09-23 22:14:15 -07:00
Ryan Houdek
479505b069
Implements new CountLeadingZeroes IR op
2020-09-23 22:13:28 -07:00
Ryan Houdek
c72d50a9c6
Implements the couple of duplicated ops
...
SAL is exactly the same as SHL
TEST is exactly the same as the previous TESTs
Bit silly of encodings since compilers will never actually generate
these
No unit tests on these since getting nasm to emit it is a PITA
2020-09-23 18:56:26 -07:00
Ryan Houdek
61f1d28077
Implements ADDSUB{PS, PD} unit tests
...
Verified with the host runner
2020-09-23 18:09:02 -07:00
Ryan Houdek
ae3c38e9e5
Implements ADDSUB{PS, PD} in the OpDispatcher
2020-09-23 18:08:19 -07:00
Ryan Houdek
09ee71b8c3
Adds missing VFSub IREmitter function
2020-09-23 18:07:53 -07:00
Ryan Houdek
e238afe2fb
Removes some direct usage of widening flag
...
Instead use our helpers to determine the sizes to stay consistent
2020-09-23 17:30:43 -07:00
Ryan Houdek
b0065435e2
Missing MMX conversion ops unit tests
2020-09-23 17:21:01 -07:00
Ryan Houdek
35798c8d9d
Implements missing mmx conversion ops
2020-09-23 17:21:01 -07:00
Stefanos Kornilios Mitsis Poiitidis
d5d0899d5f
Merge pull request #421 from Sonicadvance1/fix_mov_mem_offset
...
Fixes move with mem offset
2020-09-23 21:11:16 +03:00
Ryan Houdek
811e956df5
Fixes move memoffset tests to have address size override prefix
...
Required for the 32bit literal offset
2020-09-23 10:43:20 -07:00
Ryan Houdek
f5a7a3deec
Fixes move with mem offset
...
Move with mem offset defaults to 64bit offset and the literal size is
changed based on address size override rather than operand size
override.
Operand size override still works in this case, but only for the
register being passed in.
2020-09-23 10:43:12 -07:00
Stefanos Kornilios Mitsis Poiitidis
6f58e1e1c5
Merge pull request #419 from Sonicadvance1/x87_fixes
...
x87 fixes
2020-09-23 20:19:29 +03:00
Stefanos Kornilios Mitsis Poiitidis
f90dd64682
Merge pull request #420 from Sonicadvance1/cmps_fixes
...
Fixes flags calculation in CMPSB
2020-09-23 20:10:29 +03:00
Ryan Houdek
d8e5495780
Fixes CMPSB unit tests
...
These were confirmed by host runner
2020-09-23 10:03:33 -07:00
Ryan Houdek
e395c37de6
Fixes flags calculation in CMPSB
...
The order of these ops were flipped
2020-09-23 10:00:18 -07:00
Ryan Houdek
6fdb78bb87
fscale test is no longer failing
2020-09-23 09:46:47 -07:00
Ryan Houdek
a4f92b8564
Removes some undefined behaviour in f2xm1 unit test
...
If the input range is outside of -1.0 to +1.0 then the result is
undefined.
To avoid precision problems just check for zero, aka 2^0-1 which also
returns zero
2020-09-23 09:45:08 -07:00
Ryan Houdek
f5d15df6be
Flips incorrect argument order in fyl2x unit test
2020-09-23 09:44:32 -07:00
Ryan Houdek
9ed9497f06
Removes some undefined behaviour in x87 inc/dec stp tests
2020-09-23 09:42:45 -07:00
Ryan Houdek
6cd4896db3
Fixes bugged x87 fcmov tests
2020-09-23 09:42:10 -07:00