Unknown W. Brackets
6038d96b46
armjit: Flush regs using STMIA where possible.
2013-11-09 08:25:07 -08:00
Unknown W. Brackets
7a8671f8a2
Add a TSTI2R helper for readability mainly.
2013-11-03 21:58:26 -08:00
Unknown W. Brackets
5de7181b36
Add other forms of LDM/STM to the emitter.
2013-11-03 21:31:05 -08:00
Unknown W. Brackets
ffa0f2fb44
Fix some arm emitter warnings on win64.
...
We link it in for debugging purposes.
2013-10-26 17:57:40 -07:00
Henrik Rydgård
4582902cf2
Make the ARM stuff build on clang so we can later get the unit test to
...
work there. also fixes the build.
2013-09-29 20:01:38 +02:00
Henrik Rydgard
b661ae6c41
Add very simple jit viewer screen to dev menu. Add untested emitter for cvt.f32.f16 & c:o.
2013-09-29 13:41:56 +02:00
Henrik Rydgard
499dbc05ee
ArmEmitter: Merge a fix and some new instructions from Sonic1's emitter.
2013-09-14 12:04:55 +02:00
Henrik Rydgard
324cde5a79
Let's actually use the log category mechanism. A first step.
2013-09-07 21:19:21 +02:00
Unknown W. Brackets
c8716d9a02
Fix a few minor typos + small reporting change.
2013-08-12 23:02:39 -07:00
Henrik Rydgard
51596b636a
Fix numerous ARM JIT bugs. Activate vmtvc and vscl, and vadd/vmul/vdiv/vsub for real this time.
2013-07-31 10:34:58 +02:00
Henrik Rydgard
65f8430c32
Quick hacked-up ARM VFP disassembler. Buggy.
2013-07-30 21:39:37 +02:00
Sacha
583927988c
Armjit Update: Improvements
...
Implement vsat0 and vsat1
Introduce VMOV for immediates. Use in MOVI2F where possible by detecting if float val can be encoded.
Combine some vneg ops in ApplyPrefixST.
2013-06-09 21:27:16 +10:00
Sacha
f21218c3f9
Armjit: Combine mul.s + neg.s to VNMUL. Implement VNMUL, VNMLA, VNMLS.
...
I had implemented mul.s + add/sub.s + add/sub.s -> VADD/VSUB + V(N)ML(A/S). Turns out it doesn't happen enough though (once or twice per game).
2013-06-08 16:39:59 +10:00
Sacha
10c976b2af
Armjit: Improve ApplyPrefixD. Add VABD to emitter.
2013-06-06 03:08:58 +10:00
Henrik Rydgard
2a39a3b972
JIT: Get rid of one memory access per dispatch, and get rid of blockcodepointers.
2013-04-27 01:32:03 +02:00
Sonicadvance1
cd9b49acfd
Updates to ArmEmitter from Dolphin.
2013-04-12 10:14:18 -07:00
Sacha
2f63b56c19
If MOVI2R can be done in 2 ops for ARMv6, prefer that over litpool. Litpool can take 1-3 cycles depending on when the value is used. So, usually 3 cycles :\.
2013-03-28 21:26:13 +10:00
Sacha
471ddd6380
Simplify armjit.
2013-03-26 02:41:15 +10:00
Unknown W. Brackets
de3713fc50
armjit: improve mem speed without fastmem.
2013-03-16 14:37:35 -07:00
Sacha
f88bf8bbff
Attempt at fixing JIT on iOS. Can only have PROT_WRITE or PROT_EXEC enabled. So toggle between them as needed.
2013-03-14 14:40:01 +10:00
Sacha
529803e429
Sonic's ArmEmitter changes (cross-project merge from Dolphin)
2013-03-14 12:47:29 +10:00
Sacha
fbef590bed
Add emitters for VMRS/VMSR. Undisable ceil, which works. Add stub for rounding mode handling.
2013-03-08 22:39:34 +10:00
Sacha
9f0bb8cf52
armv6: Reuse constants in literal pool.
...
May reduce memory loads?
2013-03-07 14:44:55 +10:00
Sacha
ae3b881a7f
Use correct args for Operand2(..) through armjit. Fix STR(..).
2013-03-07 00:59:07 +10:00
Sacha
268d16bd24
Use correct args for STR(..) throughout armjit.
2013-03-07 00:59:07 +10:00
Sacha
5a134243a7
Armjit: Fix lwl, lwr and enable again. Thanks Sonic.
2013-03-06 03:28:28 +10:00
Sacha
7e67de3334
Armjit: Implement lwl, lwr, swl, swr in ARM JIT. lwr is currently disabled as it isn't working.
2013-03-06 02:11:36 +10:00
Sacha
9152d2f2bb
Armjit: Optimise swl+swr and lwl+lwr cases that can be combined to a single sw or lw. Add shift flags to STR/LDR. Add EatInstruction to ArmJit.
2013-03-06 02:11:36 +10:00
Sacha
4641cf376f
Armjit: Implement CLZ instruction. Disable reg shifts for now (breaks Wipeout Pure).
2013-03-05 14:16:35 +10:00
Sacha
10ad797c6d
Armjit stubs.
...
Add a double encoding for VCVT. Implement integer divide (but not working yet). Stubs for msub/msubu. Don't detect vfpv3 on Symbian.
2013-03-05 13:16:08 +10:00
Sacha
1089a31a45
Armjit: add reverse bit instruction.
2013-03-05 02:58:51 +10:00
Sacha
0fc6b60874
Fix Lit Pools for cases where offset goes out of range. For example: Zero no Kiseki has a block that is 7K large.
2013-03-04 14:36:23 +10:00
Sacha
9633239f18
Update for lit pools. Works in some games now thanks to [Unknown].
2013-03-04 14:29:17 +10:00
Sacha
bdfe24a86b
ARMv6 literal pool method.
2013-03-04 14:26:45 +10:00
Henrik Rydgard
7dc75d87b5
armjit: Re-enable ext/ins, safer implementation. arm7 path disabled for now.
2013-03-03 23:17:21 +01:00
Henrik Rydgard
1e3a00ee9d
armjit: implement vzero, vone. Use vmla for dot product.
2013-03-03 20:56:22 +01:00
Henrik Rydgard
650c02c3a5
Some more armjit work (ext, ins) and VFPU prefix clamps (not enabled)
2013-03-03 17:36:22 +01:00
Henrik Rydgard
b781c8deb5
Delete unused ARM emitter function.
2013-03-03 10:55:49 +01:00
Henrik Rydgard
f5581caccc
Some work on ARMJIT FPU compares, still not quite working.
2013-03-02 19:09:24 +01:00
Sacha
6c23e1b6d5
Use flags instead of bools for VCVT. Fix up some spacing. Only Android has ArmEmitterTest.
2013-03-02 11:34:03 +10:00
Henrik Rydgard
253396666c
Merge branch 'armjit-fpu' of github.com:hrydgard/ppsspp into armjit-fpu
2013-03-01 18:26:36 +01:00
Sacha
26ebdb4f11
Improve VCMP instruction with option for E.
...
Add comment to le JIT about how the VCMP crashes on ARM11, with commented code.
2013-03-01 15:41:45 +10:00
Sacha
6d3c89e354
Fix up VCVT function to recognise the difference in encoding for to_int and to_float. There is no 'round to zero' option for to_float. cvt.s.w and cvt.w.s should be unsigned.
2013-03-01 13:45:22 +10:00
Henrik Rydgard
516ca8a0c4
Merge branch 'master' into armjit-fpu
...
Conflicts:
Core/MIPS/ARM/ArmJit.h
Core/MIPS/x86/CompVFPU.cpp
GPU/GLES/Framebuffer.cpp
2013-02-28 23:56:28 +01:00
Sacha
35a57be115
ARMJIT: Implement MADD, MADDU. Do bitrev if it takes an immediate. Fix a bug where MULTU was being passed through to the interpreter.
2013-02-28 23:45:46 +01:00
Sacha
059abc0d69
ARMJIT: Add floor, ceil, round. Introducing a rounding mode for VCVT.
...
The cvt and trunc are tested heavily. Floor, ceil, round aren't tested as much as there are very few games that use it.
2013-03-01 01:10:07 +10:00
Sacha
61f5fb35bd
ARMJIT: Implement cvt.w.s, cvt.s.w and trunc.w.s that are used heavily in Dragonball.
...
May need to keep note of FCR to get correct rounding mode? Interpreter doesn't do this either.
2013-02-28 19:46:07 +10:00
Sacha
fe90d5cd06
Add VNEG and VABS implementations and use in FPU2op.
2013-02-27 23:33:59 +10:00
Sacha
ff14815fda
ARMJIT: Combine to one instruction for load/stores.
2013-02-27 19:45:01 +10:00
Sacha
2c59de95e9
JIT the signed load/store variants too
2013-02-27 18:05:45 +10:00