]>
Commit | Line | Data |
---|---|---|
5d50ba8f JB |
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 | |
b861b88a JB |
3 | @@ -246,15 +246,37 @@ |
4 | printf(#op "_i2r(" #imm "=0x%08x%08x, ", \ | |
5 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
6 | __asm__ __volatile__ ("movq %%" #reg ", %0" \ | |
7 | - : "=X" (mmx_trace) \ | |
8 | + : "=m" (mmx_trace) \ | |
9 | : /* nothing */ ); \ | |
10 | printf(#reg "=0x%08x%08x) => ", \ | |
11 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
12 | __asm__ __volatile__ (#op " %0, %%" #reg \ | |
13 | : /* nothing */ \ | |
14 | - : "X" (imm)); \ | |
15 | + : "i" (imm)); \ | |
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]); \ | |
22 | + } | |
23 | + | |
24 | +/* 32 bits or less */ | |
25 | +#define mmx_m2r32(op, mem, reg) \ | |
26 | + { \ | |
27 | + mmx_t mmx_trace; \ | |
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 \ | |
37 | + : /* nothing */ \ | |
38 | + : "mr" (mem)); \ | |
39 | + __asm__ __volatile__ ("movq %%" #reg ", %0" \ | |
40 | + : "=m" (mmx_trace) \ | |
41 | : /* nothing */ ); \ | |
42 | printf(#reg "=0x%08x%08x\n", \ | |
43 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
44 | @@ -267,25 +289,45 @@ | |
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) \ | |
50 | : /* nothing */ ); \ | |
51 | printf(#reg "=0x%08x%08x) => ", \ | |
52 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
53 | __asm__ __volatile__ (#op " %0, %%" #reg \ | |
54 | : /* nothing */ \ | |
55 | - : "X" (mem)); \ | |
56 | + : "m" (mem)); \ | |
57 | __asm__ __volatile__ ("movq %%" #reg ", %0" \ | |
58 | - : "=X" (mmx_trace) \ | |
59 | + : "=m" (mmx_trace) \ | |
60 | : /* nothing */ ); \ | |
61 | printf(#reg "=0x%08x%08x\n", \ | |
62 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
63 | } | |
64 | ||
65 | +/* 32 bits or less */ | |
66 | +#define mmx_r2m32(op, reg, mem) \ | |
67 | + { \ | |
68 | + mmx_t mmx_trace; \ | |
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" \ | |
78 | + : "=mr" (mem) \ | |
79 | + : /* nothing */ ); \ | |
80 | + mmx_trace = (mem); \ | |
81 | + printf(#mem "=0x%08x%08x\n", \ | |
82 | + mmx_trace.d[1], mmx_trace.d[0]); \ | |
83 | + } | |
84 | + | |
85 | #define mmx_r2m(op, reg, mem) \ | |
86 | { \ | |
87 | mmx_t mmx_trace; \ | |
88 | __asm__ __volatile__ ("movq %%" #reg ", %0" \ | |
89 | - : "=X" (mmx_trace) \ | |
90 | + : "=m" (mmx_trace) \ | |
91 | : /* nothing */ ); \ | |
92 | printf(#op "_r2m(" #reg "=0x%08x%08x, ", \ | |
93 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
94 | @@ -293,7 +335,7 @@ | |
95 | printf(#mem "=0x%08x%08x) => ", \ | |
96 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
97 | __asm__ __volatile__ (#op " %%" #reg ", %0" \ | |
98 | - : "=X" (mem) \ | |
99 | + : "=m" (mem) \ | |
100 | : /* nothing */ ); \ | |
101 | mmx_trace = (mem); \ | |
102 | printf(#mem "=0x%08x%08x\n", \ | |
103 | @@ -304,18 +346,18 @@ | |
104 | { \ | |
105 | mmx_t mmx_trace; \ | |
106 | __asm__ __volatile__ ("movq %%" #regs ", %0" \ | |
107 | - : "=X" (mmx_trace) \ | |
108 | + : "=m" (mmx_trace) \ | |
109 | : /* nothing */ ); \ | |
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) \ | |
115 | : /* nothing */ ); \ | |
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) \ | |
122 | : /* nothing */ ); \ | |
123 | printf(#regd "=0x%08x%08x\n", \ | |
124 | mmx_trace.d[1], mmx_trace.d[0]); \ | |
125 | @@ -333,8 +375,8 @@ | |
126 | __asm__ __volatile__ ("movq %0, %%mm0\n\t" \ | |
127 | #op " %1, %%mm0\n\t" \ | |
128 | "movq %%mm0, %0" \ | |
129 | - : "=X" (memd) \ | |
130 | - : "X" (mems)); \ | |
131 | + : "=my" (memd) \ | |
132 | + : "my" (mems)); \ | |
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 \ | |
139 | : /* nothing */ \ | |
140 | - : "X" (imm) ) | |
141 | + : "i" (imm) ) | |
142 | + | |
143 | +/* 32 bits or less */ | |
144 | +#define mmx_m2r32(op, mem, reg) \ | |
145 | + __asm__ __volatile__ (#op " %0, %%" #reg \ | |
146 | + : /* nothing */ \ | |
147 | + : "mr" (mem)) | |
148 | ||
149 | #define mmx_m2r(op, mem, reg) \ | |
150 | __asm__ __volatile__ (#op " %0, %%" #reg \ | |
151 | : /* nothing */ \ | |
5d50ba8f | 152 | : "m" (mem)) |
b861b88a JB |
153 | + |
154 | +/* 32 bits or less */ | |
155 | +#define mmx_r2m32(op, reg, mem) \ | |
156 | + __asm__ __volatile__ (#op " %%" #reg ", %0" \ | |
157 | + : "=mr" (mem) \ | |
158 | + : /* nothing */ ) | |
159 | ||
160 | #define mmx_r2m(op, reg, mem) \ | |
161 | __asm__ __volatile__ (#op " %%" #reg ", %0" \ | |
162 | - : "=X" (mem) \ | |
163 | + : "=m" (mem) \ | |
164 | : /* nothing */ ) | |
165 | ||
166 | #define mmx_r2r(op, regs, regd) \ | |
167 | @@ -367,8 +421,8 @@ | |
168 | __asm__ __volatile__ ("movq %0, %%mm0\n\t" \ | |
169 | #op " %1, %%mm0\n\t" \ | |
170 | "movq %%mm0, %0" \ | |
171 | - : "=X" (memd) \ | |
172 | - : "X" (mems)) | |
173 | + : "=my" (memd) \ | |
174 | + : "my" (mems)) | |
175 | ||
176 | #endif | |
177 | ||
178 | @@ -383,8 +437,8 @@ | |
179 | #define movq(vars, vard) \ | |
180 | __asm__ __volatile__ ("movq %1, %%mm0\n\t" \ | |
181 | "movq %%mm0, %0" \ | |
182 | - : "=X" (vard) \ | |
183 | - : "X" (vars)) | |
184 | + : "=my" (vard) \ | |
185 | + : "my" (vars)) | |
186 | ||
187 | ||
188 | /* 1x32 MOVe Doubleword | |
189 | @@ -392,14 +446,14 @@ | |
190 | but is most useful for moving things between | |
191 | mmx registers and ordinary registers) | |
192 | */ | |
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" \ | |
200 | "movd %%mm0, %0" \ | |
201 | - : "=X" (vard) \ | |
202 | - : "X" (vars)) | |
203 | + : "=mr" (vard) \ | |
204 | + : "mr" (vars)) | |
205 | ||
206 | ||
207 | /* 2x32, 4x16, and 8x8 Parallel ADDs |