>From 01bf1bee748d5f05199644fd8eb316902c53ac75 Mon Sep 17 00:00:00 2001 From: kui zheng <kui.zh...@arm.com> Date: Wed, 16 Nov 2011 16:15:30 +0800 Subject: [PATCH] generic: Add NEON verion of Sacc_add_to_Dacc
Signed-off-by: kui zheng <kui.zh...@arm.com> --- src/gfx/generic/generic.c | 2 +- src/gfx/generic/generic_neon.h | 64 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletions(-) diff --git a/src/gfx/generic/generic.c b/src/gfx/generic/generic.c index 246761c..d6b3b5c 100644 --- a/src/gfx/generic/generic.c +++ b/src/gfx/generic/generic.c @@ -9662,7 +9662,7 @@ static void gInit_NEON( void ) Sop_PFI_to_Dacc[DFB_PIXELFORMAT_INDEX(DSPF_ARGB )] = Sop_argb_to_Dacc_NEON; /********************************* misc accumulator operations ****************/ SCacc_add_to_Dacc = SCacc_add_to_Dacc_NEON; - + Sacc_add_to_Dacc = Sacc_add_to_Dacc_NEON; } #endif diff --git a/src/gfx/generic/generic_neon.h b/src/gfx/generic/generic_neon.h index 4f1a5d8..6498638 100644 --- a/src/gfx/generic/generic_neon.h +++ b/src/gfx/generic/generic_neon.h @@ -316,3 +316,67 @@ static void SCacc_add_to_Dacc_NEON ( GenefxState *gfxs ) } } +/* + * NEON verion of Sacc_add_to_Dacc. + */ +static void Sacc_add_to_Dacc_NEON ( GenefxState *gfxs ) +{ + int w = gfxs->length; + GenefxAccumulator *D = gfxs->Dacc; + GenefxAccumulator *S = gfxs->Sacc; + unsigned int loop = w >> 3; + unsigned int single = w & 0x7; + u16 maska = 0xf000; + + while (single) { + if (!(D->RGB.a & 0xF000)) { + D->RGB.a += S->RGB.a; + D->RGB.r += S->RGB.r; + D->RGB.g += S->RGB.g; + D->RGB.b += S->RGB.b; + } + D++; + S++; + single--; + } + if (loop) { + __asm__ __volatile__ ( + "mov r4, %[D] \n\t" + "mov r5, %[S] \n\t" + "mov r6, %[D] \n\t" + "vdup.16 q8, %[maska] \n\t" + "1: \n\t" + "pld [r4, #0xC0] \n\t" + "pld [r4, #0x100] \n\t" + "vld4.16 {d8, d10, d12, d14}, [r4]! \n\t" + "vld4.16 {d9, d11, d13, d15}, [r4]! \n\t" + "pld [r5, #0xC0] \n\t" + "pld [r5, #0x100] \n\t" + "vld4.16 {d0, d2, d4, d6}, [r5]! \n\t" + "vld4.16 {d1, d3, d5, d7}, [r5]! \n\t" + + "vand q9, q7, q8 \n\t" + "vceq.i16 q9, q9, #0 \n\t" + + "vand q0, q9, q0 \n\t" + "vand q1, q9, q1 \n\t" + "vand q2, q9, q2 \n\t" + "vand q3, q9, q3 \n\t" + "vadd.i16 q4, q4, q0 \n\t" + "vadd.i16 q5, q5, q1 \n\t" + "vadd.i16 q6, q6, q2 \n\t" + "vadd.i16 q7, q7, q3 \n\t" + "vst4.16 {d8, d10, d12, d14}, [r6]! \n\t" + "vst4.16 {d9, d11, d13, d15}, [r6]! \n\t" + "subs %[loop], %[loop], #1 \n\t" + "bne 1b " + : + : [S] "r" (S), [D] "r" (D), [maska] "r" (maska), [loop] "r" (loop) + : "memory", "r4", "r5", "r6", "d0", "d1", "d2", "d3", "d4", "d5", + "d6", "d7", "d8", "d9", "d10", "d11", "d12", "d13", "d14", "d15", + "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", + "d25", "d26", "d27" + ); + } +} + -- 1.7.1 -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
0006-generic-Add-NEON-verion-of-Sacc_add_to_Dacc.patch
Description: 0006-generic-Add-NEON-verion-of-Sacc_add_to_Dacc.patch
_______________________________________________ directfb-dev mailing list directfb-dev@directfb.org http://mail.directfb.org/cgi-bin/mailman/listinfo/directfb-dev