From: Janne Grunau Date: Sat, 15 Mar 2014 19:09:18 +0000 (+0100) Subject: arm: x264_store_interleave_chroma_neon X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2e96c571b8c324304b3d4fbb7914143518349213;p=libx264 arm: x264_store_interleave_chroma_neon store_interleave_chroma_c: 4036 store_interleave_chroma_neon: 1043 --- diff --git a/common/arm/mc-a.S b/common/arm/mc-a.S index 6274c594..58cf542c 100644 --- a/common/arm/mc-a.S +++ b/common/arm/mc-a.S @@ -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 diff --git a/common/arm/mc-c.c b/common/arm/mc-c.c index e134e967..c31745fe 100644 --- a/common/arm/mc-c.c +++ b/common/arm/mc-c.c @@ -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;