ffmpeg/libavcodec/x86
Mans Rullgard f2fd167835 x86: vc1: fix and enable optimised loop filter
The problem is that the ssse3 psign instruction does the wrong
thing here.  Commit ea60dfe incorrectly removed a macro emulating
this instruction for pre-ssse3 code.  However, the emulation is
incorrect, and the code relies on the behaviour of the macro.
Specifically, the psign sets destination elements to zero where
the corresponding source element is zero, whereas the emulation
only negates destination elements where the source is negative.

Furthermore, the PSIGNW_MMX macro in x86util.asm is totally bogus,
which is why the original VC-1 code had an additional right shift
when using it.  Since the psign instruction cannot be used here,
skip all the macro hell and use the working instruction sequence
directly.

None of this was noticed due a stray return statement in
ff_vc1dsp_init_mmx() which meant that only the mmx version of the
loop filter was ever used (before being removed in ea60dfe).

Signed-off-by: Mans Rullgard <mans@mansr.com>
2012-06-30 00:12:05 +01:00
..
ac3dsp_mmx.c
ac3dsp.asm
cabac.h x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
cavsdsp_mmx.c x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
dct32_sse.asm
deinterlace.asm
dnxhd_mmx.c x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
dsputil_mmx_avg_template.c
dsputil_mmx_qns_template.c
dsputil_mmx_rnd_template.c
dsputil_mmx.c x86: Only use optimizations with cmov if the CPU supports the instruction 2012-06-23 16:21:50 +02:00
dsputil_mmx.h x86: remove unused inline asm macros from dsputil_mmx.h 2012-06-23 14:14:06 +01:00
dsputil_yasm.asm Add a float DSP framework to libavutil 2012-06-08 13:14:38 -04:00
dsputilenc_mmx.c
dsputilenc_yasm.asm
fdct_mmx.c
fft_3dn2.c x86: use new schema for ASM macros 2012-05-29 14:49:45 +02:00
fft_3dn.c
fft_mmx.asm x86: fft: replace call to memcpy by a loop 2012-06-27 12:49:33 +01:00
fft.c x86: use new schema for ASM macros 2012-05-29 14:49:45 +02:00
fft.h x86: use new schema for ASM macros 2012-05-29 14:49:45 +02:00
fmtconvert_mmx.c
fmtconvert.asm
h264_chromamc_10bit.asm
h264_chromamc.asm
h264_deblock_10bit.asm
h264_deblock.asm
h264_i386.h x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
h264_idct_10bit.asm
h264_idct.asm
h264_intrapred_10bit.asm
h264_intrapred_init.c x86: Only use optimizations with cmov if the CPU supports the instruction 2012-06-23 16:21:50 +02:00
h264_intrapred.asm
h264_qpel_10bit.asm
h264_qpel_mmx.c
h264_weight_10bit.asm
h264_weight.asm
h264dsp_mmx.c x86: Only use optimizations with cmov if the CPU supports the instruction 2012-06-23 16:21:50 +02:00
idct_mmx_xvid.c
idct_mmx.c
idct_sse2_xvid.c
idct_xvid.h
imdct36_sse.asm
lpc_mmx.c x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
Makefile x86: fft: convert sse inline asm to yasm 2012-06-25 13:31:00 +01:00
mathops.h x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
mlpdsp.c
motion_est_mmx.c
mpegaudiodec_mmx.c
mpegvideo_mmx_template.c
mpegvideo_mmx.c
pngdsp-init.c
pngdsp.asm
proresdsp-init.c
proresdsp.asm
rv34dsp_init.c
rv34dsp.asm
rv40dsp_init.c cosmetics: do not use full path for local headers 2012-06-22 10:49:40 +02:00
rv40dsp.asm
sbrdsp_init.c
sbrdsp.asm
simple_idct_mmx.c
snowdsp_mmx.c x86: place some inline asm under #if HAVE_INLINE_ASM 2012-06-25 13:23:12 +01:00
vc1dsp_mmx.c x86: vc1: fix and enable optimised loop filter 2012-06-30 00:12:05 +01:00
vc1dsp_yasm.asm x86: vc1: fix and enable optimised loop filter 2012-06-30 00:12:05 +01:00
vp3dsp.asm
vp8dsp-init.c
vp8dsp.asm
vp56_arith.h
vp56dsp_init.c
vp56dsp.asm
w64xmmtest.c