]> git.pld-linux.org Git - packages/SDL.git/blob - SDL-mmx-constraints.patch
- dropped caca patch (already upstream)
[packages/SDL.git] / SDL-mmx-constraints.patch
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
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 */ \
152                               : "m" (mem))
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
This page took 0.058833 seconds and 3 git commands to generate.