ARM: NEON clear_block[s]
authorMåns Rullgård <mans@mansr.com>
Tue, 1 Jun 2010 17:21:16 +0000 (17:21 +0000)
committerMåns Rullgård <mans@mansr.com>
Tue, 1 Jun 2010 17:21:16 +0000 (17:21 +0000)
Originally committed as revision 23412 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/arm/dsputil_init_neon.c
libavcodec/arm/dsputil_neon.S

index 0e44160..ff19672 100644 (file)
@@ -34,6 +34,9 @@ void ff_vp3_idct_put_neon(uint8_t *dest, int line_size, DCTELEM *data);
 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 @@ void ff_dsputil_init_neon(DSPContext *c, AVCodecContext *avctx)
         }
     }
 
+    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;
index 722ed78..2bcdb39 100644 (file)
         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