1 --- SDL-1.2.7/src/video/mmx.h.orig 2003-08-22 07:51:19.000000000 +0200
2 +++ SDL-1.2.7/src/video/mmx.h 2003-11-09 13:49:35.270218296 +0100
4 printf(#op "_i2r(" #imm "=0x%08x%08x, ", \
5 mmx_trace.d[1], mmx_trace.d[0]); \
6 __asm__ __volatile__ ("movq %%" #reg ", %0" \
10 printf(#reg "=0x%08x%08x) => ", \
11 mmx_trace.d[1], mmx_trace.d[0]); \
12 __asm__ __volatile__ (#op " %0, %%" #reg \
16 __asm__ __volatile__ ("movq %%" #reg ", %0" \
17 - : "=X" (mmx_trace) \
18 + : "=m" (mmx_trace) \
19 + : /* nothing */ ); \
20 + printf(#reg "=0x%08x%08x\n", \
21 + mmx_trace.d[1], mmx_trace.d[0]); \
24 +/* 32 bits or less */
25 +#define mmx_m2r32(op, mem, reg) \
28 + mmx_trace = (mem); \
29 + printf(#op "_m2r(" #mem "=0x%08x%08x, ", \
30 + mmx_trace.d[1], mmx_trace.d[0]); \
31 + __asm__ __volatile__ ("movq %%" #reg ", %0" \
32 + : "=m" (mmx_trace) \
33 + : /* nothing */ ); \
34 + printf(#reg "=0x%08x%08x) => ", \
35 + mmx_trace.d[1], mmx_trace.d[0]); \
36 + __asm__ __volatile__ (#op " %0, %%" #reg \
39 + __asm__ __volatile__ ("movq %%" #reg ", %0" \
40 + : "=m" (mmx_trace) \
42 printf(#reg "=0x%08x%08x\n", \
43 mmx_trace.d[1], mmx_trace.d[0]); \
45 printf(#op "_m2r(" #mem "=0x%08x%08x, ", \
46 mmx_trace.d[1], mmx_trace.d[0]); \
47 __asm__ __volatile__ ("movq %%" #reg ", %0" \
48 - : "=X" (mmx_trace) \
49 + : "=m" (mmx_trace) \
51 printf(#reg "=0x%08x%08x) => ", \
52 mmx_trace.d[1], mmx_trace.d[0]); \
53 __asm__ __volatile__ (#op " %0, %%" #reg \
57 __asm__ __volatile__ ("movq %%" #reg ", %0" \
58 - : "=X" (mmx_trace) \
59 + : "=m" (mmx_trace) \
61 printf(#reg "=0x%08x%08x\n", \
62 mmx_trace.d[1], mmx_trace.d[0]); \
65 +/* 32 bits or less */
66 +#define mmx_r2m32(op, reg, mem) \
69 + __asm__ __volatile__ ("movq %%" #reg ", %0" \
70 + : "=m" (mmx_trace) \
71 + : /* nothing */ ); \
72 + printf(#op "_r2m(" #reg "=0x%08x%08x, ", \
73 + mmx_trace.d[1], mmx_trace.d[0]); \
74 + mmx_trace = (mem); \
75 + printf(#mem "=0x%08x%08x) => ", \
76 + mmx_trace.d[1], mmx_trace.d[0]); \
77 + __asm__ __volatile__ (#op " %%" #reg ", %0" \
79 + : /* nothing */ ); \
80 + mmx_trace = (mem); \
81 + printf(#mem "=0x%08x%08x\n", \
82 + mmx_trace.d[1], mmx_trace.d[0]); \
85 #define mmx_r2m(op, reg, mem) \
88 __asm__ __volatile__ ("movq %%" #reg ", %0" \
89 - : "=X" (mmx_trace) \
90 + : "=m" (mmx_trace) \
92 printf(#op "_r2m(" #reg "=0x%08x%08x, ", \
93 mmx_trace.d[1], mmx_trace.d[0]); \
95 printf(#mem "=0x%08x%08x) => ", \
96 mmx_trace.d[1], mmx_trace.d[0]); \
97 __asm__ __volatile__ (#op " %%" #reg ", %0" \
102 printf(#mem "=0x%08x%08x\n", \
103 @@ -304,18 +346,18 @@
106 __asm__ __volatile__ ("movq %%" #regs ", %0" \
107 - : "=X" (mmx_trace) \
108 + : "=m" (mmx_trace) \
110 printf(#op "_r2r(" #regs "=0x%08x%08x, ", \
111 mmx_trace.d[1], mmx_trace.d[0]); \
112 __asm__ __volatile__ ("movq %%" #regd ", %0" \
113 - : "=X" (mmx_trace) \
114 + : "=m" (mmx_trace) \
116 printf(#regd "=0x%08x%08x) => ", \
117 mmx_trace.d[1], mmx_trace.d[0]); \
118 __asm__ __volatile__ (#op " %" #regs ", %" #regd); \
119 __asm__ __volatile__ ("movq %%" #regd ", %0" \
120 - : "=X" (mmx_trace) \
121 + : "=m" (mmx_trace) \
123 printf(#regd "=0x%08x%08x\n", \
124 mmx_trace.d[1], mmx_trace.d[0]); \
126 __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
127 #op " %1, %%mm0\n\t" \
133 mmx_trace = (memd); \
134 printf(#memd "=0x%08x%08x\n", \
135 mmx_trace.d[1], mmx_trace.d[0]); \
136 @@ -348,16 +390,28 @@
137 #define mmx_i2r(op, imm, reg) \
138 __asm__ __volatile__ (#op " %0, %%" #reg \
143 +/* 32 bits or less */
144 +#define mmx_m2r32(op, mem, reg) \
145 + __asm__ __volatile__ (#op " %0, %%" #reg \
149 #define mmx_m2r(op, mem, reg) \
150 __asm__ __volatile__ (#op " %0, %%" #reg \
154 +/* 32 bits or less */
155 +#define mmx_r2m32(op, reg, mem) \
156 + __asm__ __volatile__ (#op " %%" #reg ", %0" \
160 #define mmx_r2m(op, reg, mem) \
161 __asm__ __volatile__ (#op " %%" #reg ", %0" \
166 #define mmx_r2r(op, regs, regd) \
168 __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
169 #op " %1, %%mm0\n\t" \
179 #define movq(vars, vard) \
180 __asm__ __volatile__ ("movq %1, %%mm0\n\t" \
188 /* 1x32 MOVe Doubleword
189 @@ -392,14 +446,14 @@
190 but is most useful for moving things between
191 mmx registers and ordinary registers)
193 -#define movd_m2r(var, reg) mmx_m2r(movd, var, reg)
194 -#define movd_r2m(reg, var) mmx_r2m(movd, reg, var)
195 +#define movd_m2r(var, reg) mmx_m2r32(movd, var, reg)
196 +#define movd_r2m(reg, var) mmx_r2m32(movd, reg, var)
197 #define movd_r2r(regs, regd) mmx_r2r(movd, regs, regd)
198 #define movd(vars, vard) \
199 __asm__ __volatile__ ("movd %1, %%mm0\n\t" \
207 /* 2x32, 4x16, and 8x8 Parallel ADDs