Index: fbmmx.c =================================================================== RCS file: /cvs/xorg/xc/programs/Xserver/fb/fbmmx.c,v retrieving revision 1.21 diff -p -u -r1.21 fbmmx.c --- fbmmx.c 30 Nov 2005 02:36:25 -0000 1.21 +++ fbmmx.c 1 Dec 2005 04:28:04 -0000 @@ -359,14 +359,12 @@ pack565 (__m64 pixel, __m64 target, int static __inline__ __m64 pix_add_mul (__m64 x, __m64 a, __m64 y, __m64 b) { - x = _mm_mullo_pi16 (x, a); - y = _mm_mullo_pi16 (y, b); - x = _mm_srli_pi16(x, 1); - y = _mm_srli_pi16(y, 1); - x = _mm_adds_pu16 (x, y); - x = _mm_adds_pu16 (x, _mm_srli_pi16 (x, 8)); + x = _mm_mullo_pi16 (x, a); + y = _mm_mullo_pi16 (y, b); x = _mm_adds_pu16 (x, MC(4x0080)); - x = _mm_srli_pi16 (x, 7); + x = _mm_adds_pu16 (x, y); + x = _mm_adds_pu16 (x, _mm_srli_pi16 (x, 8)); + x = _mm_srli_pi16 (x, 8); return x; } @@ -588,7 +586,7 @@ mmxCombineSaturateU (CARD32 *dest, const CARD32 da = ~d >> 24; if (sa > da) { - __m64 msa = load8888(FbIntDiv(da, sa)); + __m64 msa = load8888(FbIntDiv(da, sa)<<24); msa = expand_alpha(msa); ms = pix_multiply(ms, msa); }