[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