Ryan Houdek
8f2f046fc8
Merge pull request #157 from Sonicadvance1/rcp
...
Implements support for rcpps/rcpss
2020-04-29 16:03:38 -07:00
Ryan Houdek
056d017ac8
Merge pull request #160 from Sonicadvance1/horizontal_arith
...
Implements four new vector horizontal ALU ops
2020-04-29 12:56:26 -07:00
Ryan Houdek
f99482ed84
Implements four new vector horizontal ALU ops
...
haddps, hsubps, haddpd, hsubpd
2020-04-29 12:47:27 -07:00
Ryan Houdek
f0229fba38
Implements the two new ops in the LLVM JIT
2020-04-29 12:47:27 -07:00
Ryan Houdek
f6814de357
Implements the two new ops in the x86-64 JIT
2020-04-29 12:47:27 -07:00
Ryan Houdek
1645e65ff3
Implements the two new ops in the AArch64 JIT
2020-04-29 12:47:27 -07:00
Ryan Houdek
1c572e71c7
Implements the two new ops in the interpreter
2020-04-29 12:47:27 -07:00
Ryan Houdek
fee4aeaf88
Merge pull request #167 from Sonicadvance1/fix_exec
...
Fixes loading EXEC applications in to memory.
2020-04-29 12:31:33 -07:00
Ryan Houdek
2005a2ea3d
Merge pull request #164 from Sonicadvance1/fwait
...
Implements fwait as a nop
2020-04-29 12:30:45 -07:00
Ryan Houdek
f1403e5f54
Merge pull request #161 from Sonicadvance1/jrcxz
...
Implements JRCXZ in the OpcodeDispatcher
2020-04-29 12:30:25 -07:00
Ryan Houdek
3d782f0930
Merge pull request #156 from Sonicadvance1/movsldup
...
Implements support for movsldup
2020-04-29 12:27:37 -07:00
Ryan Houdek
169875c34d
Merge pull request #155 from Sonicadvance1/non_temporal
...
Implements two non-temporal XMM move instructions
2020-04-29 12:27:22 -07:00
Ryan Houdek
536eb7ec3e
Merge pull request #154 from Sonicadvance1/more_satalu
...
Implements six more saturating arithmetic instructions
2020-04-29 12:27:10 -07:00
Ryan Houdek
1ee9070e8f
Merge pull request #150 from Sonicadvance1/fix_x86_code_overflow
...
Fixes crash that occurs when the x86-64 JIT code cache gets full
2020-04-29 12:26:11 -07:00
Ryan Houdek
a0537ed630
Merge pull request #149 from Sonicadvance1/fix_syscall_memleak
...
Fixes memory leak on shutdown for syscall handlers
2020-04-29 12:25:55 -07:00
Ryan Houdek
2f56c475e2
Fixes memory leak on shutdown for syscall handlers
...
Switches it over to a unique_ptr to ensure it doesn't happen again.
2020-04-26 18:15:52 -07:00
Ryan Houdek
3528b30684
Fixes loading EXEC applications in to memory.
...
If we are loading EXEC then we actually need to start loading in to the
lower 32bits of memory.
This lets the frontend code loader handle the memory base instead of
hiding it behind some core magic instead.
This lets us get EXEC programs working.
So now we support EXEC, DYN, and static applications
2020-04-26 18:11:48 -07:00
Ryan Houdek
f3f63251ea
Merge pull request #124 from Sonicadvance1/fix_cache_clear_crash
...
Fixes crashes when code cache is cleared
2020-04-26 18:02:54 -07:00
Ryan Houdek
ec87131939
Implements fwait as a nop
...
Since we don't yet support instruction exceptions this is nothing but a
nop.
2020-04-25 23:53:30 -07:00
Ryan Houdek
c726e3ef51
Implements JRCXZ in the OpcodeDispatcher
...
This only operates on 64bit and 32bit RCX register. the 16bit encoding
isn't possible in 64bit mode.
2020-04-25 22:06:46 -07:00
Ryan Houdek
ad467c5b30
Adds new vector float negate and float add horizontal IR ops
2020-04-25 17:55:37 -07:00
Ryan Houdek
4ae33147f5
Implements support for rcpps/rcpss
2020-04-24 23:35:33 -07:00
Ryan Houdek
a0c0384340
Ensures reciprocal hits the precision we expect in the x86-64 JIT
...
Otherwise unit tests can fail
2020-04-24 23:34:47 -07:00
Ryan Houdek
73632556ce
Implements support for movsldup
2020-04-24 23:13:51 -07:00
Ryan Houdek
8ffccc0027
Implements two non-temporal XMM move instructions
...
movntss/movntsd
2020-04-24 23:04:41 -07:00
Ryan Houdek
fef466ee6b
Implements six more saturating arithmetic instructions
...
paddusb, paddusw, psubusb, psubusw, psubsb, psubsw
2020-04-24 22:51:17 -07:00
Ryan Houdek
4bdbe65043
Fixes crash that occurs when the x86-64 JIT code cache gets full
...
Need to clear the other caches in the cases the x86 cache needs to be
wiped.
Not optimal but will improve once we get multiple tiers of code cache
2020-04-24 19:05:55 -07:00
Ryan Houdek
b9002bb790
Merge pull request #135 from dmiller423/master
...
Added include of <llvm/IR/IntrinsicsX86.h> to LLVMCore.cpp
2020-04-24 13:24:09 -07:00
Ryan Houdek
f2f2d9fd0d
Merge pull request #134 from Sonicadvance1/fix_stack_bug
...
Fixes accessing a stack variable post destruction bug
2020-04-24 09:10:36 -07:00
Ryan Houdek
b2beb6ffb1
Merge pull request #132 from Sonicadvance1/RA_print
...
Adds RA printing to the IR dumping function
2020-04-24 09:10:22 -07:00
Ryan Houdek
1ac36e2ddd
Merge pull request #131 from Sonicadvance1/fix_dumb_wait_for_idle
...
Removes the dumb timer wait for idle
2020-04-24 09:10:10 -07:00
Ryan Houdek
e0ca2e3126
Merge pull request #128 from Sonicadvance1/removes_ssse3
...
Removes SSSE3 CPUID feature bit
2020-04-24 09:09:51 -07:00
Ryan Houdek
7869a5a40e
Merge pull request #127 from Sonicadvance1/fix_x86_regs
...
Fixes x86 JIT's RA for 16bit and 8bit registers
2020-04-24 09:09:40 -07:00
Ryan Houdek
8cc8472a75
Merge pull request #126 from Sonicadvance1/fix_llvm_logs
...
Disables LLVM debug messages
2020-04-24 09:09:20 -07:00
Ryan Houdek
2e5db1ddc9
Merge pull request #125 from Sonicadvance1/x87_table
...
Ensure FLDENV/FNSTENV has correct flags in the x87 table
2020-04-24 09:09:06 -07:00
David Miller
1daec14a48
added guard on IntrinsicsX86.h inclusion
2020-04-23 20:10:35 -04:00
David Miller
5999e7477f
Added guard around llvm/IR/IntrinsicsX86.h inclusion, seems to only be needed for version 10?\nMore Investigation needed here.\nChanged Debugger/IMGui.{h,cpp} to IMGui_I so it will build in filesystems that aren't case sensitive.\nAdded CMakeSettings.json that has profiles to build from VisualStudio, using env variables to control system specific options. \n Currently only the WSL is tested (and working). \nRemote should work as well, if correct string for preconfigured remote is in env variable fexremote.\nCross compile (to linux) untested, using sysroot in env variable fexsysroot
2020-04-23 16:12:28 -04:00
David Miller
a8d3cd67ad
Added include of <llvm/IR/IntrinsicsX86.h> to LLVMCore.cpp
2020-04-23 11:12:45 -04:00
Ryan Houdek
b5c170be41
Merge pull request #123 from Sonicadvance1/fix_32bit_x86_cvtsi2ss
...
Fixes 32bit Float_FromGPR_S IR op in x86 JIT
2020-04-22 08:37:56 -07:00
Ryan Houdek
11c341f722
Fixes accessing a stack variable post destruction bug
...
This happened to work with clang-9 but is caught in clang-10 now.
We were constructing an iterator temp then pulling a node through it
past the destruction.
Remove the iterator construction entirely and removes the unused lambda
from the AArch64 JIT that had the same problem.
2020-04-21 16:16:50 -07:00
Ryan Houdek
0c1fecb6c2
Merge pull request #113 from Sonicadvance1/redundant_ra_allocation
...
Ensures the JIT constructor's don't reallocate RA
2020-04-20 17:18:51 -07:00
Ryan Houdek
3bf641dd14
Adds RA printing to the IR dumping function
...
If a backend has RA then this'll pass through the RAPass and will dump
the RA alongside the IR. Very useful for debugging.
2020-04-18 13:42:44 -07:00
Ryan Houdek
6642734aa8
Removes the dumb timer wait for idle
...
Turns out my Threadripper stomps these tests so the arbitrary wait time
actually slows down my unit test time.
Don't want to make it shorter since `strace -f` becomes ugly at that
point.
Instead set up a semaphore style waiting structure that waits until
there are no longer any participants in the atomic
2020-04-18 12:37:58 -07:00
Ryan Houdek
56759faff0
Merge pull request #122 from Sonicadvance1/fix_futexes
...
Fixes some bugs with threads and futexes
2020-04-18 12:35:56 -07:00
Ryan Houdek
d55ce197b6
Removes SSSE3 CPUID feature bit
...
Dolphin uses this in a couple of places, so until it is fully supported
leave it disabled.
2020-04-18 11:32:41 -07:00
Ryan Houdek
7c9dca0de9
Fixes x86 JIT's RA for 16bit and 8bit registers
...
There were four independent arrays for each size of the RA.
Missed the 16bit and 8bit registers when removing a register.
This removes the redundant arrays and just uses one and transforms the
register to the right size depending on what the JIT wants
2020-04-18 11:31:56 -07:00
Ryan Houdek
21cad8f689
Disables LLVM debug messages
2020-04-18 11:27:59 -07:00
Ryan Houdek
4f80a1a3a7
Ensures the JIT constructor's don't reallocate RA
...
Currently RA is shared between threads(!).
If the RA had been previously allocated then don't allocate it again.
Fixes a race condition when multiple threads are spinning up and one is
compiling code
2020-04-18 11:26:10 -07:00
Stefanos Kornilios Mitsis Poiitidis
3edaf6e46e
Merge pull request #120 from Sonicadvance1/cpuid_amd
...
Add a compile define for choosing CPUID manufacturer id
2020-04-18 04:12:49 +03:00
Stefanos Kornilios Mitsis Poiitidis
86b13a9ff7
Merge pull request #119 from Sonicadvance1/implement_movbe
...
Implements MOVBE
2020-04-18 04:11:43 +03:00