[FFmpeg-devel] [PATCH 1/2] x86/vf_v360: make remap{1, 2}_8bit_line_avx2 work on x86_32

Paul B Mahol onemda at gmail.com
Fri Sep 6 18:40:06 EEST 2019


OK if tested.

On 9/6/19, James Almer <jamrial at gmail.com> wrote:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavfilter/vf_v360.c          |  2 +-
>  libavfilter/x86/vf_v360.asm    | 11 +++++++++--
>  libavfilter/x86/vf_v360_init.c |  2 +-
>  3 files changed, 11 insertions(+), 4 deletions(-)
>
> diff --git a/libavfilter/vf_v360.c b/libavfilter/vf_v360.c
> index ed00dd09b4..c90f16bfa7 100644
> --- a/libavfilter/vf_v360.c
> +++ b/libavfilter/vf_v360.c
> @@ -285,7 +285,7 @@ void ff_v360_init(V360Context *s, int depth)
>          break;
>      }
>
> -    if (ARCH_X86_64)
> +    if (ARCH_X86)
>          ff_v360_init_x86(s, depth);
>  }
>
> diff --git a/libavfilter/x86/vf_v360.asm b/libavfilter/x86/vf_v360.asm
> index c8b5aa7e2e..f49702b603 100644
> --- a/libavfilter/x86/vf_v360.asm
> +++ b/libavfilter/x86/vf_v360.asm
> @@ -18,10 +18,11 @@
>  ;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
> USA
> ;******************************************************************************
>
> -%if HAVE_AVX2_EXTERNAL && ARCH_X86_64
>
>  %include "libavutil/x86/x86util.asm"
>
> +%if HAVE_AVX2_EXTERNAL
> +
>  SECTION_RODATA
>
>  pb_mask: db 0,4,8,12,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1
> @@ -62,8 +63,11 @@ cglobal remap1_8bit_line, 6, 7, 6, dst, width, src,
> in_linesize, u, v, x
>  INIT_YMM avx2
>  cglobal remap2_8bit_line, 7, 8, 8, dst, width, src, in_linesize, u, v, ker,
> x
>      movsxdifnidn widthq, widthd
> -    xor             xq, xq
>      movd           xm0, in_linesized
> +%if ARCH_X86_32
> +DEFINE_ARGS dst, width, src, x, u, v, ker
> +%endif
> +    xor             xq, xq
>      pcmpeqw         m7, m7
>      vpbroadcastd    m0, xm0
>      vpbroadcastd    m6, [pd_255]
> @@ -92,6 +96,8 @@ cglobal remap2_8bit_line, 7, 8, 8, dst, width, src,
> in_linesize, u, v, ker, x
>          jl .loop
>      RET
>
> +%if ARCH_X86_64
> +
>  INIT_YMM avx2
>  cglobal remap4_8bit_line, 7, 9, 11, dst, width, src, in_linesize, u, v,
> ker, x, y
>      movsxdifnidn widthq, widthd
> @@ -140,3 +146,4 @@ cglobal remap4_8bit_line, 7, 9, 11, dst, width, src,
> in_linesize, u, v, ker, x,
>      RET
>
>  %endif
> +%endif
> diff --git a/libavfilter/x86/vf_v360_init.c b/libavfilter/x86/vf_v360_init.c
> index 5dfd0d1a42..8c1a10c705 100644
> --- a/libavfilter/x86/vf_v360_init.c
> +++ b/libavfilter/x86/vf_v360_init.c
> @@ -34,7 +34,6 @@ void ff_remap4_8bit_line_avx2(uint8_t *dst, int width,
> const uint8_t *src, ptrdi
>
>  av_cold void ff_v360_init_x86(V360Context *s, int depth)
>  {
> -#if ARCH_X86_64
>      int cpu_flags = av_get_cpu_flags();
>
>      if (EXTERNAL_AVX2_FAST(cpu_flags) && s->interp == NEAREST && depth <=
> 8)
> @@ -43,6 +42,7 @@ av_cold void ff_v360_init_x86(V360Context *s, int depth)
>      if (EXTERNAL_AVX2_FAST(cpu_flags) && s->interp == BILINEAR && depth <=
> 8)
>          s->remap_line = ff_remap2_8bit_line_avx2;
>
> +#if ARCH_X86_64
>      if (EXTERNAL_AVX2_FAST(cpu_flags) && (s->interp == BICUBIC ||
>                                            s->interp == LANCZOS) && depth <=
> 8)
>          s->remap_line = ff_remap4_8bit_line_avx2;
> --
> 2.22.0
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".


More information about the ffmpeg-devel mailing list