[FFmpeg-cvslog] r21703 - in trunk/libavcodec/arm: dsputil_armv6.S dsputil_init_armv6.c

mru subversion
Tue Feb 9 17:13:45 CET 2010


Author: mru
Date: Tue Feb  9 17:13:45 2010
New Revision: 21703

Log:
ARMv6 optimised sse16

Modified:
   trunk/libavcodec/arm/dsputil_armv6.S
   trunk/libavcodec/arm/dsputil_init_armv6.c

Modified: trunk/libavcodec/arm/dsputil_armv6.S
==============================================================================
--- trunk/libavcodec/arm/dsputil_armv6.S	Tue Feb  9 17:13:41 2010	(r21702)
+++ trunk/libavcodec/arm/dsputil_armv6.S	Tue Feb  9 17:13:45 2010	(r21703)
@@ -513,3 +513,54 @@ function ff_pix_abs8_armv6, export=1
         add             r0,  r0,  lr
         pop             {r4-r9, pc}
 .endfunc
+
+function ff_sse16_armv6, export=1
+        ldr             r12, [sp]
+        push            {r4-r9, lr}
+        mov             r0,  #0
+1:
+        ldrd            r4,  r5,  [r1]
+        ldr             r8,  [r2]
+        uxtb16          lr,  r4
+        uxtb16          r4,  r4,  ror #8
+        uxtb16          r9,  r8
+        uxtb16          r8,  r8,  ror #8
+        ldr             r7,  [r2, #4]
+        usub16          lr,  lr,  r9
+        usub16          r4,  r4,  r8
+        smlad           r0,  lr,  lr,  r0
+        uxtb16          r6,  r5
+        uxtb16          lr,  r5,  ror #8
+        uxtb16          r8,  r7
+        uxtb16          r9,  r7,  ror #8
+        smlad           r0,  r4,  r4,  r0
+        ldrd            r4,  r5,  [r1, #8]
+        usub16          r6,  r6,  r8
+        usub16          r8,  lr,  r9
+        ldr             r7,  [r2, #8]
+        smlad           r0,  r6,  r6,  r0
+        uxtb16          lr,  r4
+        uxtb16          r4,  r4,  ror #8
+        uxtb16          r9,  r7
+        uxtb16          r7,  r7, ror #8
+        smlad           r0,  r8,  r8,  r0
+        ldr             r8,  [r2, #12]
+        usub16          lr,  lr,  r9
+        usub16          r4,  r4,  r7
+        smlad           r0,  lr,  lr,  r0
+        uxtb16          r6,  r5
+        uxtb16          r5,  r5,  ror #8
+        uxtb16          r9,  r8
+        uxtb16          r8,  r8,  ror #8
+        smlad           r0,  r4,  r4,  r0
+        usub16          r6,  r6,  r9
+        usub16          r5,  r5,  r8
+        smlad           r0,  r6,  r6,  r0
+        add             r1,  r1,  r3
+        add             r2,  r2,  r3
+        subs            r12, r12, #1
+        smlad           r0,  r5,  r5,  r0
+        bgt             1b
+
+        pop             {r4-r9, pc}
+.endfunc

Modified: trunk/libavcodec/arm/dsputil_init_armv6.c
==============================================================================
--- trunk/libavcodec/arm/dsputil_init_armv6.c	Tue Feb  9 17:13:41 2010	(r21702)
+++ trunk/libavcodec/arm/dsputil_init_armv6.c	Tue Feb  9 17:13:45 2010	(r21703)
@@ -64,6 +64,9 @@ int ff_pix_abs16_y2_armv6(void *s, uint8
 int ff_pix_abs8_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
                        int line_size, int h);
 
+int ff_sse16_armv6(void *s, uint8_t *blk1, uint8_t *blk2,
+                   int line_size, int h);
+
 void av_cold ff_dsputil_init_armv6(DSPContext* c, AVCodecContext *avctx)
 {
     if (!avctx->lowres && (avctx->idct_algo == FF_IDCT_AUTO ||
@@ -107,4 +110,6 @@ void av_cold ff_dsputil_init_armv6(DSPCo
 
     c->sad[0] = ff_pix_abs16_armv6;
     c->sad[1] = ff_pix_abs8_armv6;
+
+    c->sse[0] = ff_sse16_armv6;
 }



More information about the ffmpeg-cvslog mailing list