From c688b90fe2c8b9ceb57a4e6f773397a90ade5d4f Mon Sep 17 00:00:00 2001 From: notaz Date: Wed, 7 Nov 2012 01:35:01 +0200 Subject: [PATCH] neon filters: minor optimization from M-HT --- arm/neon_eagle2x.Sinc | 12 ++++++------ arm/neon_normalxx.Sinc | 8 +++----- arm/neon_scale2x.Sinc | 15 ++++++++------- 3 files changed, 17 insertions(+), 18 deletions(-) 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 -- 2.39.5