From: notaz <notasas@gmail.com>
Date: Tue, 6 Nov 2012 23:35:01 +0000 (+0200)
Subject: neon filters: minor optimization from M-HT
X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c688b90fe2c8b9ceb57a4e6f773397a90ade5d4f;p=libpicofe.git

neon filters: minor optimization from M-HT
---

diff --git a/arm/neon_eagle2x.Sinc b/arm/neon_eagle2x.Sinc
index ec2ba0d..f2d130c 100644
--- a/arm/neon_eagle2x.Sinc
+++ b/arm/neon_eagle2x.Sinc
@@ -528,8 +528,8 @@
     .endif
 
     #ifdef DO_BGR_TO_RGB
-        bgr1555_to_rgb565 q14, q15, q8, q9, q10
-        bgr1555_to_rgb565 q6, q7, q8, q9, q10
+        bgr1555_to_rgb565 q14, q15, q8, q9, q10, \reg1
+        bgr1555_to_rgb565 q6, q7, q8, q9, q10, \reg1
     #endif
 
         ubfx \reg1, \counter, #0, #3    @ reg1 = counter & 7
@@ -636,8 +636,8 @@
         vbsl q7, \qY, q12               @ E4 = < (Z == Y && Z == W) ? Y : C >
 
     #ifdef DO_BGR_TO_RGB
-        bgr1555_to_rgb565 q14, q15, q0, q1, q2
-        bgr1555_to_rgb565 q6, q7, q0, q1, q2
+        bgr1555_to_rgb565 q14, q15, q0, q1, q2, \reg1
+        bgr1555_to_rgb565 q6, q7, q0, q1, q2, \reg1
     #endif
 
         vst2.16 {q14-q15}, [\aldst1]!   @ [dst] = E1,E2; dst1 += 2*2*8
@@ -734,8 +734,8 @@
         vbsl q7, \qY, q12               @ E4 = < (Z == Y && Z == W) ? Y : C >
 
     #ifdef DO_BGR_TO_RGB
-        bgr1555_to_rgb565 q14, q15, q8, q9, q10
-        bgr1555_to_rgb565 q6, q7, q8, q9, q10
+        bgr1555_to_rgb565 q14, q15, q8, q9, q10, \reg1
+        bgr1555_to_rgb565 q6, q7, q8, q9, q10, \reg1
     #endif
 
         vst2.16 {q14-q15}, [\aldst1]!   @ [dst] = E1,E2; dst1 += 2*2*8
diff --git a/arm/neon_normalxx.Sinc b/arm/neon_normalxx.Sinc
index 0546ac2..6e3768f 100644
--- a/arm/neon_normalxx.Sinc
+++ b/arm/neon_normalxx.Sinc
@@ -30,17 +30,15 @@
 #define A256 :256
 #endif
 
-.macro bgr1555_to_rgb565 dr0 dr1 t0 t1 t2
-        str r0, [sp, #-4]
-        mov r0, #0x07c0
+.macro bgr1555_to_rgb565 dr0 dr1 t0 t1 t2 ar
+        mov \ar, #0x07c0
         vshl.u16 \t0, \dr0, #11
         vshl.u16 \t1, \dr1, #11
         vshl.u16 \dr0, \dr0, #1
         vshl.u16 \dr1, \dr1, #1
-        vdup.16 \t2, r0
+        vdup.16 \t2, \ar
         vsri.u16 \t0, \dr0, #11
         vsri.u16 \t1, \dr1, #11
-        ldr r0, [sp, #-4]
         vbif \dr0, \t0, \t2
         vbif \dr1, \t1, \t2
 .endm
diff --git a/arm/neon_scale2x.Sinc b/arm/neon_scale2x.Sinc
index 774f7ff..658086b 100644
--- a/arm/neon_scale2x.Sinc
+++ b/arm/neon_scale2x.Sinc
@@ -290,7 +290,6 @@
         vtbl.8 d17, {d28, d29}, d17     @ S2prev[7] = src[reg1 - 1]
 
         vorr q10, q2, q3                @ C0 = < B == H || D == F >
-        and \reg1, \counter, #7
 
         vceq.i16 q2, q14, \qH           @ tmp2 = < D == H >
 
@@ -313,10 +312,12 @@
         vbsl q3, q12, q15               @ E3 = < (C0 || !(H == F)) ? E : F >
 
     #ifdef DO_BGR_TO_RGB
-        bgr1555_to_rgb565 q0, q1, q12, q14, q15
-        bgr1555_to_rgb565 q2, q3, q12, q14, q15
+        bgr1555_to_rgb565 q0, q1, q12, q14, q15, \reg1
+        bgr1555_to_rgb565 q2, q3, q12, q14, q15, \reg1
     #endif
 
+        and \reg1, \counter, #7
+
         vst2.16 {q0-q1}, [\dst1]        @ [dst] = E0,E1
 
         bic \counter, \counter, #7
@@ -389,8 +390,8 @@
         vbsl q3, q12, q15               @ E3 = < (C0 || !(H == F)) ? E : F >
 
     #ifdef DO_BGR_TO_RGB
-        bgr1555_to_rgb565 q0, q1, q12, q14, q15
-        bgr1555_to_rgb565 q2, q3, q12, q14, q15
+        bgr1555_to_rgb565 q0, q1, q12, q14, q15, \reg1
+        bgr1555_to_rgb565 q2, q3, q12, q14, q15, \reg1
     #endif
 
         vst2.16 {q0-q1}, [\aldst1]!     @ [dst] = E0,E1; dst1 += 2*2*8
@@ -448,8 +449,8 @@
         vbsl q3, q12, q15               @ E3 = < (C0 || !(H == F)) ? E : F >
 
     #ifdef DO_BGR_TO_RGB
-        bgr1555_to_rgb565 q0, q1, q12, q14, q15
-        bgr1555_to_rgb565 q2, q3, q12, q14, q15
+        bgr1555_to_rgb565 q0, q1, q12, q14, q15, \reg1
+        bgr1555_to_rgb565 q2, q3, q12, q14, q15, \reg1
     #endif
 
         vst2.16 {q0-q1}, [\aldst1]!     @ [dst] = E0,E1; dst1 += 2*2*8