[Commits] SDL: Fixed bug 1278.

libsdl.org revision control commits-owner at libsdl.org
Tue Sep 6 19:47:21 PDT 2011


details:   http://hg.libsdl.org/SDL/rev/819e85555d4d
changeset: 5872:819e85555d4d
user:      Sam Lantinga <slouken at libsdl.org>
date:      Tue Sep 06 22:45:58 2011 -0400
description:
Fixed bug 1278.

>From http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50111:
Andrew Pinski 2011-08-18 02:25:15 UTC
I really doubt this is a bug in GCC but rather SDL's inline-asm.

 "=X" (mmx_trace)

'X'
    Any operand whatsoever is allowed.

They most likely want:
y
    Any MMX register.

diffstat:

 src/video/mmx.h |  40 ++++++++++++++++++++--------------------
 1 files changed, 20 insertions(+), 20 deletions(-)

diffs (134 lines):

diff -r 94e0116059f4 -r 819e85555d4d src/video/mmx.h
--- a/src/video/mmx.h	Sat Sep 03 09:52:45 2011 +0200
+++ b/src/video/mmx.h	Tue Sep 06 22:45:58 2011 -0400
@@ -244,15 +244,15 @@
 		printf(#op "_i2r(" #imm "=0x%08x%08x, ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ ("movq %%" #reg ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#reg "=0x%08x%08x) => ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ (#op " %0, %%" #reg \
 				      : /* nothing */ \
-				      : "X" (imm)); \
+				      : "y" (imm)); \
 		__asm__ __volatile__ ("movq %%" #reg ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#reg "=0x%08x%08x\n", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
@@ -265,15 +265,15 @@
 		printf(#op "_m2r(" #mem "=0x%08x%08x, ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ ("movq %%" #reg ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#reg "=0x%08x%08x) => ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ (#op " %0, %%" #reg \
 				      : /* nothing */ \
-				      : "X" (mem)); \
+				      : "y" (mem)); \
 		__asm__ __volatile__ ("movq %%" #reg ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#reg "=0x%08x%08x\n", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
@@ -283,7 +283,7 @@
 	{ \
 		mmx_t mmx_trace; \
 		__asm__ __volatile__ ("movq %%" #reg ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#op "_r2m(" #reg "=0x%08x%08x, ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
@@ -291,7 +291,7 @@
 		printf(#mem "=0x%08x%08x) => ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ (#op " %%" #reg ", %0" \
-				      : "=X" (mem) \
+				      : "=y" (mem) \
 				      : /* nothing */ ); \
 		mmx_trace = (mem); \
 		printf(#mem "=0x%08x%08x\n", \
@@ -302,18 +302,18 @@
 	{ \
 		mmx_t mmx_trace; \
 		__asm__ __volatile__ ("movq %%" #regs ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#op "_r2r(" #regs "=0x%08x%08x, ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ ("movq %%" #regd ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#regd "=0x%08x%08x) => ", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
 		__asm__ __volatile__ (#op " %" #regs ", %" #regd); \
 		__asm__ __volatile__ ("movq %%" #regd ", %0" \
-				      : "=X" (mmx_trace) \
+				      : "=y" (mmx_trace) \
 				      : /* nothing */ ); \
 		printf(#regd "=0x%08x%08x\n", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
@@ -331,8 +331,8 @@
 		__asm__ __volatile__ ("movq %0, %%mm0\n\t" \
 				      #op " %1, %%mm0\n\t" \
 				      "movq %%mm0, %0" \
-				      : "=X" (memd) \
-				      : "X" (mems)); \
+				      : "=y" (memd) \
+				      : "y" (mems)); \
 		mmx_trace = (memd); \
 		printf(#memd "=0x%08x%08x\n", \
 			mmx_trace.d[1], mmx_trace.d[0]); \
@@ -346,7 +346,7 @@
 #define	mmx_i2r(op, imm, reg) \
 	__asm__ __volatile__ (#op " %0, %%" #reg \
 			      : /* nothing */ \
-			      : "X" (imm) )
+			      : "y" (imm) )
 
 #define	mmx_m2r(op, mem, reg) \
 	__asm__ __volatile__ (#op " %0, %%" #reg \
@@ -365,8 +365,8 @@
 	__asm__ __volatile__ ("movq %0, %%mm0\n\t" \
 			      #op " %1, %%mm0\n\t" \
 			      "movq %%mm0, %0" \
-			      : "=X" (memd) \
-			      : "X" (mems))
+			      : "=y" (memd) \
+			      : "y" (mems))
 
 #endif
 
@@ -381,8 +381,8 @@
 #define	movq(vars, vard) \
 	__asm__ __volatile__ ("movq %1, %%mm0\n\t" \
 			      "movq %%mm0, %0" \
-			      : "=X" (vard) \
-			      : "X" (vars))
+			      : "=y" (vard) \
+			      : "y" (vars))
 
 
 /*	1x32 MOVe Doubleword
@@ -396,8 +396,8 @@
 #define	movd(vars, vard) \
 	__asm__ __volatile__ ("movd %1, %%mm0\n\t" \
 			      "movd %%mm0, %0" \
-			      : "=X" (vard) \
-			      : "X" (vars))
+			      : "=y" (vard) \
+			      : "y" (vars))
 
 
 /*	2x32, 4x16, and 8x8 Parallel ADDs


More information about the commits mailing list