159 Commits

Author SHA1 Message Date
Ryan Houdek
3d0c11c770 Fixes VSLI and VSRI on AArch64
I misunderstood these instructions on the AArch64 side.
VSLI/VSRI doesn't operate on 128bit wide vectors. Its scalar version
only works on 64bit.
We have to move the vector to GPRs and do some bit twiddling then move
the full 128bit vector back after the fact
2020-03-06 07:56:07 +02:00
Ryan Houdek
e3bbb8a580 Fixes a couple AArch64 JIT Atomic Fetches
Swap wasn't storing in to destinationo
And and Sub weren't using the right registers
2020-03-06 07:56:07 +02:00
Ryan Houdek
520d098e23 Implements VCastFromGPR in AArch64 JIT 2020-03-06 07:56:07 +02:00
Ryan Houdek
6ee7d493f3 Adds the ability to set a rootfs overlay path 2020-03-06 07:56:07 +02:00
Scott Mansell
f5bf8eaeb2 Add FST/FSTP m80 2020-03-06 07:56:07 +02:00
Scott Mansell
bbd951603f Add FLD m32/m64
Currently produces incorrect results on infinities/denormals.
2020-03-06 07:56:06 +02:00
Scott Mansell
1dee7cb037 Append x87 flags to cpustate flags[] 2020-03-06 07:56:06 +02:00
Scott Mansell
4fe10ca130 Add Load/StoreContextIndexted IR instructions
Useful for things like x87 where instructions can dynamically index
into a resgister file.

This commit includes support for irint and x86 jit.
2020-03-06 07:56:06 +02:00
Scott Mansell
bb879a7beb Fix FLD instruction flags 2020-03-06 07:56:06 +02:00
Scott Mansell
4051d529df Fix size of movesd xmm <-- m64 2020-03-06 07:56:06 +02:00
Ryan Houdek
8cd865a91e Removes debug log 2020-03-06 07:56:06 +02:00
Ryan Houdek
f4a5770f1e Implements lock prefix on some commonly used ops 2020-03-06 07:56:06 +02:00
Ryan Houdek
3a608efbc7 Adds new atomic ops to the x86 JIT 2020-03-06 07:56:06 +02:00
Ryan Houdek
9d8b60af5c Work on x86 JIT ASM dispatcher 2020-03-06 07:56:05 +02:00
Ryan Houdek
96b0214bc1 Add new atomic ops to the AArch64 JIT 2020-03-06 07:56:05 +02:00
Ryan Houdek
86f21c2dbd Adds Atomic Swap/FetchAnd/FetchOr/FetchXor to IR json 2020-03-06 07:56:05 +02:00
Ryan Houdek
e1d2a934e2 Fixes the scalar SSE ops and MOVD 2020-03-06 07:56:05 +02:00
Ryan Houdek
79f3d40be1 Fixes IR JSON and RA to fix wrong class RA generation.
IR Op Print is now the defining split between GPR and FPR class types
2020-03-06 07:56:05 +02:00
Ryan Houdek
6fb2d1aa1f Implements XADD x86 instruction 2020-03-06 07:56:05 +02:00
Ryan Houdek
931df90a4e Fixes FINDMSB IR op in the x86 JIT 2020-03-06 07:56:05 +02:00
Ryan Houdek
1b58aa61f7 Implements new atomic ops in the x86 JIT 2020-03-06 07:56:05 +02:00
Ryan Houdek
6544570264 Implements VUSHR IR op in x86 JIT 2020-03-06 07:56:04 +02:00
Ryan Houdek
a684bc1aff Implements SplatVector2/4 in x86 JIT 2020-03-06 07:56:04 +02:00
Ryan Houdek
2858adc0d3 Fixes MOVSD x86 instruction 2020-03-06 07:56:04 +02:00
Ryan Houdek
28142703ee Fixes BTR/BTS op when destination is GPR 2020-03-06 07:56:04 +02:00
Ryan Houdek
77e7a453d3 Adds BTC x86 instruction 2020-03-06 07:56:04 +02:00
Ryan Houdek
c014a0ce3a Adds new atomic IR ops 2020-03-06 07:56:04 +02:00
Ryan Houdek
d666ee0d57 Fixes SplatVector IROp size calculation 2020-03-06 07:56:04 +02:00
Ryan Houdek
124dc592a9 Syscall additions and improvements
Fixes a bug in writev where we need to parse the iovec struct and
convert it.
Implements 15 new syscalls
2020-03-06 07:56:04 +02:00
Scott Mansell
0d782bd515 Fix handling of 8/16bit loads in x64 jit.
Need to sign extend, otherwise junk from upper bits
can mess things up.
2020-03-06 07:56:03 +02:00
Scott Mansell
5429721350 Also make MOVXS accept the 66 prefix 2020-03-06 07:56:03 +02:00
Scott Mansell
7ec68ce815 Fix decoding legacy 66 0F XX insturctions. 2020-03-06 07:56:03 +02:00
Ryan Houdek
e2b30d9c02 Adds REV IR op to x86 JIT and AArch64 JIT 2020-03-06 07:56:03 +02:00
Ryan Houdek
f3e5ee4840 Adds new syscalls to emulate
Adds ten new syscalls that I managed to hit in console apps
2020-03-06 07:56:03 +02:00
Ryan Houdek
255138dcc4 Adds a bunch of new instructions to the OpcodeDispatcher 2020-03-06 07:56:03 +02:00
Ryan Houdek
962669cd17 Adds new IR ops to the LLVM JIT 2020-03-06 07:56:03 +02:00
Ryan Houdek
29b7ddb67f Adds new IR ops to the x86-64 JIT 2020-03-06 07:56:03 +02:00
Ryan Houdek
fc0ce3d1dc Adds new IR ops to the AArch64 JIT 2020-03-06 07:56:02 +02:00
Ryan Houdek
e9d1ec6aff Adds new IR ops to the interpreter 2020-03-06 07:56:02 +02:00
Ryan Houdek
1ef4bf90a2 Adds new IR Ops
18 new IR ops for handling things
2020-03-06 07:56:02 +02:00
Ryan Houdek
6e46a28116 Fixes bug in syscall gettime
gettime can have a nullptr argument and also we were using the wrong
argument
2020-03-06 07:56:02 +02:00
Ryan Houdek
6b636c3c26 Fixes a couple of instructions in the x86Tables 2020-03-06 07:56:02 +02:00
Ryan Houdek
2f5e2ea066 Fixes LODS and SCAS x86Table flags 2020-03-06 07:56:02 +02:00
Ryan Houdek
1b4e9434e4 Add accurate std output option
This gives us accurate stdout and stderr output.
Useful for terminal applications that take advantage of ncurses or
similar
2020-03-06 07:56:02 +02:00
Ryan Houdek
3bb9197e6a Adds VAND IR Op 2020-03-06 07:56:02 +02:00
Ryan Houdek
a858296ecd Removes SSE41, SSE42, and AVX support from CPUID 2020-03-06 07:56:01 +02:00
Scott Mansell
2babc1292c GdbServer: Breakpoint intergation 2020-03-06 07:56:01 +02:00
Scott Mansell
9a89741ff2 gdbServer: Allow continuing 2020-03-06 07:56:01 +02:00
Scott Mansell
e050eace1d Refactor context start/pause/step interface 2020-03-06 07:56:01 +02:00
Scott Mansell
545b542f9b GdbServer: Implement xml target for register order
We can now simply memcpy much of memory state.
2020-03-06 07:56:01 +02:00