added dummy function to silence compiler warning
[mesa.git] / src / mesa / x86 / mmx_blend.S
1 #include "assyntax.h"
2
3
4 #if !defined(NASM_ASSEMBLER) && !defined(MASM_ASSEMBLER)
5 #define LLBL(a) .L ## a
6 #else
7 #define LLBL(a) a
8 #endif
9
10
11 SEG_TEXT
12
13
14 ALIGNTEXT16
15 GLOBL GLNAME(gl_mmx_blend_transparency)
16
17 GLNAME( gl_mmx_blend_transparency ):
18 PUSH_L ( EBP )
19 MOV_L ( ESP, EBP )
20 SUB_L ( CONST(52), ESP )
21 PUSH_L ( EBX )
22 MOV_L ( CONST(16711680), REGOFF(-8, EBP) )
23 MOV_L ( CONST(16711680), REGOFF(-4, EBP) )
24 MOV_L ( CONST(0), REGOFF(-16, EBP) )
25 MOV_L ( CONST(-1), REGOFF(-12, EBP) )
26 MOV_L ( CONST(-1), REGOFF(-24, EBP) )
27 MOV_L ( CONST(0), REGOFF(-20, EBP) )
28 MOV_L ( REGOFF(24, EBP), EAX )
29 ADD_L ( CONST(4), EAX )
30 MOV_L ( EAX, EDX )
31 AND_L ( REGOFF(20, EBP), EDX )
32 MOV_L ( EDX, EAX )
33 AND_L ( CONST(4), EAX )
34 CMP_L ( CONST(8), EAX )
35 JNE ( LLBL(GMBT_2) )
36 MOV_L ( REGOFF(20, EBP), EAX )
37 ADD_L ( CONST(3), EAX )
38 XOR_L ( EDX, EDX )
39 MOV_B ( REGIND(EAX), DL )
40 MOV_L ( EDX, REGOFF(-32, EBP) )
41 MOV_L ( CONST(255), EAX )
42 MOV_L ( EAX, EBX )
43 SUB_L ( REGOFF(-32, EBP), EBX )
44 MOV_L ( EBX, REGOFF(-36, EBP) )
45 MOV_L ( REGOFF(20, EBP), EAX )
46 XOR_L ( EDX, EDX )
47 MOV_B ( REGIND(EAX), DL )
48 MOV_L ( EDX, EAX )
49 IMUL_L ( REGOFF(-32, EBP), EAX )
50 MOV_L ( REGOFF(24, EBP), EDX )
51 XOR_L ( ECX, ECX )
52 MOV_B ( REGIND(EDX), CL )
53 MOV_L ( ECX, EDX )
54 IMUL_L ( REGOFF(-36, EBP), EDX )
55 ADD_L ( EDX, EAX )
56 MOV_L ( EAX, EBX )
57 SAR_L ( CONST(8), EBX )
58 MOV_L ( EBX, REGOFF(-40, EBP) )
59 MOV_L ( REGOFF(20, EBP), EAX )
60 INC_L ( EAX )
61 XOR_L ( EDX, EDX )
62 MOV_B ( REGIND(EAX), DL )
63 MOV_L ( EDX, EAX )
64 IMUL_L ( REGOFF(-32, EBP), EAX )
65 MOV_L ( REGOFF(24, EBP), EDX )
66 INC_L ( EDX )
67 XOR_L ( ECX, ECX )
68 MOV_B ( REGIND(EDX), CL )
69 MOV_L ( ECX, EDX )
70 IMUL_L ( REGOFF(-36, EBP), EDX )
71 ADD_L ( EDX, EAX )
72 MOV_L ( EAX, EBX )
73 SAR_L ( CONST(8), EBX )
74 MOV_L ( EBX, REGOFF(-44, EBP) )
75 MOV_L ( REGOFF(20, EBP), EAX )
76 ADD_L ( CONST(2), EAX )
77 XOR_L ( EDX, EDX )
78 MOV_B ( REGIND(EAX), DL )
79 MOV_L ( EDX, EAX )
80 IMUL_L ( REGOFF(-32, EBP), EAX )
81 MOV_L ( REGOFF(24, EBP), EDX )
82 ADD_L ( CONST(2), EDX )
83 XOR_L ( ECX, ECX )
84 MOV_B ( REGIND(EDX), CL )
85 MOV_L ( ECX, EDX )
86 IMUL_L ( REGOFF(-36, EBP), EDX )
87 ADD_L ( EDX, EAX )
88 MOV_L ( EAX, EBX )
89 SAR_L ( CONST(8), EBX )
90 MOV_L ( EBX, REGOFF(-48, EBP) )
91 MOV_L ( REGOFF(20, EBP), EAX )
92 ADD_L ( CONST(3), EAX )
93 XOR_L ( EDX, EDX )
94 MOV_B ( REGIND(EAX), DL )
95 MOV_L ( EDX, EAX )
96 IMUL_L ( REGOFF(-32, EBP), EAX )
97 MOV_L ( REGOFF(24, EBP), EDX )
98 ADD_L ( CONST(3), EDX )
99 XOR_L ( ECX, ECX )
100 MOV_B ( REGIND(EDX), CL )
101 MOV_L ( ECX, EDX )
102 IMUL_L ( REGOFF(-36, EBP), EDX )
103 ADD_L ( EDX, EAX )
104 MOV_L ( EAX, EBX )
105 SAR_L ( CONST(8), EBX )
106 MOV_L ( EBX, REGOFF(-52, EBP) )
107 MOV_L ( REGOFF(20, EBP), EAX )
108 MOV_B ( REGOFF(-40, EBP), DL )
109 MOV_B ( DL, REGIND(EAX) )
110 MOV_L ( REGOFF(20, EBP), EAX )
111 INC_L ( EAX )
112 MOV_B ( REGOFF(-44, EBP), DL )
113 MOV_B ( DL, REGIND(EAX) )
114 MOV_L ( REGOFF(20, EBP), EAX )
115 ADD_L ( CONST(2), EAX )
116 MOV_B ( REGOFF(-48, EBP), DL )
117 MOV_B ( DL, REGIND(EAX) )
118 MOV_L ( REGOFF(20, EBP), EAX )
119 ADD_L ( CONST(3), EAX )
120 MOV_B ( REGOFF(-52, EBP), DL )
121 MOV_B ( DL, REGIND(EAX) )
122 INC_L ( REGOFF(16, EBP) )
123 ADD_L ( CONST(4), REGOFF(20, EBP) )
124 ADD_L ( CONST(4), REGOFF(24, EBP) )
125 DEC_L ( REGOFF(12, EBP) )
126 LLBL( GMBT_2 ):
127
128 CMP_L ( CONST(0), REGOFF(12, EBP) )
129 JE ( LLBL(GMBT_3) )
130 MOV_L ( CONST(0), REGOFF(-28, EBP) )
131 ALIGNTEXT4
132 LLBL( GMBT_4 ):
133
134 MOV_L ( REGOFF(12, EBP), EDX )
135 MOV_L ( EDX, EAX )
136 SHR_L ( CONST(1), EAX )
137 CMP_L ( EAX, REGOFF(-28, EBP) )
138 JB ( LLBL(GMBT_7) )
139 JMP ( LLBL(GMBT_5) )
140 ALIGNTEXT16
141 LLBL( GMBT_7 ):
142
143 MOV_L ( REGOFF(-28, EBP), EAX )
144 LEA_L ( REGDIS(0,EAX,2), EDX )
145 MOV_L ( REGOFF(16, EBP), EAX )
146 CMP_B ( CONST(0), REGBI(EAX,EDX) )
147 JE ( LLBL(GMBT_6) )
148 MOV_L ( REGOFF(-28, EBP), EAX )
149 MOV_L ( EAX, EDX )
150 LEA_L ( REGDIS(0,EDX,8), ECX )
151 MOV_L ( ECX, EAX )
152 ADD_L ( REGOFF(20, EBP), EAX )
153 MOV_L ( REGOFF(-28, EBP), EDX )
154 MOV_L ( EDX, ECX )
155 LEA_L ( REGDIS(0,ECX,8), EDX )
156 MOV_L ( EDX, ECX )
157 ADD_L ( REGOFF(24, EBP), ECX )
158
159 MOVQ ( REGIND(EAX), MM4 )
160 PXOR ( MM5, MM5 )
161 MOVQ ( MM4, MM1 )
162 MOVQ ( REGIND(ECX), MM7 )
163 PUNPCKLBW ( MM5, MM1 )
164 MOVQ ( MM7, MM6 )
165 MOVQ ( MM1, MM0 )
166 PUNPCKLBW ( MM5, MM6 )
167 MOVQ ( MM1, MM2 )
168 PSRLQ ( CONST(48), MM0 )
169 PUNPCKHBW ( MM5, MM4 )
170 PACKSSDW ( MM0, MM0 )
171 MOVQ ( MM0, MM3 )
172 PUNPCKHBW ( MM5, MM7 )
173 PSLLQ ( CONST(16), MM3 )
174 POR ( REGOFF(-8, EBP), MM0 )
175 PUNPCKLWD ( MM6, MM1 )
176 PSUBW ( MM3, MM0 )
177 PUNPCKHWD ( MM6, MM2 )
178 MOVQ ( MM4, MM3 )
179 PSRLQ ( CONST(48), MM3 )
180 PACKSSDW ( MM3, MM3 )
181 MOVQ ( MM3, MM6 )
182 POR ( REGOFF(-8, EBP), MM3 )
183 PSLLQ ( CONST(16), MM6 )
184 PSUBW ( MM6, MM3 )
185 MOVQ ( MM4, MM5 )
186 PUNPCKLWD ( MM7, MM4 )
187 PUNPCKHWD ( MM7, MM5 )
188 PMADDWD ( MM0, MM1 )
189 PMADDWD ( MM3, MM4 )
190 PMADDWD ( MM0, MM2 )
191 PMADDWD ( MM3, MM5 )
192 PSRLD ( CONST(8), MM1 )
193 PSRLD ( CONST(8), MM2 )
194 PSRLD ( CONST(8), MM4 )
195 PACKSSDW ( MM2, MM1 )
196 PSRLD ( CONST(8), MM5 )
197 PACKUSWB ( MM1, MM1 )
198 PACKSSDW ( MM5, MM4 )
199 PAND ( REGOFF(-24, EBP), MM1 )
200 PACKUSWB ( MM4, MM4 )
201 PAND ( REGOFF(-16, EBP), MM4 )
202 POR ( MM1, MM4 )
203 MOVQ ( MM4, REGIND(EAX) )
204
205
206 LLBL( GMBT_8 ):
207
208 LLBL( GMBT_6 ):
209
210 INC_L ( REGOFF(-28, EBP) )
211 JMP ( LLBL(GMBT_4) )
212 ALIGNTEXT16
213 LLBL( GMBT_5 ):
214
215
216 EMMS
217
218 LLBL( GMBT_3 ):
219
220 MOV_L ( REGOFF(12, EBP), EAX )
221 AND_L ( CONST(1), EAX )
222 TEST_L ( EAX, EAX )
223 JE ( LLBL(GMBT_9) )
224 MOV_L ( REGOFF(12, EBP), EAX )
225 LEA_L ( REGDIS(0,EAX,4), EDX )
226 MOV_L ( EDX, EAX )
227 ADD_L ( REGOFF(20, EBP), EAX )
228 LEA_L ( REGOFF(-1, EAX), EDX )
229 XOR_L ( EAX, EAX )
230 MOV_B ( REGIND(EDX), AL )
231 MOV_L ( EAX, REGOFF(-52, EBP) )
232 MOV_L ( CONST(255), EAX )
233 MOV_L ( EAX, EBX )
234 SUB_L ( REGOFF(-52, EBP), EBX )
235 MOV_L ( EBX, REGOFF(-48, EBP) )
236 MOV_L ( REGOFF(12, EBP), EAX )
237 LEA_L ( REGDIS(0,EAX,4), EDX )
238 MOV_L ( EDX, EAX )
239 ADD_L ( REGOFF(20, EBP), EAX )
240 LEA_L ( REGOFF(-4, EAX), EDX )
241 XOR_L ( ECX, ECX )
242 MOV_B ( REGIND(EDX), CL )
243 MOV_L ( ECX, EAX )
244 IMUL_L ( REGOFF(-52, EBP), EAX )
245 MOV_L ( REGOFF(12, EBP), EDX )
246 LEA_L ( REGDIS(0,EDX,4), ECX )
247 MOV_L ( ECX, EDX )
248 ADD_L ( REGOFF(24, EBP), EDX )
249 LEA_L ( REGOFF(-4, EDX), ECX )
250 XOR_L ( EDX, EDX )
251 MOV_B ( REGIND(ECX), DL )
252 MOV_L ( EDX, ECX )
253 IMUL_L ( REGOFF(-48, EBP), ECX )
254 ADD_L ( ECX, EAX )
255 MOV_L ( EAX, EBX )
256 SAR_L ( CONST(8), EBX )
257 MOV_L ( EBX, REGOFF(-44, EBP) )
258 MOV_L ( REGOFF(12, EBP), EAX )
259 LEA_L ( REGDIS(0,EAX,4), EDX )
260 MOV_L ( EDX, EAX )
261 ADD_L ( REGOFF(20, EBP), EAX )
262 LEA_L ( REGOFF(-3, EAX), EDX )
263 XOR_L ( ECX, ECX )
264 MOV_B ( REGIND(EDX), CL )
265 MOV_L ( ECX, EAX )
266 IMUL_L ( REGOFF(-52, EBP), EAX )
267 MOV_L ( REGOFF(12, EBP), EDX )
268 LEA_L ( REGDIS(0,EDX,4), ECX )
269 MOV_L ( ECX, EDX )
270 ADD_L ( REGOFF(24, EBP), EDX )
271 LEA_L ( REGOFF(-3, EDX), ECX )
272 XOR_L ( EDX, EDX )
273 MOV_B ( REGIND(ECX), DL )
274 MOV_L ( EDX, ECX )
275 IMUL_L ( REGOFF(-48, EBP), ECX )
276 ADD_L ( ECX, EAX )
277 MOV_L ( EAX, EBX )
278 SAR_L ( CONST(8), EBX )
279 MOV_L ( EBX, REGOFF(-40, EBP) )
280 MOV_L ( REGOFF(12, EBP), EAX )
281 LEA_L ( REGDIS(0,EAX,4), EDX )
282 MOV_L ( EDX, EAX )
283 ADD_L ( REGOFF(20, EBP), EAX )
284 LEA_L ( REGOFF(-2, EAX), EDX )
285 XOR_L ( ECX, ECX )
286 MOV_B ( REGIND(EDX), CL )
287 MOV_L ( ECX, EAX )
288 IMUL_L ( REGOFF(-52, EBP), EAX )
289 MOV_L ( REGOFF(12, EBP), EDX )
290 LEA_L ( REGDIS(0,EDX,4), ECX )
291 MOV_L ( ECX, EDX )
292 ADD_L ( REGOFF(24, EBP), EDX )
293 LEA_L ( REGOFF(-2, EDX), ECX )
294 XOR_L ( EDX, EDX )
295 MOV_B ( REGIND(ECX), DL )
296 MOV_L ( EDX, ECX )
297 IMUL_L ( REGOFF(-48, EBP), ECX )
298 ADD_L ( ECX, EAX )
299 MOV_L ( EAX, EBX )
300 SAR_L ( CONST(8), EBX )
301 MOV_L ( EBX, REGOFF(-36, EBP) )
302 MOV_L ( REGOFF(12, EBP), EAX )
303 LEA_L ( REGDIS(0,EAX,4), EDX )
304 MOV_L ( EDX, EAX )
305 ADD_L ( REGOFF(20, EBP), EAX )
306 LEA_L ( REGOFF(-1, EAX), EDX )
307 XOR_L ( ECX, ECX )
308 MOV_B ( REGIND(EDX), CL )
309 MOV_L ( ECX, EAX )
310 IMUL_L ( REGOFF(-52, EBP), EAX )
311 MOV_L ( REGOFF(12, EBP), EDX )
312 LEA_L ( REGDIS(0,EDX,4), ECX )
313 MOV_L ( ECX, EDX )
314 ADD_L ( REGOFF(24, EBP), EDX )
315 LEA_L ( REGOFF(-1, EDX), ECX )
316 XOR_L ( EDX, EDX )
317 MOV_B ( REGIND(ECX), DL )
318 MOV_L ( EDX, ECX )
319 IMUL_L ( REGOFF(-48, EBP), ECX )
320 ADD_L ( ECX, EAX )
321 MOV_L ( EAX, EBX )
322 SAR_L ( CONST(8), EBX )
323 MOV_L ( EBX, REGOFF(-32, EBP) )
324 MOV_L ( REGOFF(12, EBP), EAX )
325 LEA_L ( REGDIS(0,EAX,4), EDX )
326 MOV_L ( EDX, EAX )
327 ADD_L ( REGOFF(20, EBP), EAX )
328 LEA_L ( REGOFF(-4, EAX), EDX )
329 MOV_B ( REGOFF(-44, EBP), AL )
330 MOV_B ( AL, REGIND(EDX) )
331 MOV_L ( REGOFF(12, EBP), EAX )
332 LEA_L ( REGDIS(0,EAX,4), EDX )
333 MOV_L ( EDX, EAX )
334 ADD_L ( REGOFF(20, EBP), EAX )
335 LEA_L ( REGOFF(-3, EAX), EDX )
336 MOV_B ( REGOFF(-40, EBP), AL )
337 MOV_B ( AL, REGIND(EDX) )
338 MOV_L ( REGOFF(12, EBP), EAX )
339 LEA_L ( REGDIS(0,EAX,4), EDX )
340 MOV_L ( EDX, EAX )
341 ADD_L ( REGOFF(20, EBP), EAX )
342 LEA_L ( REGOFF(-2, EAX), EDX )
343 MOV_B ( REGOFF(-36, EBP), AL )
344 MOV_B ( AL, REGIND(EDX) )
345 MOV_L ( REGOFF(12, EBP), EAX )
346 LEA_L ( REGDIS(0,EAX,4), EDX )
347 MOV_L ( EDX, EAX )
348 ADD_L ( REGOFF(20, EBP), EAX )
349 LEA_L ( REGOFF(-1, EAX), EDX )
350 MOV_B ( REGOFF(-32, EBP), AL )
351 MOV_B ( AL, REGIND(EDX) )
352 LLBL( GMBT_9 ):
353
354 LLBL( GMBT_1 ):
355
356 MOV_L ( REGOFF(-56, EBP), EBX )
357 MOV_L ( EBP, ESP )
358 POP_L ( EBP )
359 RET
360
361
362
363