]> git.sesse.net Git - x264/commitdiff
arm: x264_store_interleave_chroma_neon
authorJanne Grunau <janne-x264@jannau.net>
Sat, 15 Mar 2014 19:09:18 +0000 (20:09 +0100)
committerFiona Glaser <fiona@x264.com>
Tue, 22 Apr 2014 22:37:49 +0000 (15:37 -0700)
store_interleave_chroma_c: 4036
store_interleave_chroma_neon: 1043

common/arm/mc-a.S
common/arm/mc-c.c

index 6274c5946f6b740245538dff36796c0c0b3e8787..58cf542cd32d1f15e751204d8ba2f732489644be 100644 (file)
@@ -1596,3 +1596,17 @@ blocki:
 
     pop             {r4-r7, pc}
 .endfunc
+
+function x264_store_interleave_chroma_neon
+    push            {lr}
+    ldr             lr,  [sp, #4]
+    mov             ip,  #FDEC_STRIDE
+1:
+    vld1.8          {d0}, [r2], ip
+    vld1.8          {d1}, [r3], ip
+    subs            lr,  lr,  #1
+    vst2.8          {d0,d1}, [r0,:128], r1
+    bgt             1b
+
+    pop             {pc}
+.endfunc
index e134e96756e9d5d46f3d8953f697efafc02201fa..c31745fe054c6f31c496e2bd1f6b17c47ce4b83b 100644 (file)
@@ -58,6 +58,7 @@ void x264_plane_copy_interleave_neon( pixel *dst,  intptr_t i_dst,
                                       pixel *srcu, intptr_t i_srcu,
                                       pixel *srcv, intptr_t i_srcv, int w, int h );
 
+void x264_store_interleave_chroma_neon( pixel *dst, intptr_t i_dst, pixel *srcu, pixel *srcv, int height );
 void x264_load_deinterleave_chroma_fdec_neon( pixel *dst, pixel *src, intptr_t i_src, int height );
 void x264_load_deinterleave_chroma_fenc_neon( pixel *dst, pixel *src, intptr_t i_src, int height );
 
@@ -243,6 +244,7 @@ void x264_mc_init_arm( int cpu, x264_mc_functions_t *pf )
     pf->plane_copy_deinterleave_rgb = x264_plane_copy_deinterleave_rgb_neon;
     pf->plane_copy_interleave = x264_plane_copy_interleave_neon;
 
+    pf->store_interleave_chroma = x264_store_interleave_chroma_neon;
     pf->load_deinterleave_chroma_fdec = x264_load_deinterleave_chroma_fdec_neon;
     pf->load_deinterleave_chroma_fenc = x264_load_deinterleave_chroma_fenc_neon;