diff --git a/libavcodec/x86/vc1dsp_mmx.c b/libavcodec/x86/vc1dsp_mmx.c index 4e996f1ce6..717f74f287 100644 --- a/libavcodec/x86/vc1dsp_mmx.c +++ b/libavcodec/x86/vc1dsp_mmx.c @@ -797,7 +797,7 @@ void ff_vc1dsp_init_mmx(VC1DSPContext *dsp) if (mm_flags & AV_CPU_FLAG_MMX) { dsp->put_no_rnd_vc1_chroma_pixels_tab[0]= ff_put_vc1_chroma_mc8_mmx_nornd; } - return; + if (mm_flags & AV_CPU_FLAG_MMX2) { ASSIGN_LF(mmx2); dsp->avg_no_rnd_vc1_chroma_pixels_tab[0]= ff_avg_vc1_chroma_mc8_mmx2_nornd; diff --git a/libavcodec/x86/vc1dsp_yasm.asm b/libavcodec/x86/vc1dsp_yasm.asm index 2c5cf22a0a..ced2b5ba88 100644 --- a/libavcodec/x86/vc1dsp_yasm.asm +++ b/libavcodec/x86/vc1dsp_yasm.asm @@ -119,7 +119,9 @@ section .text pand m2, m6 pand m3, m2 ; d final - PSIGNW m3, m7 + psraw m7, 15 + pxor m3, m7 + psubw m3, m7 psubw m0, m3 paddw m1, m3 packuswb m0, m0 @@ -284,7 +286,6 @@ cglobal vc1_h_loop_filter8_sse2, 3,6,8 RET %define PABSW PABSW_SSSE3 -%define PSIGNW PSIGNW_SSSE3 INIT_MMX ; void ff_vc1_v_loop_filter4_ssse3(uint8_t *src, int stride, int pq)