Commit Graph

186 Commits

Author SHA1 Message Date
Unknown W. Brackets 836787d19a Optimize ANDI2R() to use UBFX if possible.
This way, & 0x7FF or & 0xFFFF etc. are all fast when on ARMv7.
2014-03-14 19:15:42 -07:00
Unknown W. Brackets 3a07924ad9 Add Try arm emitter I2R funcs.
This way we can use them without giving up the regcache's immediate
optimizations.
2014-03-14 19:15:42 -07:00
Unknown W. Brackets 48fa22b7cf B/BL were swapped in the arm emitter.
Oops...
2014-03-14 19:15:41 -07:00
Unknown W. Brackets 76305130ee Add a couple missing (unused) ARM instructions. 2014-03-14 19:15:39 -07:00
Henrik Rydgard ab9cd99d0f Major ARM disassembler improvements, will make debugging the JIT easier 2014-03-12 18:09:28 +01:00
Henrik Rydgard adadf11890 An attempt to combine FPU regcache writebacks with VSTMIA. Disabled due to bugs. 2014-03-11 11:03:51 +01:00
Henrik Rydgard 2eb6a4e2f2 Fix a warning, rename some parameters, etc. 2014-03-08 10:40:43 +01:00
Sacha ad31cd1b7c Clean up ArmEmitter (cross-merge from Dolphin, minus the bad bits) 2014-03-07 15:47:34 +10:00
Sacha 30a6a5d10f ARMJIT: Implement VLDM/VSTM load/store combinations and use in armjit. Also add them to disassembler. 2014-03-07 02:56:34 +10:00
Unknown W. Brackets 2655a4cba6 Include some now-missing things for Linux. 2013-12-30 21:15:00 -08:00
Henrik Rydgård e5e17fbc6e More include cleanup. Hoping for very slightly faster compile times.. 2013-12-30 10:49:05 +01:00
Unknown W. Brackets e6b2d00a2f Avoid reseved identifiers like _SP, etc.
R_SP is not that bad.
2013-12-29 14:25:34 -08:00
Henrik Rydgard 8956fb2932 Minor optimization in ADDI2R 2013-11-30 15:52:59 +01:00
Unknown W. Brackets dffa35ef2f When ins is used with a zero argument, don't OR.
Seems it's used effectively to mask out bits with rs=zero.  Makes sense...
2013-11-29 09:17:12 -08:00
Henrik Rydgard aaab7e32d2 ARM emitter: Fix VDUP 2013-11-24 19:30:25 +01:00
Henrik Rydgard 030e6460cc ARM: NEON-optimize software skinning 2013-11-24 18:03:42 +01:00
Henrik Rydgard dfea160491 ARM: Use PLD (cache preload) in vertex decoder loop. 2013-11-24 15:08:47 +01:00
Henrik Rydgard f650b23c90 ARM: Add NEON widening and narrowing moves, and float/int convert.
Experiment a little in the vertex decoder.
2013-11-24 13:30:28 +01:00
Henrik Rydgard 16509ba3e9 ARMEmitter: Make the helper functions private. 2013-11-23 13:43:22 +01:00
Henrik Rydgard cda4e9cbf3 ARM emitter: Complete VLD1/VST1 for lanes and to-all-lanes. 2013-11-23 13:36:26 +01:00
Henrik Rydgard e0eb152fb9 VLD1/VST1: Change argument ordering again. 2013-11-23 11:05:19 +01:00
Henrik Rydgard b64f44c3fc ARM emitter: Implement VMLA and VMUL by scalar, VLD1/VST1 multiple 2013-11-23 01:51:35 +01:00
Unknown W. Brackets c50ab6d6aa armjit: Fix divu when divisor is a constant 1.
Fixes #4539 and #4520.
2013-11-19 13:24:15 -08:00
Unknown W. Brackets f165a15eff Fix a -unsigned warning.
Looks ugly, but (u32)-(s32)val is what we really want here.

Also make a __FUNCTION__ redeclaration warning go away.
2013-11-15 08:18:34 -08:00
Sacha e3bdb3e09b Disable LitPool as it is causing crashes with Vertex Decoder JIT. Performance seems to be almost unaffected since the IMM changes. 2013-11-15 14:12:00 +10:00
Sacha 20e8a81268 Switch to compile-time ARMV7 define. 2013-11-15 11:20:39 +10:00
Henrik Rydgård ddf5b695ac Update ArmEmitter with Sonic1's new NEON emitters. Thanks! 2013-11-13 11:34:47 +01:00
Unknown W. Brackets 1a98691c57 armjit: Fix ANDI2R() clearing low bits incorrectly. 2013-11-11 19:07:16 -08:00
Unknown W. Brackets ee492099b5 Avoid a literal in ORI2R where possible. 2013-11-10 14:38:08 -08:00
Unknown W. Brackets 83fe874dcc armjit: Use multiple BICs in ANDI2R if possible.
Rather than a temporary.
2013-11-09 08:42:31 -08:00
Unknown W. Brackets 6038d96b46 armjit: Flush regs using STMIA where possible. 2013-11-09 08:25:07 -08:00
Henrik Rydgard 1bf83efe9e ARM optimization in ADDI2R: Dual adds instead of MOVI2R, ADD when possible 2013-11-08 12:43:47 +01:00
Unknown W. Brackets f6662054bd Fix arm emitter bug in LDRH and friends. 2013-11-05 00:32:08 -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 95c8ee5089 Missing stddef library (Linux buildfix.) 2013-10-27 15:52:40 +00: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
Sacha 18b7503dd5 Fix rounding errors in armjit. 2013-10-14 19:24:13 +10: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
adrian17 5f86bc44d4 Deleted some doubled #includes. 2013-09-27 21:38:07 +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 1ed8edb0d3 Avoid some dangerous hex constant widths. 2013-08-22 23:23:48 -07:00
Unknown W. Brackets 49c7b9628a Fix some correctness warnings. 2013-08-12 23:40:22 -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 663f888a54 Sonic: Fix encoding in VADD (cross-project merge). 2013-07-30 04:37:47 +10:00
Unknown W. Brackets 0cd5766f50 Support clang as well as gcc for Android/Linux. 2013-07-26 22:13:57 -07:00
Sacha 637d75f47d Unlock the other 16 regs that are available for NEON. 2013-06-09 23:15:59 +10:00