[FFmpeg-devel] [PATCH v2 5/6] lavc/apv: AVX2 transquant for x86-64
Mark Thompson
sw at jkqxz.net
Wed Apr 23 23:47:25 EEST 2025
On 23/04/2025 20:52, Michael Niedermayer wrote:
> Hi
>
> On Mon, Apr 21, 2025 at 04:24:36PM +0100, Mark Thompson wrote:
>> Typical checkasm result on Alder Lake:
>>
>> decode_transquant_8_c: 461.1 ( 1.00x)
>> decode_transquant_8_avx2: 97.5 ( 4.73x)
>> decode_transquant_10_c: 483.9 ( 1.00x)
>> decode_transquant_10_avx2: 91.7 ( 5.28x)
>> ---
>> libavcodec/apv_dsp.c | 4 +
>> libavcodec/apv_dsp.h | 2 +
>> libavcodec/x86/Makefile | 2 +
>> libavcodec/x86/apv_dsp.asm | 279 ++++++++++++++++++++++++++++++++++
>> libavcodec/x86/apv_dsp_init.c | 40 +++++
>> tests/checkasm/Makefile | 1 +
>> tests/checkasm/apv_dsp.c | 109 +++++++++++++
>> tests/checkasm/checkasm.c | 3 +
>> tests/checkasm/checkasm.h | 1 +
>> tests/fate/checkasm.mak | 1 +
>> 10 files changed, 442 insertions(+)
>> create mode 100644 libavcodec/x86/apv_dsp.asm
>> create mode 100644 libavcodec/x86/apv_dsp_init.c
>> create mode 100644 tests/checkasm/apv_dsp.c
>
> breaks build on x86-32
> make
> X86ASM libavcodec/x86/apv_dsp.o
> src/libavcodec/x86/apv_dsp.asm:64: error: symbol `m10' undefined
> src/libavcodec/x86/apv_dsp.asm:66: error: symbol `xmmm8' undefined
> src//libavutil/x86/x86inc.asm:1637: ... from macro `movd' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src/libavcodec/x86/apv_dsp.asm:67: error: symbol `xmmm9' undefined
> src//libavutil/x86/x86inc.asm:1637: ... from macro `movd' defined here
> src//libavutil/x86/x86inc.asm:1501: ... from macro `RUN_AVX_INSTR' defined here
> src/libavcodec/x86/apv_dsp.asm:68: error: symbol `m10' undefined
> src/libavcodec/x86/apv_dsp.asm:69: error: symbol `m10' undefined
> src/libavcodec/x86/apv_dsp.asm:86: error: symbol `m11' undefined
> src/libavcodec/x86/apv_dsp.asm:78: ... from macro `LOAD_AND_DEQUANT' defined here
> src/libavcodec/x86/apv_dsp.asm:86: error: symbol `m11' undefined
> src/libavcodec/x86/apv_dsp.asm:79: ... from macro `LOAD_AND_DEQUANT' defined here
> src/libavcodec/x86/apv_dsp.asm:86: error: symbol `xmmm8' undefined
> src/libavcodec/x86/apv_dsp.asm:80: ... from macro `LOAD_AND_DEQUANT' defined here
> src/libavcodec/x86/apv_dsp.asm:86: error: symbol `m10' undefined
> src/libavcodec/x86/apv_dsp.asm:81: ... from macro `LOAD_AND_DEQUANT' defined here
> src/libavcodec/x86/apv_dsp.asm:86: error: symbol `xmmm9' undefined
> src/libavcodec/x86/apv_dsp.asm:82: ... from macro `LOAD_AND_DEQUANT' defined here
> src/libavcodec/x86/apv_dsp.asm:87: error: symbol `m11' undefined
> src/libavcodec/x86/apv_dsp.asm:78: ... from macro `LOAD_AND_DEQUANT' defined here
> ...
This was intended to be x86-64 only (due to register pressure) and wasn't guarded properly. Fixed in the latest version.
Thank you for testing!
- Mark
More information about the ffmpeg-devel
mailing list