213 Commits

Author SHA1 Message Date
Ryan Houdek
67ac4f015f Adds ANDN to OpDispatcher 2020-03-06 07:56:14 +02:00
Ryan Houdek
1f4418b463 Adds missing move to OpDispatcher 2020-03-06 07:56:14 +02:00
Ryan Houdek
134fa50f8b Adds fsqrt and frsqrt to OpDispatcher 2020-03-06 07:56:14 +02:00
Ryan Houdek
e260378736 Fix a couple x86 instruction definitions 2020-03-06 07:56:14 +02:00
Ryan Houdek
dacd20f44b Fixes interpreter temp allocation size 2020-03-06 07:56:14 +02:00
Ryan Houdek
9bc899aba0 Changes CMPS to not break RA
RA isn't happy with how this is arranged, so it needs to be changed
until RA is good enough to support it
2020-03-06 07:56:14 +02:00
Ryan Houdek
c39f23802c Fixes ULE Select on x86 JIT 2020-03-06 07:56:14 +02:00
Ryan Houdek
9b19d23977 Fixes FindMSB in Interpreter and Arm64 JIT 2020-03-06 07:56:14 +02:00
Ryan Houdek
2889c860d4 Adds new vector IR ops 2020-03-06 07:56:14 +02:00
Ryan Houdek
4523ec52de Fixes struct stat being different definitions on x86 and Arm 2020-03-06 07:56:13 +02:00
Ryan Houdek
299947e3bf Change syscall time debug to a define 2020-03-06 07:56:13 +02:00
Ryan Houdek
eb1f643e16 Use header provided syscall defines 2020-03-06 07:56:13 +02:00
Ryan Houdek
a8d7549b13 Fixes CPUID call in Arm64 JIT 2020-03-06 07:56:13 +02:00
Ryan Houdek
69d6c09436 Fixes AArch64 JIT compiling 2020-03-06 07:56:13 +02:00
Ryan Houdek
a272970559 Rewrites the Dead Context Loadstore elimination passes to be more generic
Accesses are now classified more generically, which allows them to be
optimized away more easily.
XMM still needs a special case but maybe that can be changed in the
future.
2020-03-06 07:56:13 +02:00
Ryan Houdek
07faaaa0fd Make sure to not do pops at function end if from within custom dispatch for x86 2020-03-06 07:56:13 +02:00
Ryan Houdek
18c5a3d6e5 Fixes a couple of bugs in the RA 2020-03-06 07:56:13 +02:00
Ryan Houdek
03a32ef2aa Disables the redundant context load elimination pass again. Since it is broken once again. 2020-03-06 07:56:13 +02:00
Ryan Houdek
92e4be828f Implements new RA pass that supports PHI nodes
Has a heuristic that changes from a map lookup and a linear scan
depending on the number of SSA values. Map lookup is faster for larger
blocks while for smaller blocks linear scan is faster.

Block scan is 1.5x - 2x faster for a 30k SSA value block I was looking
at.
2020-03-06 07:56:13 +02:00
Ryan Houdek
9c3ff4b353 Fixes memory allocation bug in BitSet, adds BitSetView.
We were allocated too much memory for the BitSet.
Adds a BitSetView class that views a window in to the BitSet
2020-03-06 07:56:13 +02:00
Ryan Houdek
19fa513583 Fixes IRValidation bug 2020-03-06 07:56:13 +02:00
Ryan Houdek
89266c4dce Enables new validation passes in debug build. 2020-03-06 07:56:13 +02:00
Ryan Houdek
a25f5eb011 Adds value dominance validation pass 2020-03-06 07:56:08 +02:00
Ryan Houdek
1d9dc9c60f Adds PHI validation pass 2020-03-06 07:56:08 +02:00
Ryan Houdek
d5cb87d1eb Adds Phi helper functions to OpDispatcher 2020-03-06 07:56:08 +02:00
Ryan Houdek
88c6b629ce Allows dumping of PHI values 2020-03-06 07:56:08 +02:00
Ryan Houdek
dd3c2ced6a Adds PHI IR nodes 2020-03-06 07:56:08 +02:00
Ryan Houdek
10878aae45 Don't force ThreadState to be packed 2020-03-06 07:56:08 +02:00
Scott Mansell
26141e426a Fix unsigned/signed compare conditions
Also, rename to match the LLVM naming style, which is less confusing.
2020-03-06 07:56:07 +02:00
Ryan Houdek
fb17e4d440 Adds atomic ops to the Interpreter 2020-03-06 07:56:07 +02:00
Scott Mansell
7f840aa3e9 Basic FADD implementation
Only handles addition of two positive numbers
2020-03-06 07:56:07 +02:00
Ryan Houdek
3402b7293e Implements some more syscalls seen by remote X11 2020-03-06 07:56:07 +02:00
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
Ryan Houdek
2000bf7baa Update vixl external to fix CNTVCT_EL0 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