Mercurial > libavcodec.hg
diff x86/dsputil_mmx_rnd_template.c @ 9445:41245484dc0b libavcodec
avg_ pixel functions need to use (dst+pix+1)>>1 to average with existing
pixels, not (dst+pix)>>1.
This makes the mmx functions bitexact with the C functions.
author | conrad |
---|---|
date | Wed, 15 Apr 2009 19:10:16 +0000 |
parents | 04423b2f6e0b |
children | 36b60aa6bc75 |
line wrap: on
line diff
--- a/x86/dsputil_mmx_rnd_template.c Wed Apr 15 06:23:40 2009 +0000 +++ b/x86/dsputil_mmx_rnd_template.c Wed Apr 15 19:10:16 2009 +0000 @@ -306,7 +306,7 @@ __asm__ volatile( "movd %0, %%mm0 \n\t" "movd %1, %%mm1 \n\t" - PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) + OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6) "movd %%mm2, %0 \n\t" :"+m"(*block) :"m"(*pixels) @@ -326,7 +326,7 @@ __asm__ volatile( "movq %0, %%mm0 \n\t" "movq %1, %%mm1 \n\t" - PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) + OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6) "movq %%mm2, %0 \n\t" :"+m"(*block) :"m"(*pixels) @@ -345,11 +345,11 @@ __asm__ volatile( "movq %0, %%mm0 \n\t" "movq %1, %%mm1 \n\t" - PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) + OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6) "movq %%mm2, %0 \n\t" "movq 8%0, %%mm0 \n\t" "movq 8%1, %%mm1 \n\t" - PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) + OP_AVG(%%mm0, %%mm1, %%mm2, %%mm6) "movq %%mm2, 8%0 \n\t" :"+m"(*block) :"m"(*pixels) @@ -370,7 +370,7 @@ "movq 1%1, %%mm1 \n\t" "movq %0, %%mm3 \n\t" PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) - PAVGB(%%mm3, %%mm2, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6) "movq %%mm0, %0 \n\t" :"+m"(*block) :"m"(*pixels) @@ -390,7 +390,7 @@ "movq %2, %%mm1 \n\t" "movq %0, %%mm3 \n\t" PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) - PAVGB(%%mm3, %%mm2, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6) "movq %%mm0, %0 \n\t" :"+m"(*dst) :"m"(*src1), "m"(*src2) @@ -411,13 +411,13 @@ "movq 1%1, %%mm1 \n\t" "movq %0, %%mm3 \n\t" PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) - PAVGB(%%mm3, %%mm2, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6) "movq %%mm0, %0 \n\t" "movq 8%1, %%mm0 \n\t" "movq 9%1, %%mm1 \n\t" "movq 8%0, %%mm3 \n\t" PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) - PAVGB(%%mm3, %%mm2, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6) "movq %%mm0, 8%0 \n\t" :"+m"(*block) :"m"(*pixels) @@ -437,13 +437,13 @@ "movq %2, %%mm1 \n\t" "movq %0, %%mm3 \n\t" PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) - PAVGB(%%mm3, %%mm2, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6) "movq %%mm0, %0 \n\t" "movq 8%1, %%mm0 \n\t" "movq 8%2, %%mm1 \n\t" "movq 8%0, %%mm3 \n\t" PAVGB(%%mm0, %%mm1, %%mm2, %%mm6) - PAVGB(%%mm3, %%mm2, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm2, %%mm0, %%mm6) "movq %%mm0, 8%0 \n\t" :"+m"(*dst) :"m"(*src1), "m"(*src2) @@ -466,9 +466,9 @@ "movq (%1, %%"REG_a"), %%mm2 \n\t" PAVGBP(%%mm1, %%mm0, %%mm4, %%mm2, %%mm1, %%mm5) "movq (%2), %%mm3 \n\t" - PAVGB(%%mm3, %%mm4, %%mm0, %%mm6) + OP_AVG(%%mm3, %%mm4, %%mm0, %%mm6) "movq (%2, %3), %%mm3 \n\t" - PAVGB(%%mm3, %%mm5, %%mm1, %%mm6) + OP_AVG(%%mm3, %%mm5, %%mm1, %%mm6) "movq %%mm0, (%2) \n\t" "movq %%mm1, (%2, %3) \n\t" "add %%"REG_a", %1 \n\t" @@ -478,9 +478,9 @@ "movq (%1, %%"REG_a"), %%mm0 \n\t" PAVGBP(%%mm1, %%mm2, %%mm4, %%mm0, %%mm1, %%mm5) "movq (%2), %%mm3 \n\t" - PAVGB(%%mm3, %%mm4, %%mm2, %%mm6) + OP_AVG(%%mm3, %%mm4, %%mm2, %%mm6) "movq (%2, %3), %%mm3 \n\t" - PAVGB(%%mm3, %%mm5, %%mm1, %%mm6) + OP_AVG(%%mm3, %%mm5, %%mm1, %%mm6) "movq %%mm2, (%2) \n\t" "movq %%mm1, (%2, %3) \n\t" "add %%"REG_a", %1 \n\t" @@ -533,7 +533,7 @@ "packuswb %%mm5, %%mm4 \n\t" "pcmpeqd %%mm2, %%mm2 \n\t" "paddb %%mm2, %%mm2 \n\t" - PAVGB(%%mm3, %%mm4, %%mm5, %%mm2) + OP_AVG(%%mm3, %%mm4, %%mm5, %%mm2) "movq %%mm5, (%2, %%"REG_a") \n\t" "add %3, %%"REG_a" \n\t" @@ -557,7 +557,7 @@ "packuswb %%mm1, %%mm0 \n\t" "pcmpeqd %%mm2, %%mm2 \n\t" "paddb %%mm2, %%mm2 \n\t" - PAVGB(%%mm3, %%mm0, %%mm1, %%mm2) + OP_AVG(%%mm3, %%mm0, %%mm1, %%mm2) "movq %%mm1, (%2, %%"REG_a") \n\t" "add %3, %%"REG_a" \n\t"