[FFmpeg-devel] [PATCH v3 14/17] swscale/x86: add SIMD backend

Niklas Haas ffmpeg at haasn.xyz
Fri May 30 13:34:27 EEST 2025


On Fri, 30 May 2025 04:23:12 +0200 Michael Niedermayer <michael at niedermayer.cc> wrote:
> On Tue, May 27, 2025 at 09:55:33AM +0200, Niklas Haas wrote:
> > From: Niklas Haas <git at haasn.dev>
> >
> > This covers most 8-bit and 16-bit ops, and some 32-bit ops. It also covers all
> > floating point operations. While this is not yet 100% coverage, it's good
> > enough for the vast majority of formats out there.
> >
> > Of special note is the packed shuffle fast path, which uses pshufb at vector
> > sizes up to AVX512.
> > ---
> >  libswscale/ops.c              |    4 +
> >  libswscale/x86/Makefile       |    3 +
> >  libswscale/x86/ops.c          |  722 +++++++++++++++++++++++
> >  libswscale/x86/ops_common.asm |  305 ++++++++++
> >  libswscale/x86/ops_float.asm  |  389 ++++++++++++
> >  libswscale/x86/ops_int.asm    | 1049 +++++++++++++++++++++++++++++++++
> >  6 files changed, 2472 insertions(+)
> >  create mode 100644 libswscale/x86/ops.c
> >  create mode 100644 libswscale/x86/ops_common.asm
> >  create mode 100644 libswscale/x86/ops_float.asm
> >  create mode 100644 libswscale/x86/ops_int.asm
>
> seems to break on x86-32 linux

There was no intent to support x86-32 as part of this series. I will fix it by
adding the appropriate build condition.

>
> ...
> src/libswscale/x86/ops_float.asm:389: error: symbol `m9' undefined
> src/libswscale/x86/ops_float.asm:378: ... from macro `linear_fns' defined here
> src/libswscale/x86/ops_float.asm:339: ... from macro `linear_mask' defined here
> src/libswscale/x86/ops_float.asm:330: ... from macro `linear_inner' defined here
> src/libswscale/x86/ops_common.asm:296: ... from macro `IF' defined here
> src//libavutil/x86/x86inc.asm:1639: ... from macro `movdqa' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src//libavutil/x86/x86inc.asm:1996: ... from macro `vmovdqa' defined here
> src/libswscale/x86/ops_float.asm:389: error: symbol `m10' undefined
> src/libswscale/x86/ops_float.asm:378: ... from macro `linear_fns' defined here
> src/libswscale/x86/ops_float.asm:339: ... from macro `linear_mask' defined here
> src/libswscale/x86/ops_float.asm:331: ... from macro `linear_inner' defined here
> src/libswscale/x86/ops_common.asm:296: ... from macro `IF' defined here
> src//libavutil/x86/x86inc.asm:1639: ... from macro `movdqa' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src//libavutil/x86/x86inc.asm:1996: ... from macro `vmovdqa' defined here
> src/libswscale/x86/ops_float.asm:389: error: symbol `m11' undefined
> src/libswscale/x86/ops_float.asm:378: ... from macro `linear_fns' defined here
> src/libswscale/x86/ops_float.asm:339: ... from macro `linear_mask' defined here
> src/libswscale/x86/ops_float.asm:332: ... from macro `linear_inner' defined here
> src/libswscale/x86/ops_common.asm:296: ... from macro `IF' defined here
> src//libavutil/x86/x86inc.asm:1639: ... from macro `movdqa' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src//libavutil/x86/x86inc.asm:1996: ... from macro `vmovdqa' defined here
> make: *** [src/ffbuild/common.mak:103: libswscale/x86/ops_float.o] Error 1
>
>
>
> [...]
> --
> Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
>
> Old school: Use the lowest level language in which you can solve the problem
>             conveniently.
> New school: Use the highest level language in which the latest supercomputer
>             can solve the problem without the user falling asleep waiting.
> _______________________________________________
> 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