[Scummvm-cvs-logs] CVS: scummvm/common/scaler scale2x.cpp,1.2,1.3

Gregory Montoir cyx at users.sourceforge.net
Sat Aug 7 10:23:00 CEST 2004


Update of /cvsroot/scummvm/scummvm/common/scaler
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24447/common/scaler

Modified Files:
	scale2x.cpp 
Log Message:
centers the scaled bitmap and fix the scaling of borders for ASM version)

Index: scale2x.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/common/scaler/scale2x.cpp,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- scale2x.cpp	7 Aug 2004 16:47:25 -0000	1.2
+++ scale2x.cpp	7 Aug 2004 17:21:53 -0000	1.3
@@ -204,68 +204,7 @@
 	assert(count >= 16);
 	assert(count % 8 == 0);
 
-	/* always do the first and last run */
-	count -= 2*8;
-
 	__asm__ __volatile__(
-/* first run */
-		/* set the current, current_pre, current_next registers */
-		"movq 0(%1), %%mm0\n"
-		"movq 0(%1), %%mm7\n"
-		"movq 8(%1), %%mm1\n"
-		"psllq $56, %%mm0\n"
-		"psllq $56, %%mm1\n"
-		"psrlq $56, %%mm0\n"
-		"movq %%mm7, %%mm2\n"
-		"movq %%mm7, %%mm3\n"
-		"psllq $8, %%mm2\n"
-		"psrlq $8, %%mm3\n"
-		"por %%mm2, %%mm0\n"
-		"por %%mm3, %%mm1\n"
-
-		/* current_upper */
-		"movq (%0), %%mm6\n"
-
-		/* compute the upper-left pixel for dst on %%mm2 */
-		/* compute the upper-right pixel for dst on %%mm4 */
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"movq %%mm0, %%mm3\n"
-		"movq %%mm1, %%mm5\n"
-		"pcmpeqb %%mm6, %%mm2\n"
-		"pcmpeqb %%mm6, %%mm4\n"
-		"pcmpeqb (%2), %%mm3\n"
-		"pcmpeqb (%2), %%mm5\n"
-		"pandn %%mm2, %%mm3\n"
-		"pandn %%mm4, %%mm5\n"
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"pcmpeqb %%mm1, %%mm2\n"
-		"pcmpeqb %%mm0, %%mm4\n"
-		"pandn %%mm3, %%mm2\n"
-		"pandn %%mm5, %%mm4\n"
-		"movq %%mm2, %%mm3\n"
-		"movq %%mm4, %%mm5\n"
-		"pand %%mm6, %%mm2\n"
-		"pand %%mm6, %%mm4\n"
-		"pandn %%mm7, %%mm3\n"
-		"pandn %%mm7, %%mm5\n"
-		"por %%mm3, %%mm2\n"
-		"por %%mm5, %%mm4\n"
-
-		/* set *dst */
-		"movq %%mm2, %%mm3\n"
-		"punpcklbw %%mm4, %%mm2\n"
-		"punpckhbw %%mm4, %%mm3\n"
-		"movq %%mm2, (%3)\n"
-		"movq %%mm3, 8(%3)\n"
-
-		/* next */
-		"addl $8, %0\n"
-		"addl $8, %1\n"
-		"addl $8, %2\n"
-		"addl $16, %3\n"
-
 /* central runs */
 		"shrl $3, %4\n"
 		"jz 1f\n"
@@ -332,58 +271,6 @@
 		"jnz 0b\n"
 		"1:\n"
 
-/* final run */
-		/* set the current, current_pre, current_next registers */
-		"movq (%1), %%mm1\n"
-		"movq (%1), %%mm7\n"
-		"movq -8(%1), %%mm0\n"
-		"psrlq $56, %%mm1\n"
-		"psrlq $56, %%mm0\n"
-		"psllq $56, %%mm1\n"
-		"movq %%mm7, %%mm2\n"
-		"movq %%mm7, %%mm3\n"
-		"psllq $8, %%mm2\n"
-		"psrlq $8, %%mm3\n"
-		"por %%mm2, %%mm0\n"
-		"por %%mm3, %%mm1\n"
-
-		/* current_upper */
-		"movq (%0), %%mm6\n"
-
-		/* compute the upper-left pixel for dst on %%mm2 */
-		/* compute the upper-right pixel for dst on %%mm4 */
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"movq %%mm0, %%mm3\n"
-		"movq %%mm1, %%mm5\n"
-		"pcmpeqb %%mm6, %%mm2\n"
-		"pcmpeqb %%mm6, %%mm4\n"
-		"pcmpeqb (%2), %%mm3\n"
-		"pcmpeqb (%2), %%mm5\n"
-		"pandn %%mm2, %%mm3\n"
-		"pandn %%mm4, %%mm5\n"
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"pcmpeqb %%mm1, %%mm2\n"
-		"pcmpeqb %%mm0, %%mm4\n"
-		"pandn %%mm3, %%mm2\n"
-		"pandn %%mm5, %%mm4\n"
-		"movq %%mm2, %%mm3\n"
-		"movq %%mm4, %%mm5\n"
-		"pand %%mm6, %%mm2\n"
-		"pand %%mm6, %%mm4\n"
-		"pandn %%mm7, %%mm3\n"
-		"pandn %%mm7, %%mm5\n"
-		"por %%mm3, %%mm2\n"
-		"por %%mm5, %%mm4\n"
-
-		/* set *dst */
-		"movq %%mm2, %%mm3\n"
-		"punpcklbw %%mm4, %%mm2\n"
-		"punpckhbw %%mm4, %%mm3\n"
-		"movq %%mm2, (%3)\n"
-		"movq %%mm3, 8(%3)\n"
-
 		: "+r" (src0), "+r" (src1), "+r" (src2), "+r" (dst), "+r" (count)
 		:
 		: "cc"
@@ -395,68 +282,7 @@
 	assert(count >= 8);
 	assert(count % 4 == 0);
 
-	/* always do the first and last run */
-	count -= 2*4;
-
 	__asm__ __volatile__(
-/* first run */
-		/* set the current, current_pre, current_next registers */
-		"movq 0(%1), %%mm0\n"
-		"movq 0(%1), %%mm7\n"
-		"movq 8(%1), %%mm1\n"
-		"psllq $48, %%mm0\n"
-		"psllq $48, %%mm1\n"
-		"psrlq $48, %%mm0\n"
-		"movq %%mm7, %%mm2\n"
-		"movq %%mm7, %%mm3\n"
-		"psllq $16, %%mm2\n"
-		"psrlq $16, %%mm3\n"
-		"por %%mm2, %%mm0\n"
-		"por %%mm3, %%mm1\n"
-
-		/* current_upper */
-		"movq (%0), %%mm6\n"
-
-		/* compute the upper-left pixel for dst on %%mm2 */
-		/* compute the upper-right pixel for dst on %%mm4 */
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"movq %%mm0, %%mm3\n"
-		"movq %%mm1, %%mm5\n"
-		"pcmpeqw %%mm6, %%mm2\n"
-		"pcmpeqw %%mm6, %%mm4\n"
-		"pcmpeqw (%2), %%mm3\n"
-		"pcmpeqw (%2), %%mm5\n"
-		"pandn %%mm2, %%mm3\n"
-		"pandn %%mm4, %%mm5\n"
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"pcmpeqw %%mm1, %%mm2\n"
-		"pcmpeqw %%mm0, %%mm4\n"
-		"pandn %%mm3, %%mm2\n"
-		"pandn %%mm5, %%mm4\n"
-		"movq %%mm2, %%mm3\n"
-		"movq %%mm4, %%mm5\n"
-		"pand %%mm6, %%mm2\n"
-		"pand %%mm6, %%mm4\n"
-		"pandn %%mm7, %%mm3\n"
-		"pandn %%mm7, %%mm5\n"
-		"por %%mm3, %%mm2\n"
-		"por %%mm5, %%mm4\n"
-
-		/* set *dst */
-		"movq %%mm2, %%mm3\n"
-		"punpcklwd %%mm4, %%mm2\n"
-		"punpckhwd %%mm4, %%mm3\n"
-		"movq %%mm2, (%3)\n"
-		"movq %%mm3, 8(%3)\n"
-
-		/* next */
-		"addl $8, %0\n"
-		"addl $8, %1\n"
-		"addl $8, %2\n"
-		"addl $16, %3\n"
-
 /* central runs */
 		"shrl $2, %4\n"
 		"jz 1f\n"
@@ -523,58 +349,6 @@
 		"jnz 0b\n"
 		"1:\n"
 
-/* final run */
-		/* set the current, current_pre, current_next registers */
-		"movq (%1), %%mm1\n"
-		"movq (%1), %%mm7\n"
-		"movq -8(%1), %%mm0\n"
-		"psrlq $48, %%mm1\n"
-		"psrlq $48, %%mm0\n"
-		"psllq $48, %%mm1\n"
-		"movq %%mm7, %%mm2\n"
-		"movq %%mm7, %%mm3\n"
-		"psllq $16, %%mm2\n"
-		"psrlq $16, %%mm3\n"
-		"por %%mm2, %%mm0\n"
-		"por %%mm3, %%mm1\n"
-
-		/* current_upper */
-		"movq (%0), %%mm6\n"
-
-		/* compute the upper-left pixel for dst on %%mm2 */
-		/* compute the upper-right pixel for dst on %%mm4 */
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"movq %%mm0, %%mm3\n"
-		"movq %%mm1, %%mm5\n"
-		"pcmpeqw %%mm6, %%mm2\n"
-		"pcmpeqw %%mm6, %%mm4\n"
-		"pcmpeqw (%2), %%mm3\n"
-		"pcmpeqw (%2), %%mm5\n"
-		"pandn %%mm2, %%mm3\n"
-		"pandn %%mm4, %%mm5\n"
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"pcmpeqw %%mm1, %%mm2\n"
-		"pcmpeqw %%mm0, %%mm4\n"
-		"pandn %%mm3, %%mm2\n"
-		"pandn %%mm5, %%mm4\n"
-		"movq %%mm2, %%mm3\n"
-		"movq %%mm4, %%mm5\n"
-		"pand %%mm6, %%mm2\n"
-		"pand %%mm6, %%mm4\n"
-		"pandn %%mm7, %%mm3\n"
-		"pandn %%mm7, %%mm5\n"
-		"por %%mm3, %%mm2\n"
-		"por %%mm5, %%mm4\n"
-
-		/* set *dst */
-		"movq %%mm2, %%mm3\n"
-		"punpcklwd %%mm4, %%mm2\n"
-		"punpckhwd %%mm4, %%mm3\n"
-		"movq %%mm2, (%3)\n"
-		"movq %%mm3, 8(%3)\n"
-
 		: "+r" (src0), "+r" (src1), "+r" (src2), "+r" (dst), "+r" (count)
 		:
 		: "cc"
@@ -586,68 +360,7 @@
 	assert(count >= 4);
 	assert(count % 2 == 0);
 
-	/* always do the first and last run */
-	count -= 2*2;
-
 	__asm__ __volatile__(
-/* first run */
-		/* set the current, current_pre, current_next registers */
-		"movq 0(%1), %%mm0\n"
-		"movq 0(%1), %%mm7\n"
-		"movq 8(%1), %%mm1\n"
-		"psllq $32, %%mm0\n"
-		"psllq $32, %%mm1\n"
-		"psrlq $32, %%mm0\n"
-		"movq %%mm7, %%mm2\n"
-		"movq %%mm7, %%mm3\n"
-		"psllq $32, %%mm2\n"
-		"psrlq $32, %%mm3\n"
-		"por %%mm2, %%mm0\n"
-		"por %%mm3, %%mm1\n"
-
-		/* current_upper */
-		"movq (%0), %%mm6\n"
-
-		/* compute the upper-left pixel for dst on %%mm2 */
-		/* compute the upper-right pixel for dst on %%mm4 */
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"movq %%mm0, %%mm3\n"
-		"movq %%mm1, %%mm5\n"
-		"pcmpeqd %%mm6, %%mm2\n"
-		"pcmpeqd %%mm6, %%mm4\n"
-		"pcmpeqd (%2), %%mm3\n"
-		"pcmpeqd (%2), %%mm5\n"
-		"pandn %%mm2, %%mm3\n"
-		"pandn %%mm4, %%mm5\n"
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"pcmpeqd %%mm1, %%mm2\n"
-		"pcmpeqd %%mm0, %%mm4\n"
-		"pandn %%mm3, %%mm2\n"
-		"pandn %%mm5, %%mm4\n"
-		"movq %%mm2, %%mm3\n"
-		"movq %%mm4, %%mm5\n"
-		"pand %%mm6, %%mm2\n"
-		"pand %%mm6, %%mm4\n"
-		"pandn %%mm7, %%mm3\n"
-		"pandn %%mm7, %%mm5\n"
-		"por %%mm3, %%mm2\n"
-		"por %%mm5, %%mm4\n"
-
-		/* set *dst */
-		"movq %%mm2, %%mm3\n"
-		"punpckldq %%mm4, %%mm2\n"
-		"punpckhdq %%mm4, %%mm3\n"
-		"movq %%mm2, (%3)\n"
-		"movq %%mm3, 8(%3)\n"
-
-		/* next */
-		"addl $8, %0\n"
-		"addl $8, %1\n"
-		"addl $8, %2\n"
-		"addl $16, %3\n"
-
 /* central runs */
 		"shrl $1, %4\n"
 		"jz 1f\n"
@@ -714,58 +427,6 @@
 		"jnz 0b\n"
 		"1:\n"
 
-/* final run */
-		/* set the current, current_pre, current_next registers */
-		"movq (%1), %%mm1\n"
-		"movq (%1), %%mm7\n"
-		"movq -8(%1), %%mm0\n"
-		"psrlq $32, %%mm1\n"
-		"psrlq $32, %%mm0\n"
-		"psllq $32, %%mm1\n"
-		"movq %%mm7, %%mm2\n"
-		"movq %%mm7, %%mm3\n"
-		"psllq $32, %%mm2\n"
-		"psrlq $32, %%mm3\n"
-		"por %%mm2, %%mm0\n"
-		"por %%mm3, %%mm1\n"
-
-		/* current_upper */
-		"movq (%0), %%mm6\n"
-
-		/* compute the upper-left pixel for dst on %%mm2 */
-		/* compute the upper-right pixel for dst on %%mm4 */
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"movq %%mm0, %%mm3\n"
-		"movq %%mm1, %%mm5\n"
-		"pcmpeqd %%mm6, %%mm2\n"
-		"pcmpeqd %%mm6, %%mm4\n"
-		"pcmpeqd (%2), %%mm3\n"
-		"pcmpeqd (%2), %%mm5\n"
-		"pandn %%mm2, %%mm3\n"
-		"pandn %%mm4, %%mm5\n"
-		"movq %%mm0, %%mm2\n"
-		"movq %%mm1, %%mm4\n"
-		"pcmpeqd %%mm1, %%mm2\n"
-		"pcmpeqd %%mm0, %%mm4\n"
-		"pandn %%mm3, %%mm2\n"
-		"pandn %%mm5, %%mm4\n"
-		"movq %%mm2, %%mm3\n"
-		"movq %%mm4, %%mm5\n"
-		"pand %%mm6, %%mm2\n"
-		"pand %%mm6, %%mm4\n"
-		"pandn %%mm7, %%mm3\n"
-		"pandn %%mm7, %%mm5\n"
-		"por %%mm3, %%mm2\n"
-		"por %%mm5, %%mm4\n"
-
-		/* set *dst */
-		"movq %%mm2, %%mm3\n"
-		"punpckldq %%mm4, %%mm2\n"
-		"punpckhdq %%mm4, %%mm3\n"
-		"movq %%mm2, (%3)\n"
-		"movq %%mm3, 8(%3)\n"
-
 		: "+r" (src0), "+r" (src1), "+r" (src2), "+r" (dst), "+r" (count)
 		:
 		: "cc"





More information about the Scummvm-git-logs mailing list