changeset 11807:659f16d04776 libavcodec

ARM: NEON clear_block[s]
author mru
date Tue, 01 Jun 2010 17:21:16 +0000
parents 8d8ca3eb8389
children 85f6fd5dd599
files arm/dsputil_init_neon.c arm/dsputil_neon.S
diffstat 2 files changed, 22 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/arm/dsputil_init_neon.c	Tue Jun 01 16:36:36 2010 +0000
+++ b/arm/dsputil_init_neon.c	Tue Jun 01 17:21:16 2010 +0000
@@ -34,6 +34,9 @@
 void ff_vp3_idct_add_neon(uint8_t *dest, int line_size, DCTELEM *data);
 void ff_vp3_idct_dc_add_neon(uint8_t *dest, int line_size, const DCTELEM *data);
 
+void ff_clear_block_neon(DCTELEM *block);
+void ff_clear_blocks_neon(DCTELEM *blocks);
+
 void ff_put_pixels16_neon(uint8_t *, const uint8_t *, int, int);
 void ff_put_pixels16_x2_neon(uint8_t *, const uint8_t *, int, int);
 void ff_put_pixels16_y2_neon(uint8_t *, const uint8_t *, int, int);
@@ -189,6 +192,9 @@
         }
     }
 
+    c->clear_block  = ff_clear_block_neon;
+    c->clear_blocks = ff_clear_blocks_neon;
+
     c->put_pixels_tab[0][0] = ff_put_pixels16_neon;
     c->put_pixels_tab[0][1] = ff_put_pixels16_x2_neon;
     c->put_pixels_tab[0][2] = ff_put_pixels16_y2_neon;
--- a/arm/dsputil_neon.S	Tue Jun 01 16:36:36 2010 +0000
+++ b/arm/dsputil_neon.S	Tue Jun 01 17:21:16 2010 +0000
@@ -25,6 +25,22 @@
         preserve8
         .text
 
+function ff_clear_block_neon, export=1
+        vmov.i16        q0,  #0
+        .rept           8
+        vst1.16         {q0}, [r0,:128]!
+        .endr
+        bx              lr
+endfunc
+
+function ff_clear_blocks_neon, export=1
+        vmov.i16        q0,  #0
+        .rept           8*6
+        vst1.16         {q0}, [r0,:128]!
+        .endr
+        bx              lr
+endfunc
+
         .macro pixels16 avg=0
 .if \avg
         mov             ip,  r0