[FFmpeg-devel] [PATCH] x86: port PSIGNW to cpuflags

Ronald S. Bultje rsbultje at gmail.com
Sat Sep 12 04:19:21 CEST 2015


Hi,

On Fri, Sep 11, 2015 at 9:03 PM, James Almer <jamrial at gmail.com> wrote:

> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/x86/vp9itxfm.asm |  6 ------
>  libavutil/x86/x86util.asm   | 10 +++++-----
>  2 files changed, 5 insertions(+), 11 deletions(-)
>
> diff --git a/libavcodec/x86/vp9itxfm.asm b/libavcodec/x86/vp9itxfm.asm
> index 03a43d1..4d6a73c 100644
> --- a/libavcodec/x86/vp9itxfm.asm
> +++ b/libavcodec/x86/vp9itxfm.asm
> @@ -973,18 +973,15 @@ cglobal vp9_%1_%3_8x8_add, 3, 3, %6, dst, stride,
> block, eob
>
>  %endmacro
>
> -%define PSIGNW PSIGNW_MMX
>  IADST8_FN idct,  IDCT8,  iadst, IADST8, sse2, 15
>  IADST8_FN iadst, IADST8, idct,  IDCT8,  sse2, 15
>  IADST8_FN iadst, IADST8, iadst, IADST8, sse2, 15
> -%define PSIGNW PSIGNW_SSSE3
>  IADST8_FN idct,  IDCT8,  iadst, IADST8, ssse3, 16
>  IADST8_FN idct,  IDCT8,  iadst, IADST8, avx, 16
>  IADST8_FN iadst, IADST8, idct,  IDCT8,  ssse3, 16
>  IADST8_FN iadst, IADST8, idct,  IDCT8,  avx, 16
>  IADST8_FN iadst, IADST8, iadst, IADST8, ssse3, 16
>  IADST8_FN iadst, IADST8, iadst, IADST8, avx, 16
> -%undef PSIGNW
>
>
>  ;---------------------------------------------------------------------------------------------
>  ; void vp9_idct_idct_16x16_add_<opt>(uint8_t *dst, ptrdiff_t stride,
> int16_t *block, int eob);
> @@ -1889,18 +1886,15 @@ cglobal vp9_%1_%3_16x16_add, 3, 6, 16, 512, dst,
> stride, block, cnt, dst_bak, tm
>      RET
>  %endmacro
>
> -%define PSIGNW PSIGNW_MMX
>  IADST16_FN idct,  IDCT16,  iadst, IADST16, sse2
>  IADST16_FN iadst, IADST16, idct,  IDCT16,  sse2
>  IADST16_FN iadst, IADST16, iadst, IADST16, sse2
> -%define PSIGNW PSIGNW_SSSE3
>  IADST16_FN idct,  IDCT16,  iadst, IADST16, ssse3
>  IADST16_FN iadst, IADST16, idct,  IDCT16,  ssse3
>  IADST16_FN iadst, IADST16, iadst, IADST16, ssse3
>  IADST16_FN idct,  IDCT16,  iadst, IADST16, avx
>  IADST16_FN iadst, IADST16, idct,  IDCT16,  avx
>  IADST16_FN iadst, IADST16, iadst, IADST16, avx
> -%undef PSIGNW
>
>
>  ;---------------------------------------------------------------------------------------------
>  ; void vp9_idct_idct_32x32_add_<opt>(uint8_t *dst, ptrdiff_t stride,
> int16_t *block, int eob);
> diff --git a/libavutil/x86/x86util.asm b/libavutil/x86/x86util.asm
> index bf64d17..b09fa81 100644
> --- a/libavutil/x86/x86util.asm
> +++ b/libavutil/x86/x86util.asm
> @@ -210,13 +210,13 @@
>  %endif
>  %endmacro
>
> -%macro PSIGNW_MMX 2
> +%macro PSIGNW 2
> +%if cpuflag(ssse3)
> +    psignw     %1, %2
> +%else
>      pxor       %1, %2
>      psubw      %1, %2
> -%endmacro
> -
> -%macro PSIGNW_SSSE3 2
> -    psignw     %1, %2
> +%endif
>  %endmacro
>
>  %macro ABS1 2
> --
> 2.5.1


lgtm, thanks.

Ronald


More information about the ffmpeg-devel mailing list