[Scummvm-cvs-logs] SF.net SVN: scummvm:[42918] scummvm/trunk/graphics/scaler

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Jul 30 11:36:50 CEST 2009


Revision: 42918
          http://scummvm.svn.sourceforge.net/scummvm/?rev=42918&view=rev
Author:   fingolfin
Date:     2009-07-30 09:36:50 +0000 (Thu, 30 Jul 2009)

Log Message:
-----------
Patch #2818501: enable scale2x mmx on x86_64

Modified Paths:
--------------
    scummvm/trunk/graphics/scaler/scale2x.cpp
    scummvm/trunk/graphics/scaler/scale2x.h
    scummvm/trunk/graphics/scaler/scalebit.cpp

Modified: scummvm/trunk/graphics/scaler/scale2x.cpp
===================================================================
--- scummvm/trunk/graphics/scaler/scale2x.cpp	2009-07-30 07:12:28 UTC (rev 42917)
+++ scummvm/trunk/graphics/scaler/scale2x.cpp	2009-07-30 09:36:50 UTC (rev 42918)
@@ -158,7 +158,7 @@
 /***************************************************************************/
 /* Scale2x MMX implementation */
 
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 
 /*
  * Apply the Scale2x effect at a single row.
@@ -205,7 +205,7 @@
 
 	__asm__ __volatile__(
 /* central runs */
-		"shrl $3, %4\n"
+		"shr $3, %4\n"
 		"jz 1f\n"
 
 		"0:\n"
@@ -261,12 +261,12 @@
 		"movq %%mm3, 8(%3)\n"
 
 		/* next */
-		"addl $8, %0\n"
-		"addl $8, %1\n"
-		"addl $8, %2\n"
-		"addl $16, %3\n"
+		"add $8, %0\n"
+		"add $8, %1\n"
+		"add $8, %2\n"
+		"add $16, %3\n"
 
-		"decl %4\n"
+		"dec %4\n"
 		"jnz 0b\n"
 		"1:\n"
 
@@ -283,7 +283,7 @@
 
 	__asm__ __volatile__(
 /* central runs */
-		"shrl $2, %4\n"
+		"shr $2, %4\n"
 		"jz 1f\n"
 
 		"0:\n"
@@ -339,12 +339,12 @@
 		"movq %%mm3, 8(%3)\n"
 
 		/* next */
-		"addl $8, %0\n"
-		"addl $8, %1\n"
-		"addl $8, %2\n"
-		"addl $16, %3\n"
+		"add $8, %0\n"
+		"add $8, %1\n"
+		"add $8, %2\n"
+		"add $16, %3\n"
 
-		"decl %4\n"
+		"dec %4\n"
 		"jnz 0b\n"
 		"1:\n"
 
@@ -361,7 +361,7 @@
 
 	__asm__ __volatile__(
 /* central runs */
-		"shrl $1, %4\n"
+		"shr $1, %4\n"
 		"jz 1f\n"
 
 		"0:\n"
@@ -417,12 +417,12 @@
 		"movq %%mm3, 8(%3)\n"
 
 		/* next */
-		"addl $8, %0\n"
-		"addl $8, %1\n"
-		"addl $8, %2\n"
-		"addl $16, %3\n"
+		"add $8, %0\n"
+		"add $8, %1\n"
+		"add $8, %2\n"
+		"add $16, %3\n"
 
-		"decl %4\n"
+		"dec %4\n"
 		"jnz 0b\n"
 		"1:\n"
 

Modified: scummvm/trunk/graphics/scaler/scale2x.h
===================================================================
--- scummvm/trunk/graphics/scaler/scale2x.h	2009-07-30 07:12:28 UTC (rev 42917)
+++ scummvm/trunk/graphics/scaler/scale2x.h	2009-07-30 09:36:50 UTC (rev 42918)
@@ -33,7 +33,7 @@
 void scale2x_16_def(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count);
 void scale2x_32_def(scale2x_uint32* dst0, scale2x_uint32* dst1, const scale2x_uint32* src0, const scale2x_uint32* src1, const scale2x_uint32* src2, unsigned count);
 
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 
 void scale2x_8_mmx(scale2x_uint8* dst0, scale2x_uint8* dst1, const scale2x_uint8* src0, const scale2x_uint8* src1, const scale2x_uint8* src2, unsigned count);
 void scale2x_16_mmx(scale2x_uint16* dst0, scale2x_uint16* dst1, const scale2x_uint16* src0, const scale2x_uint16* src1, const scale2x_uint16* src2, unsigned count);

Modified: scummvm/trunk/graphics/scaler/scalebit.cpp
===================================================================
--- scummvm/trunk/graphics/scaler/scalebit.cpp	2009-07-30 07:12:28 UTC (rev 42917)
+++ scummvm/trunk/graphics/scaler/scalebit.cpp	2009-07-30 09:36:50 UTC (rev 42918)
@@ -55,7 +55,7 @@
 static inline void stage_scale2x(void* dst0, void* dst1, const void* src0, const void* src1, const void* src2, unsigned pixel, unsigned pixel_per_row)
 {
 	switch (pixel) {
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 		case 1 : scale2x_8_mmx(DST(8,0), DST(8,1), SRC(8,0), SRC(8,1), SRC(8,2), pixel_per_row); break;
 		case 2 : scale2x_16_mmx(DST(16,0), DST(16,1), SRC(16,0), SRC(16,1), SRC(16,2), pixel_per_row); break;
 		case 4 : scale2x_32_mmx(DST(32,0), DST(32,1), SRC(32,0), SRC(32,1), SRC(32,2), pixel_per_row); break;
@@ -129,7 +129,7 @@
 		--count;
 	}
 
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 	scale2x_mmx_emms();
 #endif
 }
@@ -229,7 +229,7 @@
 		--count;
 	}
 
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 	scale2x_mmx_emms();
 #endif
 }
@@ -307,7 +307,7 @@
 		break;
 	}
 
-#if defined(__GNUC__) && defined(__i386__)
+#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 	switch (scale) {
 	case 2 :
 	case 4 :


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list