avcodec/x86/hpeldsp: fix crash on AMD K6-3+
authorMikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
Sun, 3 Nov 2013 17:00:17 +0000 (18:00 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 3 Nov 2013 18:49:11 +0000 (19:49 +0100)
commit074155360d28d25701e0cbc7e867bda0e08d9428
treefea899f106d487350b9e1e9ef641c30ba68a1d46
parent535d58959dececb428cf73b308258de243c2c6f3
avcodec/x86/hpeldsp: fix crash on AMD K6-3+

There are instructions pavgb and pavgusb. Both instructions do the same
operation but they have different enconding. Pavgb exists in SSE (or
MMXEXT) instruction set and pavgusb exists in 3D-NOW instruction set.

livavcodec uses the macro PAVGB to select the proper instruction. However,
the function avg_pixels8_xy2 doesn't use this macro, it uses pavgb
directly.

As a consequence, the function avg_pixels8_xy2 crashes on AMD K6-2 and
K6-3 processors, because they have pavgusb, but not pavgb.

This bug seems to be introduced by commit
71155d7b4157fee44c0d3d0fc1b660ebfb9ccf46, "dsputil: x86: Convert mpeg4
qpel and dsputil avg to yasm"

Signed-off-by: Mikulas Patocka <mikulas@artax.karlin.mff.cuni.cz>
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/x86/hpeldsp.asm