Commit Graph
186 Commits
Author SHA1 Message Date
Ryan Houdek d2bfb39b54 Disable RDRand in CPUID 2020-03-06 07:56:15 +02:00
Ryan Houdek 7ade645af2 Adds vector compare ops to OpDispatcher 2020-03-06 07:56:14 +02:00
Ryan Houdek 39802cc464 Adds a couple nop implementation of ops in OpDispatcher 2020-03-06 07:56:14 +02:00
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 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
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
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