RSDuck
aa430608e7
support allocating more registers for aarch64 JIT
...
also some minor fixes for the x64 JIT as well
2021-06-29 22:25:43 +02:00
RSDuck
436b3c4c1d
update copyright year and add missing GPL headers
2021-03-12 20:07:40 +01:00
RSDuck
78839f862e
JIT fixes
...
- fix fastmem problems on linux
- small fix memory leak
- SlowWrite functions always take in a 32-bit variable so that the C compiler knows that the values aren't necessary zero extended
- a few other stylistic things
- handle SIGBUS as well (for macos)
2020-11-09 20:43:31 +01:00
Valeri
0d845c9e69
Random minor fixes ( #757 )
...
* Fix incorrect/questionable assert() usage
Originally reported by https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2159000700 ,
but also includes a bunch of other fixes.
* Fix some `printf` warnings
Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2160310550
* Remove useless check
It is never passed thanks to `if (num_in < 1) {...; return}` before
Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2154840804
* Add missing header guard, rename other to avoid conflicts
Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2163210746
* Make DSi_SDDevice destructor virtual
Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2158670642
* Use thread-safe localtime_r, assign `time` result directly
Rule https://lgtm.com/projects/g/Arisotura/melonDS/?mode=tree&ruleFocus=2154840805
* Fix MinGW build
It needs _POSIX_THREAD_SAFE_FUNCTIONS to export `localtime_r`
2020-10-01 13:44:09 +02:00
RSDuck
8f5d8d1e12
fix for fastmem when pc is used as immediate
...
and (hopefully) make SIGSEGV handler work for aarch64 linux
2020-07-08 23:47:24 +02:00
RSDuck
c5381d2911
reconcile DSi and JIT, fastmem for x64 and Windows
2020-06-30 23:50:41 +02:00
RSDuck
ea6d03581b
make literal optimisation work again
...
enable single register block load/store optimisations for x64 aswell
2020-06-16 12:11:20 +02:00
RSDuck
e335a8ca76
first steps in bringing over the JIT refactor/fastmem
2020-06-16 12:11:19 +02:00
RSDuck
5a0b568647
allow allocating caller saved registers
...
currently system-v only
2020-05-09 14:34:52 +02:00
RSDuck
0f53a34551
rewrite JIT memory emulation
2020-05-09 00:45:05 +02:00
RSDuck
b0b9ec42e4
don't use param registers for ReadBanked/WriteBanked
...
should fix linux build
2020-04-26 20:47:36 +02:00
RSDuck
a9dd6e30ad
implement msr and mrs for the x64 JIT
2020-04-26 13:05:18 +02:00
RSDuck
68d552074b
compile UMULLs and some fixes
2020-04-26 13:05:17 +02:00
RSDuck
3787bab1f6
implement block linking + some refactoring
...
currently only supported for x64
2020-04-26 13:05:17 +02:00
RSDuck
9b98b8816a
improve nop handling and proper behaviour for LDM^
...
fixes dslinux
2020-04-26 13:05:08 +02:00
RSDuck
a687be9879
new block cache and much more...
...
- more reliable code invalidation detection
- blocks aren't stopped at any branch, but are being followed
if possible to get larger blocks
- idle loop recognition
- optimised literal loads, load/store cycle counting
and loads/stores from constant addresses
2020-04-26 13:05:03 +02:00
RSDuck
5338c28f40
load register only if needed
...
- do thumb bl long merge in the first step
- preparations for better branch jitting
2020-04-26 13:05:02 +02:00
RSDuck
2ef776883f
more fixes for flag optimisation
...
+ small cycle counting optimisation
2020-04-26 13:05:02 +02:00
RSDuck
5ea91b8a03
optimise away unneeded flag sets
...
- especially useful for thumb code and larger max block sizes
- can still be improved upon
2020-04-26 13:05:00 +02:00
RSDuck
5e443e7962
remove unneeded dolphin code, C++11 static_assert
2020-04-26 13:04:57 +02:00
RSDuck
411fb57c07
jit: add compile option
2020-04-26 13:03:06 +02:00
RSDuck
9d76d63af5
jit: make everything configurable
2020-04-26 13:03:03 +02:00
RSDuck
dcf6e1cad2
jit: fix linux
2020-04-26 13:03:01 +02:00
RSDuck
9b3c14b58a
jit: SMULL and SMLAL
2020-04-26 13:03:00 +02:00
RSDuck
2efab201e9
jit: LDM/STM finally(!) working + MUL, MLA and CLZ
2020-04-26 13:02:59 +02:00
RSDuck
c58fdbd66b
jit: branch instructions
2020-04-26 13:02:58 +02:00
RSDuck
ff97211114
jit: thumb block transfer working
...
also pc and sp relative loads and some refactoring
2020-04-26 13:02:57 +02:00
RSDuck
2c44bf927c
JIT: most mem instructions working
...
+ branching
2020-04-26 13:02:57 +02:00
RSDuck
5f932cdf48
JIT: compilation of word load and store
2020-04-26 13:02:56 +02:00
RSDuck
ebce9f035f
JIT: implemented most ALU instructions
2020-04-26 13:02:55 +02:00
RSDuck
c5c342c009
JIT: base
...
all instructions are interpreted
2020-04-26 13:02:53 +02:00