[FFmpeg-devel] [PATCH] avcodec/vp9: ipred_dr_16x16_16 avx2 implementation

Ivan Kalvachev ikalvachev at gmail.com
Sat Jun 10 01:35:23 EEST 2017


On 6/9/17, Ilia Valiakhmetov <zakne0ne at gmail.com> wrote:
> Signed-off-by: Ilia Valiakhmetov <zakne0ne at gmail.com>
> ---
>  libavcodec/x86/vp9dsp_init_16bpp.c    |  2 ++
>  libavcodec/x86/vp9intrapred_16bpp.asm | 56
> +++++++++++++++++++++++++++++++++++
>  2 files changed, 58 insertions(+)
>
> diff --git a/libavcodec/x86/vp9dsp_init_16bpp.c
> b/libavcodec/x86/vp9dsp_init_16bpp.c
> index d1b8fcd..8d1aa13 100644
> --- a/libavcodec/x86/vp9dsp_init_16bpp.c
> +++ b/libavcodec/x86/vp9dsp_init_16bpp.c
> @@ -52,6 +52,7 @@ decl_ipred_fns(dc,      16, mmxext, sse2);
>  decl_ipred_fns(dc_top,  16, mmxext, sse2);
>  decl_ipred_fns(dc_left, 16, mmxext, sse2);
>  decl_ipred_fn(dl,       16,     16, avx2);
> +decl_ipred_fn(dr,       16,     16, avx2);
>  decl_ipred_fn(dl,       32,     16, avx2);
>
>  #define decl_ipred_dir_funcs(type) \
> @@ -136,6 +137,7 @@ av_cold void ff_vp9dsp_init_16bpp_x86(VP9DSPContext
> *dsp)
>          init_fpel_func(1, 1,  64, avg, _16, avx2);
>          init_fpel_func(0, 1, 128, avg, _16, avx2);
>          init_ipred_func(dl, DIAG_DOWN_LEFT, 16, 16, avx2);
> +        init_ipred_func(dr, DIAG_DOWN_RIGHT, 16, 16, avx2);
>          init_ipred_func(dl, DIAG_DOWN_LEFT, 32, 16, avx2);
>      }
>
> diff --git a/libavcodec/x86/vp9intrapred_16bpp.asm
> b/libavcodec/x86/vp9intrapred_16bpp.asm
> index 92333bc..7230de2 100644
> --- a/libavcodec/x86/vp9intrapred_16bpp.asm
> +++ b/libavcodec/x86/vp9intrapred_16bpp.asm
> @@ -1170,6 +1170,62 @@ DR_FUNCS 2
>  INIT_XMM avx
>  DR_FUNCS 2
>
> +%if HAVE_AVX2_EXTERNAL
> +INIT_YMM avx2
> +cglobal vp9_ipred_dr_16x16_16, 4, 4, 6, dst, stride, l, a
[...]
> +    DEFINE_ARGS dst, stride, stride3, stride5, dst3

You removed one variable, so now the number of
re-define-args gprs should be 5.
However the cglobal above have 4 reserved registers.

It used to be  4, 6, 6
Now it is 4, 4, 6
I think it should be 4, 5, 6

Do I miss something?


More information about the ffmpeg-devel mailing list