On 2017-01-05 09:35:36 +0200, Martin Storsjö wrote:
> This work is sponsored by, and copyright, Google.
> 
> Before:                            Cortex A7      A8      A9     A53
> vp9_inv_dct_dct_16x16_sub1_add_neon:   273.0   189.5   211.7   235.8
> vp9_inv_dct_dct_32x32_sub1_add_neon:   752.0   459.2   862.2   553.9
> After:
> vp9_inv_dct_dct_16x16_sub1_add_neon:   226.5   145.0   225.1   171.8
> vp9_inv_dct_dct_32x32_sub1_add_neon:   721.2   415.7   727.6   475.0
> ---
>  libavcodec/arm/vp9itxfm_neon.S | 54 
> ++++++++++++++++++++++++++++--------------
>  1 file changed, 36 insertions(+), 18 deletions(-)
> 
> diff --git a/libavcodec/arm/vp9itxfm_neon.S b/libavcodec/arm/vp9itxfm_neon.S
> index 5abe435..a81240b 100644
> --- a/libavcodec/arm/vp9itxfm_neon.S
> +++ b/libavcodec/arm/vp9itxfm_neon.S
> @@ -518,16 +518,23 @@ function idct16x16_dc_add_neon
>  
>          vrshr.s16       q8,  q8,  #6
>  
> +        mov             r3,  r0
>          mov             r12, #16
>  1:
>          @ Loop to add the constant from q8 into all 16x16 outputs
> -        vld1.8          {q3},  [r0,:128]
> -        vaddw.u8        q10, q8,  d6
> -        vaddw.u8        q11, q8,  d7
> -        vqmovun.s16     d6,  q10
> -        vqmovun.s16     d7,  q11
> -        vst1.8          {q3},  [r0,:128], r1
> -        subs            r12, r12, #1
> +        subs            r12, r12, #2
> +        vld1.8          {q2},  [r0,:128], r1
> +        vaddw.u8        q10, q8,  d4
> +        vld1.8          {q3},  [r0,:128], r1
> +        vaddw.u8        q11, q8,  d5
> +        vaddw.u8        q12, q8,  d6
> +        vaddw.u8        q13, q8,  d7
> +        vqmovun.s16     d4,  q10
> +        vqmovun.s16     d5,  q11
> +        vqmovun.s16     d6,  q12
> +        vst1.8          {q2},  [r3,:128], r1
> +        vqmovun.s16     d7,  q13
> +        vst1.8          {q3},  [r3,:128], r1
>          bne             1b
>  
>          bx              lr
> @@ -889,20 +896,31 @@ function idct32x32_dc_add_neon
>  
>          vrshr.s16       q8,  q8,  #6
>  
> +        mov             r3,  r0
>          mov             r12, #32
>  1:
>          @ Loop to add the constant from q8 into all 32x32 outputs
> -        vld1.8          {q2-q3},  [r0,:128]
> -        vaddw.u8        q10, q8,  d4
> -        vaddw.u8        q11, q8,  d5
> -        vaddw.u8        q12, q8,  d6
> -        vaddw.u8        q13, q8,  d7
> -        vqmovun.s16     d4,  q10
> -        vqmovun.s16     d5,  q11
> -        vqmovun.s16     d6,  q12
> -        vqmovun.s16     d7,  q13
> -        vst1.8          {q2-q3},  [r0,:128], r1
> -        subs            r12, r12, #1
> +        subs            r12, r12, #2
> +        vld1.8          {q0-q1},  [r0,:128], r1
> +        vaddw.u8        q9,  q8,  d0
> +        vaddw.u8        q10, q8,  d1
> +        vld1.8          {q2-q3},  [r0,:128], r1
> +        vaddw.u8        q11, q8,  d2
> +        vaddw.u8        q12, q8,  d3
> +        vaddw.u8        q13, q8,  d4
> +        vaddw.u8        q14, q8,  d5
> +        vaddw.u8        q15, q8,  d6
> +        vqmovun.s16     d0,  q9
> +        vaddw.u8        q9,  q8,  d7
> +        vqmovun.s16     d1,  q10
> +        vqmovun.s16     d2,  q11
> +        vqmovun.s16     d3,  q12
> +        vqmovun.s16     d4,  q13
> +        vqmovun.s16     d5,  q14
> +        vst1.8          {q0-q1},  [r3,:128], r1
> +        vqmovun.s16     d6,  q15
> +        vqmovun.s16     d7,  q9
> +        vst1.8          {q2-q3},  [r3,:128], r1
>          bne             1b
>  
>          bx              lr

ok

Janne
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to