M4xw
b9352354c9
Masked PSP Memory support for the AArch64 Dynarec
2019-04-15 12:07:57 +02:00
Unknown W. Brackets
ae63628360
arm64jit: Statically allocate ra as well.
...
This doesn't seem to have a significant impact on performance, but it
improves bloat by about 5%.
2017-12-30 11:11:03 -08:00
Unknown W. Brackets
e7ac672522
arm64jit: Cleanup method names, temp discard.
...
This way MapDirtyIn won't accidentally discard temps.
2017-12-30 07:51:27 -08:00
Unknown W. Brackets
98ed6fab3f
arm64jit: Fix spilling for more than one temp reg.
...
Otherwise we hang trying to spill the same reg over and over.
2017-12-29 17:30:17 -08:00
Unknown W. Brackets
c71285c970
arm64jit: Use CBZ/CBNZ for zero compare branches.
...
These are pretty common, so it reduces bloat decently. Seems about the
same speed, though.
2017-12-29 17:30:15 -08:00
Unknown W. Brackets
2498ce5e3e
arm64jit: Oops, properly init temp locked flag.
...
Fixes #10469 .
2017-12-29 14:36:18 -08:00
Unknown W. Brackets
27116dcb86
arm64jit: Avoid flushing when mapping as pointer.
2017-12-28 16:04:34 -08:00
Unknown W. Brackets
1b1e2c773b
arm64jit: Jit lwl/lwr with proper temp regs.
...
It's possible rt might overlap with w9/w10, so we really need to allocate
these properly. This locks and spills as necessary.
2017-12-28 15:54:03 -08:00
Unknown W. Brackets
1b792c32e1
arm64jit: Attempt to reuse imms on sw/etc.
...
Mostly, this handles the zero case, but it may help in other cases too.
2017-12-28 12:32:12 -08:00
Unknown W. Brackets
c4c28282cf
arm64jit: Allow ARMREG_AS_PTR to be dirty.
...
Since we can just add/sub, then it should be valid (as long as we only
offset it when dirty.)
2017-12-28 10:40:31 -08:00
Unknown W. Brackets
7c2fc90def
arm64jit: Avoid MOVK elsewhere without pointerify.
2017-12-27 17:57:19 -08:00
Unknown W. Brackets
d82efc4b0b
arm64jit: Allow static alloc without pointerify.
2017-12-27 17:50:15 -08:00
Unknown W. Brackets
9573a791b4
arm64jit: Skip storing spilled but not dirty.
...
Unless IMM, we don't need to store non-dirty mapped regs.
2017-12-27 17:15:18 -08:00
Unknown W. Brackets
cccf448ae0
arm64jit: Allow disabling pointerification.
...
For platforms where we can't get base aligned.
2017-12-27 17:02:19 -08: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
f6ebedba78
Fix some build errors.
2016-10-10 22:01:20 -07:00
Unknown W. Brackets
8713e532e0
arm64jit: Log if HI is set an an imm.
2016-01-20 23:26:49 -08:00
Unknown W. Brackets
387ebf3ddd
arm64: Only clobber HI and LO together.
...
We can't clobber LO if HI is still needed. Fixes a crash in Trails in
the Sky on new game (due to a mfhi getting the wrong result.)
2015-10-17 01:21:51 -07:00
Henrik Rydgard
42ce836ba5
Some minor renames and cleanups
2015-10-08 14:43:16 +02:00
Henrik Rydgard
5f4145238a
Fix #8034 . Cannot leave IMMs or REGIMM in statically allocated registers after a FlushAll.
2015-10-08 14:39:21 +02:00
Unknown W. Brackets
9b94266c4a
arm64: Avoid overflow in imm math.
2015-08-30 13:00:18 -07:00
Henrik Rydgard
9fe382ad18
ARM64: Shortcut moves between gpr and vfpu when not mapped
2015-07-11 23:53:06 +02:00
Henrik Rydgard
b73920fcba
ARM64: Cleanups in regcache and jit
2015-07-11 17:00:01 +02:00
Henrik Rydgard
444fc0885c
Fix the crash bug (need to mark static non-pointer regs as depointerified on flush)
2015-07-11 16:59:14 +02:00
Henrik Rydgard
2a8560e522
ARM64: Another pair of fixes for static alloc. Still crashes in many games...
2015-07-11 16:59:14 +02:00
Henrik Rydgard
d1bbc1d3c0
More regcache fixes. ML_IMM works now although there is another stability issue somewhere.
2015-07-11 16:59:13 +02:00
Henrik Rydgard
1b8549b26f
Couple more regcache fixes
2015-07-11 16:59:12 +02:00
Henrik Rydgard
4920f3e3c1
Work towards handling ML_IMM in static registers but doesn't work yet (enable on line 649)
2015-07-11 16:59:11 +02:00
Henrik Rydgard
f42f81a4da
ARM64: Optimize small adjustments of pointerified registers
2015-07-11 16:59:11 +02:00
Henrik Rydgard
9af6abd8a1
ARM64: Support pointerified static allocs, statically allocate SP
2015-07-11 16:59:10 +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
db3dffb44d
arm64: Oops, fix flushing zero from an armreg.
2015-07-05 11:57:18 -07:00
Unknown W. Brackets
003668fe66
armjit: Fix discarding imms.
2015-07-04 07:30:32 -07:00
Unknown W. Brackets
8ea7f99072
arm64: Fix imm wasting when STP doesn't work out.
2015-07-04 07:09:47 -07:00
Unknown W. Brackets
e6a7ba3fae
arm64: Bring imms along for the STP ride.
2015-07-03 16:51:33 -07:00
Unknown W. Brackets
ca1e482a56
arm64: Avoid setting a reg to zero to store it.
2015-07-03 16:05:25 -07:00
Unknown W. Brackets
90b7d135cb
arm64: Flush in pairs if possible.
...
On an A57, this is around twice as fast (for just the STR/STR vs STP.)
2015-07-03 11:07:09 -07:00
Unknown W. Brackets
ddb955a527
arm64: Try to optimize imm stores.
...
If we already have a reg, we can use it. This can happen when immediate
addresses are loaded and used as bases, although it's not super common.
2015-07-03 10:48:11 -07:00
Unknown W. Brackets
2331df8c70
arm64: Try to be more consistent in ZERO handling.
...
Let's keep it IMM where possible, even though we've added checks for
MIPS_REG_ZERO.
2015-07-03 10:21:24 -07:00
Unknown W. Brackets
66d85233b9
arm64: Flush only caller-saved regs before calls.
2015-07-03 10:09:43 -07:00
Unknown W. Brackets
66adc4e695
jit: Normalize CONDITIONAL_DISABLE formatting.
2015-07-02 20:31:37 -07:00
Unknown W. Brackets
fed687fb59
arm64: Meld LO and HI together for multiplies.
2015-07-02 20:31:37 -07:00
Unknown W. Brackets
1d1c80d9cf
arm64: Use BFI for cfc1.
2015-07-02 20:31:35 -07:00
Henrik Rydgård
d014d420db
Unify JitOptions across the backends.
...
This is required to make ExtractIR not a member of the various backends.
2015-04-12 11:41:26 -07: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
77501e220d
ARM64: Enable a few more instructions, more emitter/disasm unittests
2015-04-06 18:13:13 +02:00
Henrik Rydgard
0922db6062
ARM64: Some FP work.
2015-04-06 18:13:11 +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