1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-02 03:06:28 +02:00
FFmpeg/libavutil/x86
Andreas Rheinhardt 5b85ca5317 avutil/x86/pixelutils: Empty MMX state in ff_pixelutils_sad_8x8_mmxext
We currently mostly do not empty the MMX state in our MMX
DSP functions; instead we only do so before code that might
be using x87 code. This is a violation of the System V i386 ABI
(and maybe of other ABIs, too):
"The CPU shall be in x87 mode upon entry to a function. Therefore,
every function that uses the MMX registers is required to issue an
emms or femms instruction after using MMX registers, before returning
or calling another function." (See 2.2.1 in [1])
This patch does not intend to change all these functions to abide
by the ABI; it only does so for ff_pixelutils_sad_8x8_mmxext, as this
function can by called by external users, because it is exported
via the pixelutils API. Without this, the following fragment will
assert (on x86/x64):
    uint8_t src1[8 * 8], src2[8 * 8];
    av_pixelutils_sad_fn fn = av_pixelutils_get_sad_fn(3, 3, 0, NULL);
    fn(src1, 8, src2, 8);
    av_assert0_fpu();

[1]: https://raw.githubusercontent.com/wiki/hjl-tools/x86-psABI/intel386-psABI-1.1.pdf

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
2023-11-04 01:26:03 +01:00
..
asm.h
bswap.h
cpu.c
cpu.h
cpuid.asm
emms.asm
fixed_dsp_init.c lavu/fixed_dsp: add missing av_restrict qualifiers 2022-10-04 10:56:12 +02:00
fixed_dsp.asm
float_dsp_init.c avutil/x86/float_dsp: add fma3 for scalarproduct 2022-09-13 17:43:15 +02:00
float_dsp.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
imgutils_init.c
imgutils.asm
intmath.h
intreadwrite.h avutil/x86/intreadwrite: Add ability to detect whether MMX code is used 2022-09-11 21:08:04 +02:00
lls_init.c
lls.asm x86: replace explicit REP_RETs with RETs 2023-02-01 04:23:55 +01:00
Makefile
pixelutils_init.c avutil/x86/pixelutils: Remove obsolete MMX(EXT) functions 2022-06-22 13:36:44 +02:00
pixelutils.asm avutil/x86/pixelutils: Empty MMX state in ff_pixelutils_sad_8x8_mmxext 2023-11-04 01:26:03 +01:00
pixelutils.h
timer.h
tx_float_init.c lavu/tx: refactor to explicitly track and convert lookup table order 2022-11-24 15:58:34 +01:00
tx_float.asm x86/tx_float: fix stray change in 15xM FFT and replace imul->lea 2022-11-28 16:58:12 +01:00
w64xmmtest.h
x86inc.asm
x86util.asm