Henrik Rydgård
0207739d76
Can't call functions through known-nil pointers, even if they don't touch local data - LLVM's optimizer might have done something stupid.
2017-11-30 01:07:03 +01:00
Henrik Rydgård
0ec1e5e3b2
Don't erase and rewrite the dispatcher when the cache is cleared. Fixes #9708
2017-05-26 15:48:03 +02:00
Henrik Rydgard
d68953c18c
Buildfixes
2017-03-02 13:29:51 +01:00
Henrik Rydgård
635b2ada43
Remove a function that didn't make a lot of sense.
2017-01-26 09:50:16 +01:00
Florent Castelli
8c3552de74
cmake: Detect features at compile time
...
Instead of relying on manually passed down flags from CMake,
we now have ppsspp_config.h file to create the platform defines for us.
This improves support for multiplatform builds (such as iOS).
2016-10-19 12:31:19 +02:00
Henrik Rydgard
03279e1212
Port over the Exynos cacheline size fix from Dolphin. Thanks to lewurm of the mono project for the discovery and original fix.
...
See https://github.com/dolphin-emu/dolphin/pull/4204 and https://github.com/mono/mono/pull/3549
2016-09-10 09:25:06 +02:00
Henrik Rydgård
22b6988424
Fix issue with iOS JIT block linking, see #8122
2016-08-29 17:32:46 +02:00
Henrik Rydgard
4e5f1e2797
Fix block linking with W^X mode
2016-08-28 18:54:14 +02:00
Henrik Rydgard
b264657d56
Implement W^X-compatible path. Works on Windows and Android, hopefully iOS (untested).
...
Disabled block linking in this mode, can re-enable with some more work later.
To enable W^X on other platforms than iOS, simply change PlatformIsWXExclusive.
2016-08-28 14:52:08 +02:00
Unknown W. Brackets
4113fd940c
Add ugly invalidation workaround for SGS7s.
...
Otherwise they just crash, and crash often. Special thanks to Jaaan for
numerous trials to try to find the best way to solve the crashes.
2016-05-23 21:35:28 -07:00
Henrik Rydgard
f8659b8e1e
Move the IR interpreter out into its own file. Rename it in the UI. First CMake and Android fixes.
2016-05-08 22:06:13 +02:00
Henrik Rydgard
492ea5fac4
Address a bunch of comments, thanks for the review
2016-05-08 21:38:03 +02:00
Henrik Rydgard
49a6a2f6cf
Minor refactor - let's not access a global when we don't need to
2016-05-06 21:22:36 +02:00
Henrik Rydgard
5aadce59a2
Move architecture-specific code out of JitBlockCache
2016-05-01 11:39:58 +02:00
Henrik Rydgard
92f7f459dc
Not safe to change the rounding mode function pointer in GenerateCode
2015-10-10 16:46:07 +02:00
Henrik Rydgard
65ee3723d3
ARM64: Don't update currentRoundingFunc unless necessary.
2015-10-10 14:33:01 +02:00
Henrik Rydgard
8914cd9914
ARM64 disassembler improvements (show many kinds of branch targets properly)
2015-10-10 11:27:28 +02:00
Henrik Rydgard
d628b9b57b
Minor fixes, mostly comments
2015-10-10 10:03:34 +02:00
Henrik Rydgard
c41baab747
Pregenerate code to handle rounding mode switches. This time, for all three cores.
2015-10-08 19:58:37 +02:00
Henrik Rydgard
8a3c96a413
ARM64: Don't need to avoid destroying SCRATCH1 in these functions.
2015-10-08 14:54:43 +02:00
Henrik Rydgard
bfed830f91
Remove the ability to disable rounding mode support. It's time.
2015-10-08 14:54:42 +02:00
Henrik Rydgard
6dd86cd843
Get rid of the ForceFlushToZero hidden config option
2015-10-08 14:54:41 +02:00
Henrik Rydgard
42ce836ba5
Some minor renames and cleanups
2015-10-08 14:43:16 +02:00
Henrik Rydgard
b73920fcba
ARM64: Cleanups in regcache and jit
2015-07-11 17:00:01 +02:00
Henrik Rydgard
568e2abb2b
Save/load static registers around replacement funcs
2015-07-11 16:59:13 +02:00
Henrik Rydgard
844a3f19a9
Fix bugs and issues in ARM64 static alloc. Thanks unknown for finding the problem.
2015-07-11 16:59:09 +02:00
Henrik Rydgard
a0bf934796
ARM64: Some work on static allocation. Close to working, cube.elf runs 700 blocks but then hangs (?!)
2015-07-11 16:59:09 +02:00
Unknown W. Brackets
8fdceba7ca
Add timing for all the basics.
...
This way we can see overall stats for a frame.
2015-07-03 12:05:08 -07:00
Unknown W. Brackets
4d7a948717
arm64: Fix a dump mistake with rounding modes.
2015-06-28 16:35:46 -07:00
Unknown W. Brackets
b6612edf67
arm64: Use a cached rounding func for cvt.w.s.
...
This is much faster for this particular instruction, although not all
games even use it.
2015-06-28 12:40:29 -07:00
Unknown W. Brackets
213ad4bcc9
arm64: Cleanup branch code a tiny bit.
...
Want to make it clear that we can't kill W0 at this point (delay slots.)
2015-06-28 09:28:54 -07:00
Henrik Rydgård
70fa830ba5
Split out the ReplaceJalTo test logic.
...
This makes it so the IR, in the future, can work correctly for
replacements.
2015-04-12 13:35:10 -07:00
Henrik Rydgård
81dec36da8
Use an accessor to read the compilerPC.
...
In the IR it will be read from the block.
2015-04-11 01:14:37 -07:00
Henrik Rydgård
a897723e6a
Separate out jit reading nearby instructions.
...
This makes it easier to use an IR for these things, or remove them.
2015-04-11 00:53:24 -07:00
Henrik Rydgård
fbaffdceab
Remove some outdated comments, minor stuff
2015-04-06 18:13:36 +02:00
Henrik Rydgard
0a70618f87
ARM64: Accurate floating point rounding. For some reason, FTZ doesn't seem to work though.
2015-04-06 18:13:36 +02:00
Henrik Rydgard
44286a2b37
ARM64: Accurate float->int conversion with rounding mode.
2015-04-06 18:13:34 +02:00
Henrik Rydgard
ad648baa9c
ARM64 regcache: Add support to "pointerify" registers. Use in load/store to cut down instructions.
2015-04-06 18:13:32 +02:00
Henrik Rydgard
57e759a605
ARM64: Fix and turn on basic block linking
2015-04-06 18:13:17 +02:00
Henrik Rydgard
4233921ab7
ARM64: Some more instructions, func replacements
2015-04-06 18:13:16 +02:00
Henrik Rydgard
77501e220d
ARM64: Enable a few more instructions, more emitter/disasm unittests
2015-04-06 18:13:13 +02:00
Henrik Rydgard
d2c746dd64
ARM64: Get the FP reg cache working, implement some basic FP arith
2015-04-06 18:13:11 +02:00
Henrik Rydgard
8dc77ff32e
ARM64: Turn off some debugging stuff, start implementing instructions. Something is wrong though, if I implement more than addiu things break..
2015-04-06 18:13:09 +02:00
Henrik Rydgard
cc722f09f6
Improve ARM64 disassembly by merging MOVZ+MOVK. Minor stuff.
2015-04-06 18:13:07 +02:00
Henrik Rydgard
58b059ca14
Some casting cleanup, misc
2015-04-06 18:13:06 +02:00
Henrik Rydgard
34ab532971
ARM64 jit: Fix some pointer truncations and other fun stuff..
2015-04-06 18:13:05 +02:00
Henrik Rydgard
e7e58591da
More JIT work, not quite there yet...
2015-04-06 18:13:04 +02:00
Henrik Rydgard
524583d53e
ARM64 emitter work, dispatcher work, etc. More work needed.
2015-04-06 18:13:03 +02:00
Henrik Rydgard
b309c83973
Initial work on ARM64, based on the ARM jit.
2015-04-06 18:13:01 +02:00