Hi,

On Thu, May 26, 2011 at 4:01 PM, Justin Ruggles
<[email protected]> wrote:
>
> This does all the actual bit counting as a final step.
> ---
>  libavcodec/ac3dsp.c              |   42 ++++++++++------
>  libavcodec/ac3dsp.h              |   20 +++++++-
>  libavcodec/ac3enc.c              |   92 ++++++++++++++++++----------------
>  libavcodec/arm/ac3dsp_arm.S      |   52 --------------------
>  libavcodec/arm/ac3dsp_init_arm.c |    2 -
>  libavcodec/x86/ac3dsp.asm        |  100 
> ++++++++++++++++++++++++++++++++++++++
>  libavcodec/x86/ac3dsp_mmx.c      |    7 +++
>  7 files changed, 201 insertions(+), 114 deletions(-)
>  delete mode 100644 libavcodec/arm/ac3dsp_arm.S
[..]
> +    movzx    tmp2d, word [mant_cntq+4]
> +    imul     tmp2d, 43691
> +    shr      tmp2d, 17
> +    add      tmp2d, tmp1d
> +    lea      tmp1d, [tmp2q*8]
> +    sub      tmp1d, tmp2d
> +    movzx    tmp2d, word [mant_cntq+2]
> +    imul     tmp2d, 43691
> +    shr      tmp2d, 17

Looks like you can use pmulhuw here, load 8 words at once, pmulhuw
with 8x43691 register loaded from memory, then right-shift by one.

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

Reply via email to