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