aboutsummaryrefslogtreecommitdiff
path: root/libpcsxcore/gte_neon.s
diff options
context:
space:
mode:
authornotaz2011-09-25 16:47:14 +0300
committernotaz2011-09-27 02:09:35 +0300
commit59774ed0120d20c731ee20da88ba6356d184dc8a (patch)
tree2d025303afb700215faf1bf95fa9735e5eaa68f7 /libpcsxcore/gte_neon.s
parent41f55c9fb3e682e2c424e98ec70ab6aad226f85d (diff)
downloadpcsx_rearmed-59774ed0120d20c731ee20da88ba6356d184dc8a.tar.gz
pcsx_rearmed-59774ed0120d20c731ee20da88ba6356d184dc8a.tar.bz2
pcsx_rearmed-59774ed0120d20c731ee20da88ba6356d184dc8a.zip
gte: split arm code for pollux, generate flagless handlers
flagless are unused but will be used later, at least I hope so.
Diffstat (limited to 'libpcsxcore/gte_neon.s')
-rw-r--r--libpcsxcore/gte_neon.s39
1 files changed, 2 insertions, 37 deletions
diff --git a/libpcsxcore/gte_neon.s b/libpcsxcore/gte_neon.s
index 0db8917..ab8c1b6 100644
--- a/libpcsxcore/gte_neon.s
+++ b/libpcsxcore/gte_neon.s
@@ -20,6 +20,8 @@ scratch:
.text
.align 2
+@ XXX: gteMAC calc shouldn't be saturating, but it is here
+
@ approximate gteMAC|123 flags
@ in: rr 123 as gteMAC|123
@ trash: nothing
@@ -627,41 +629,4 @@ gteMVMVA_neon:
-@ the name is misnormer, this doesn't use NEON but oh well..
-.global gteNCLIP_neon @ r0=CP2 (d,c),
-gteNCLIP_neon:
- push {r4-r6,lr}
-
- add r1, r0, #4*12
- ldmia r1, {r1-r3}
- mov r4, r1, asr #16
- mov r5, r2, asr #16
- mov r6, r3, asr #16
- sub r12, r4, r5 @ 3: gteSY0 - gteSY1
- sub r5, r5, r6 @ 1: gteSY1 - gteSY2
- sxth r1, r1
- smull r1, r5, r1, r5 @ RdLo, RdHi
- sub r6, r4 @ 2: gteSY2 - gteSY0
- sxth r2, r2
- smlal r1, r5, r2, r6
- mov lr, #0 @ gteFLAG
- sxth r3, r3
- smlal r1, r5, r3, r12
- mov r6, #1<<31
- orr r6, #1<<15
- movs r2, r1, lsl #1
- adc r5, r5
- cmp r5, #0
- movtgt lr, #((1<<31)|(1<<16))>>16
- mvngt r1, #1<<31 @ maxint
- cmn r5, #1
- movmi r1, #1<<31 @ minint
- orrmi lr, r6
- str r1, [r0, #4*24]
- str lr, [r0, #4*(32+31)] @ gteFLAG
-
- pop {r4-r6,pc}
- .size gteNCLIP_neon, .-gteNCLIP_neon
-
-
@ vim:filetype=armasm