Rev 8210 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 8210 | Rev 9172 | ||
---|---|---|---|
Line 7... | Line 7... | ||
7 | ; licensing conditions |
7 | ; licensing conditions |
8 | ; |
8 | ; |
9 | ; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission |
9 | ; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission |
10 | ; |
10 | ; |
Line 11... | Line -... | ||
11 | - | ||
12 | 11 | ||
Line 13... | Line -... | ||
13 | BITS 32 |
- | |
14 | - | ||
15 | GLOBAL _ConvertX86p32_32BGR888 |
- | |
16 | GLOBAL _ConvertX86p32_32RGBA888 |
- | |
17 | GLOBAL _ConvertX86p32_32BGRA888 |
- | |
18 | GLOBAL _ConvertX86p32_24RGB888 |
- | |
19 | GLOBAL _ConvertX86p32_24BGR888 |
- | |
20 | GLOBAL _ConvertX86p32_16RGB565 |
- | |
21 | GLOBAL _ConvertX86p32_16BGR565 |
- | |
22 | GLOBAL _ConvertX86p32_16RGB555 |
12 | BITS 32 |
Line -... | Line 13... | ||
- | 13 | ||
- | 14 | %include "common.inc" |
|
- | 15 | ||
- | 16 | SDL_FUNC _ConvertX86p32_32BGR888 |
|
- | 17 | SDL_FUNC _ConvertX86p32_32RGBA888 |
|
- | 18 | SDL_FUNC _ConvertX86p32_32BGRA888 |
|
- | 19 | SDL_FUNC _ConvertX86p32_24RGB888 |
|
- | 20 | SDL_FUNC _ConvertX86p32_24BGR888 |
|
- | 21 | SDL_FUNC _ConvertX86p32_16RGB565 |
|
23 | GLOBAL _ConvertX86p32_16BGR555 |
22 | SDL_FUNC _ConvertX86p32_16BGR565 |
Line 24... | Line 23... | ||
24 | GLOBAL _ConvertX86p32_8RGB332 |
23 | SDL_FUNC _ConvertX86p32_16RGB555 |
Line 25... | Line -... | ||
25 | - | ||
26 | EXTERN _x86return |
24 | SDL_FUNC _ConvertX86p32_16BGR555 |
27 | 25 | SDL_FUNC _ConvertX86p32_8RGB332 |
|
28 | SECTION .text |
26 | |
29 | 27 | SECTION .text |
|
30 | 28 | ||
Line 41... | Line 39... | ||
41 | 39 | ||
42 | ; check short |
40 | ; check short |
43 | cmp ecx,BYTE 32 |
41 | cmp ecx,BYTE 32 |
Line 44... | Line 42... | ||
44 | ja .L3 |
42 | ja .L3 |
45 | 43 | ||
46 | .L1 ; short loop |
44 | .L1: ; short loop |
47 | mov edx,[esi] |
45 | mov edx,[esi] |
48 | bswap edx |
46 | bswap edx |
49 | ror edx,8 |
47 | ror edx,8 |
50 | mov [edi],edx |
48 | mov [edi],edx |
51 | add esi,BYTE 4 |
49 | add esi,BYTE 4 |
52 | add edi,BYTE 4 |
50 | add edi,BYTE 4 |
53 | dec ecx |
51 | dec ecx |
54 | jnz .L1 |
52 | jnz .L1 |
Line 55... | Line 53... | ||
55 | .L2 |
53 | .L2: |
56 | jmp _x86return |
54 | retn |
Line 57... | Line 55... | ||
57 | 55 | ||
58 | .L3 ; save ebp |
56 | .L3: ; save ebp |
59 | push ebp |
57 | push ebp |
Line 60... | Line 58... | ||
60 | 58 | ||
61 | ; unroll four times |
59 | ; unroll four times |
Line 62... | Line 60... | ||
62 | mov ebp,ecx |
60 | mov ebp,ecx |
63 | shr ebp,2 |
61 | shr ebp,2 |
Line 64... | Line 62... | ||
64 | 62 | ||
Line 65... | Line 63... | ||
65 | ; save count |
63 | ; save count |
Line 100... | Line 98... | ||
100 | ; check tail |
98 | ; check tail |
101 | pop ecx |
99 | pop ecx |
102 | and ecx,BYTE 11b |
100 | and ecx,BYTE 11b |
103 | jz .L6 |
101 | jz .L6 |
Line 104... | Line 102... | ||
104 | 102 | ||
105 | .L5 ; tail loop |
103 | .L5: ; tail loop |
106 | mov edx,[esi] |
104 | mov edx,[esi] |
107 | bswap edx |
105 | bswap edx |
108 | ror edx,8 |
106 | ror edx,8 |
109 | mov [edi],edx |
107 | mov [edi],edx |
110 | add esi,BYTE 4 |
108 | add esi,BYTE 4 |
111 | add edi,BYTE 4 |
109 | add edi,BYTE 4 |
112 | dec ecx |
110 | dec ecx |
Line 113... | Line 111... | ||
113 | jnz .L5 |
111 | jnz .L5 |
114 | 112 | ||
Line 115... | Line 113... | ||
115 | .L6 pop ebp |
113 | .L6: pop ebp |
Line 116... | Line 114... | ||
116 | jmp _x86return |
114 | retn |
117 | 115 | ||
118 | 116 | ||
Line 119... | Line 117... | ||
119 | 117 | ||
120 | 118 | ||
121 | _ConvertX86p32_32RGBA888: |
119 | _ConvertX86p32_32RGBA888: |
122 | 120 | ||
123 | ; check short |
121 | ; check short |
124 | cmp ecx,BYTE 32 |
122 | cmp ecx,BYTE 32 |
125 | ja .L3 |
123 | ja .L3 |
126 | 124 | ||
127 | .L1 ; short loop |
125 | .L1: ; short loop |
128 | mov edx,[esi] |
126 | mov edx,[esi] |
Line 129... | Line 127... | ||
129 | rol edx,8 |
127 | rol edx,8 |
130 | mov [edi],edx |
128 | mov [edi],edx |
Line 131... | Line 129... | ||
131 | add esi,BYTE 4 |
129 | add esi,BYTE 4 |
132 | add edi,BYTE 4 |
130 | add edi,BYTE 4 |
133 | dec ecx |
131 | dec ecx |
Line 134... | Line 132... | ||
134 | jnz .L1 |
132 | jnz .L1 |
135 | .L2 |
133 | .L2: |
Line 136... | Line 134... | ||
136 | jmp _x86return |
134 | retn |
137 | 135 | ||
Line 138... | Line 136... | ||
138 | .L3 ; save ebp |
136 | .L3: ; save ebp |
139 | push ebp |
137 | push ebp |
Line 172... | Line 170... | ||
172 | ; check tail |
170 | ; check tail |
173 | pop ecx |
171 | pop ecx |
174 | and ecx,BYTE 11b |
172 | and ecx,BYTE 11b |
175 | jz .L6 |
173 | jz .L6 |
Line 176... | Line 174... | ||
176 | 174 | ||
177 | .L5 ; tail loop |
175 | .L5: ; tail loop |
178 | mov edx,[esi] |
176 | mov edx,[esi] |
179 | rol edx,8 |
177 | rol edx,8 |
180 | mov [edi],edx |
178 | mov [edi],edx |
181 | add esi,BYTE 4 |
179 | add esi,BYTE 4 |
182 | add edi,BYTE 4 |
180 | add edi,BYTE 4 |
183 | dec ecx |
181 | dec ecx |
Line 184... | Line 182... | ||
184 | jnz .L5 |
182 | jnz .L5 |
185 | 183 | ||
Line 186... | Line 184... | ||
186 | .L6 pop ebp |
184 | .L6: pop ebp |
Line 187... | Line 185... | ||
187 | jmp _x86return |
185 | retn |
188 | 186 | ||
189 | 187 | ||
Line 190... | Line 188... | ||
190 | 188 | ||
191 | 189 | ||
192 | _ConvertX86p32_32BGRA888: |
190 | _ConvertX86p32_32BGRA888: |
193 | 191 | ||
194 | ; check short |
192 | ; check short |
195 | cmp ecx,BYTE 32 |
193 | cmp ecx,BYTE 32 |
196 | ja .L3 |
194 | ja .L3 |
197 | 195 | ||
198 | .L1 ; short loop |
196 | .L1: ; short loop |
199 | mov edx,[esi] |
197 | mov edx,[esi] |
Line 200... | Line 198... | ||
200 | bswap edx |
198 | bswap edx |
201 | mov [edi],edx |
199 | mov [edi],edx |
Line 202... | Line 200... | ||
202 | add esi,BYTE 4 |
200 | add esi,BYTE 4 |
203 | add edi,BYTE 4 |
201 | add edi,BYTE 4 |
204 | dec ecx |
202 | dec ecx |
Line 205... | Line 203... | ||
205 | jnz .L1 |
203 | jnz .L1 |
206 | .L2 |
204 | .L2: |
Line 207... | Line 205... | ||
207 | jmp _x86return |
205 | retn |
208 | 206 | ||
Line 209... | Line 207... | ||
209 | .L3 ; save ebp |
207 | .L3: ; save ebp |
210 | push ebp |
208 | push ebp |
Line 245... | Line 243... | ||
245 | ; check tail |
243 | ; check tail |
246 | pop ecx |
244 | pop ecx |
247 | and ecx,BYTE 11b |
245 | and ecx,BYTE 11b |
248 | jz .L6 |
246 | jz .L6 |
Line 249... | Line 247... | ||
249 | 247 | ||
250 | .L5 ; tail loop |
248 | .L5: ; tail loop |
251 | mov edx,[esi] |
249 | mov edx,[esi] |
252 | bswap edx |
250 | bswap edx |
253 | mov [edi],edx |
251 | mov [edi],edx |
254 | add esi,BYTE 4 |
252 | add esi,BYTE 4 |
255 | add edi,BYTE 4 |
253 | add edi,BYTE 4 |
256 | dec ecx |
254 | dec ecx |
Line 257... | Line 255... | ||
257 | jnz .L5 |
255 | jnz .L5 |
258 | 256 | ||
Line 259... | Line 257... | ||
259 | .L6 pop ebp |
257 | .L6: pop ebp |
Line 268... | Line 266... | ||
268 | 266 | ||
269 | ; check short |
267 | ; check short |
270 | cmp ecx,BYTE 32 |
268 | cmp ecx,BYTE 32 |
Line 271... | Line 269... | ||
271 | ja .L3 |
269 | ja .L3 |
272 | 270 | ||
273 | .L1 ; short loop |
271 | .L1: ; short loop |
274 | mov al,[esi] |
272 | mov al,[esi] |
275 | mov bl,[esi+1] |
273 | mov bl,[esi+1] |
276 | mov dl,[esi+2] |
274 | mov dl,[esi+2] |
277 | mov [edi],al |
275 | mov [edi],al |
278 | mov [edi+1],bl |
276 | mov [edi+1],bl |
279 | mov [edi+2],dl |
277 | mov [edi+2],dl |
280 | add esi,BYTE 4 |
278 | add esi,BYTE 4 |
281 | add edi,BYTE 3 |
279 | add edi,BYTE 3 |
282 | dec ecx |
280 | dec ecx |
283 | jnz .L1 |
281 | jnz .L1 |
Line 284... | Line 282... | ||
284 | .L2 |
282 | .L2: |
285 | jmp _x86return |
283 | retn |
286 | 284 | ||
287 | .L3 ; head |
285 | .L3: ; head |
288 | mov edx,edi |
286 | mov edx,edi |
289 | and edx,BYTE 11b |
287 | and edx,BYTE 11b |
Line 297... | Line 295... | ||
297 | add esi,BYTE 4 |
295 | add esi,BYTE 4 |
298 | add edi,BYTE 3 |
296 | add edi,BYTE 3 |
299 | dec ecx |
297 | dec ecx |
300 | jmp SHORT .L3 |
298 | jmp SHORT .L3 |
Line 301... | Line 299... | ||
301 | 299 | ||
302 | .L4 ; unroll 4 times |
300 | .L4: ; unroll 4 times |
303 | push ebp |
301 | push ebp |
304 | mov ebp,ecx |
302 | mov ebp,ecx |
Line 305... | Line 303... | ||
305 | shr ebp,2 |
303 | shr ebp,2 |
306 | 304 | ||
Line 307... | Line 305... | ||
307 | ; save count |
305 | ; save count |
308 | push ecx |
306 | push ecx |
Line 309... | Line 307... | ||
309 | 307 | ||
310 | .L5 mov eax,[esi] ; first dword eax = [A][R][G][B] |
308 | .L5: mov eax,[esi] ; first dword eax = [A][R][G][B] |
Line 339... | Line 337... | ||
339 | ; check tail |
337 | ; check tail |
340 | pop ecx |
338 | pop ecx |
341 | and ecx,BYTE 11b |
339 | and ecx,BYTE 11b |
342 | jz .L7 |
340 | jz .L7 |
Line 343... | Line 341... | ||
343 | 341 | ||
344 | .L6 ; tail loop |
342 | .L6: ; tail loop |
345 | mov al,[esi] |
343 | mov al,[esi] |
346 | mov bl,[esi+1] |
344 | mov bl,[esi+1] |
347 | mov dl,[esi+2] |
345 | mov dl,[esi+2] |
348 | mov [edi],al |
346 | mov [edi],al |
Line 351... | Line 349... | ||
351 | add esi,BYTE 4 |
349 | add esi,BYTE 4 |
352 | add edi,BYTE 3 |
350 | add edi,BYTE 3 |
353 | dec ecx |
351 | dec ecx |
354 | jnz .L6 |
352 | jnz .L6 |
Line 355... | Line 353... | ||
355 | 353 | ||
356 | .L7 pop ebp |
354 | .L7: pop ebp |
Line 357... | Line 355... | ||
357 | jmp _x86return |
355 | retn |
Line 365... | Line 363... | ||
365 | 363 | ||
366 | ; check short |
364 | ; check short |
367 | cmp ecx,BYTE 32 |
365 | cmp ecx,BYTE 32 |
Line 368... | Line -... | ||
368 | ja .L3 |
- | |
369 | 366 | ja .L3 |
|
370 | 367 | ||
371 | .L1 ; short loop |
368 | .L1: ; short loop |
372 | mov dl,[esi] |
369 | mov dl,[esi] |
373 | mov bl,[esi+1] |
370 | mov bl,[esi+1] |
374 | mov al,[esi+2] |
371 | mov al,[esi+2] |
375 | mov [edi],al |
372 | mov [edi],al |
376 | mov [edi+1],bl |
373 | mov [edi+1],bl |
377 | mov [edi+2],dl |
374 | mov [edi+2],dl |
378 | add esi,BYTE 4 |
375 | add esi,BYTE 4 |
379 | add edi,BYTE 3 |
376 | add edi,BYTE 3 |
380 | dec ecx |
377 | dec ecx |
381 | jnz .L1 |
378 | jnz .L1 |
Line 382... | Line 379... | ||
382 | .L2 |
379 | .L2: |
383 | jmp _x86return |
380 | retn |
384 | 381 | ||
385 | .L3 ; head |
382 | .L3: ; head |
386 | mov edx,edi |
383 | mov edx,edi |
387 | and edx,BYTE 11b |
384 | and edx,BYTE 11b |
Line 395... | Line 392... | ||
395 | add esi,BYTE 4 |
392 | add esi,BYTE 4 |
396 | add edi,BYTE 3 |
393 | add edi,BYTE 3 |
397 | dec ecx |
394 | dec ecx |
398 | jmp SHORT .L3 |
395 | jmp SHORT .L3 |
Line 399... | Line 396... | ||
399 | 396 | ||
400 | .L4 ; unroll 4 times |
397 | .L4: ; unroll 4 times |
401 | push ebp |
398 | push ebp |
402 | mov ebp,ecx |
399 | mov ebp,ecx |
Line 403... | Line 400... | ||
403 | shr ebp,2 |
400 | shr ebp,2 |
404 | 401 | ||
Line 405... | Line 402... | ||
405 | ; save count |
402 | ; save count |
406 | push ecx |
403 | push ecx |
407 | 404 | ||
Line 408... | Line 405... | ||
408 | .L5 |
405 | .L5: |
Line 439... | Line 436... | ||
439 | ; check tail |
436 | ; check tail |
440 | pop ecx |
437 | pop ecx |
441 | and ecx,BYTE 11b |
438 | and ecx,BYTE 11b |
442 | jz .L7 |
439 | jz .L7 |
Line 443... | Line 440... | ||
443 | 440 | ||
444 | .L6 ; tail loop |
441 | .L6: ; tail loop |
445 | mov dl,[esi] |
442 | mov dl,[esi] |
446 | mov bl,[esi+1] |
443 | mov bl,[esi+1] |
447 | mov al,[esi+2] |
444 | mov al,[esi+2] |
448 | mov [edi],al |
445 | mov [edi],al |
Line 451... | Line 448... | ||
451 | add esi,BYTE 4 |
448 | add esi,BYTE 4 |
452 | add edi,BYTE 3 |
449 | add edi,BYTE 3 |
453 | dec ecx |
450 | dec ecx |
454 | jnz .L6 |
451 | jnz .L6 |
Line 455... | Line 452... | ||
455 | 452 | ||
456 | .L7 |
453 | .L7: |
457 | pop ebp |
454 | pop ebp |
Line 458... | Line 455... | ||
458 | jmp _x86return |
455 | retn |
Line 465... | Line 462... | ||
465 | _ConvertX86p32_16RGB565: |
462 | _ConvertX86p32_16RGB565: |
466 | ; check short |
463 | ; check short |
467 | cmp ecx,BYTE 16 |
464 | cmp ecx,BYTE 16 |
468 | ja .L3 |
465 | ja .L3 |
Line 469... | Line 466... | ||
469 | 466 | ||
470 | .L1 ; short loop |
467 | .L1: ; short loop |
471 | mov bl,[esi+0] ; blue |
468 | mov bl,[esi+0] ; blue |
472 | mov al,[esi+1] ; green |
469 | mov al,[esi+1] ; green |
473 | mov ah,[esi+2] ; red |
470 | mov ah,[esi+2] ; red |
474 | shr ah,3 |
471 | shr ah,3 |
Line 482... | Line 479... | ||
482 | add edi,BYTE 2 |
479 | add edi,BYTE 2 |
483 | dec ecx |
480 | dec ecx |
484 | jnz .L1 |
481 | jnz .L1 |
Line 485... | Line 482... | ||
485 | 482 | ||
486 | .L2: ; End of short loop |
483 | .L2: ; End of short loop |
Line 487... | Line 484... | ||
487 | jmp _x86return |
484 | retn |
488 | 485 | ||
489 | 486 | ||
490 | .L3 ; head |
487 | .L3: ; head |
Line 491... | Line 488... | ||
491 | mov ebx,edi |
488 | mov ebx,edi |
Line 568... | Line 565... | ||
568 | mov [edi+1],ah |
565 | mov [edi+1],ah |
569 | add esi,BYTE 4 |
566 | add esi,BYTE 4 |
570 | add edi,BYTE 2 |
567 | add edi,BYTE 2 |
Line 571... | Line 568... | ||
571 | 568 | ||
572 | .L7: |
569 | .L7: |
Line 573... | Line 570... | ||
573 | jmp _x86return |
570 | retn |
Line 581... | Line 578... | ||
581 | 578 | ||
582 | ; check short |
579 | ; check short |
583 | cmp ecx,BYTE 16 |
580 | cmp ecx,BYTE 16 |
Line 584... | Line 581... | ||
584 | ja .L3 |
581 | ja .L3 |
585 | 582 | ||
586 | .L1 ; short loop |
583 | .L1: ; short loop |
587 | mov ah,[esi+0] ; blue |
584 | mov ah,[esi+0] ; blue |
588 | mov al,[esi+1] ; green |
585 | mov al,[esi+1] ; green |
589 | mov bl,[esi+2] ; red |
586 | mov bl,[esi+2] ; red |
Line 596... | Line 593... | ||
596 | mov [edi+1],ah |
593 | mov [edi+1],ah |
597 | add esi,BYTE 4 |
594 | add esi,BYTE 4 |
598 | add edi,BYTE 2 |
595 | add edi,BYTE 2 |
599 | dec ecx |
596 | dec ecx |
600 | jnz .L1 |
597 | jnz .L1 |
601 | .L2 |
598 | .L2: |
602 | jmp _x86return |
599 | retn |
Line 603... | Line 600... | ||
603 | 600 | ||
604 | .L3 ; head |
601 | .L3: ; head |
605 | mov ebx,edi |
602 | mov ebx,edi |
606 | and ebx,BYTE 11b |
603 | and ebx,BYTE 11b |
607 | jz .L4 |
604 | jz .L4 |
608 | mov ah,[esi+0] ; blue |
605 | mov ah,[esi+0] ; blue |
Line 617... | Line 614... | ||
617 | mov [edi+1],ah |
614 | mov [edi+1],ah |
618 | add esi,BYTE 4 |
615 | add esi,BYTE 4 |
619 | add edi,BYTE 2 |
616 | add edi,BYTE 2 |
620 | dec ecx |
617 | dec ecx |
Line 621... | Line 618... | ||
621 | 618 | ||
622 | .L4 ; save count |
619 | .L4: ; save count |
Line 623... | Line 620... | ||
623 | push ecx |
620 | push ecx |
624 | 621 | ||
Line 631... | Line 628... | ||
631 | 628 | ||
632 | ; negative count |
629 | ; negative count |
633 | neg ecx |
630 | neg ecx |
Line 634... | Line 631... | ||
634 | jmp SHORT .L6 |
631 | jmp SHORT .L6 |
635 | 632 | ||
636 | .L5 |
633 | .L5: |
637 | mov [edi+ecx*4-4],eax |
634 | mov [edi+ecx*4-4],eax |
Line 638... | Line 635... | ||
638 | .L6 |
635 | .L6: |
639 | mov edx,[esi+ecx*8+4] |
636 | mov edx,[esi+ecx*8+4] |
Line 681... | Line 678... | ||
681 | mov [edi+0],al |
678 | mov [edi+0],al |
682 | mov [edi+1],ah |
679 | mov [edi+1],ah |
683 | add esi,BYTE 4 |
680 | add esi,BYTE 4 |
684 | add edi,BYTE 2 |
681 | add edi,BYTE 2 |
Line 685... | Line 682... | ||
685 | 682 | ||
686 | .L7 |
683 | .L7: |
Line 687... | Line 684... | ||
687 | jmp _x86return |
684 | retn |
Line 695... | Line 692... | ||
695 | 692 | ||
696 | ; check short |
693 | ; check short |
697 | cmp ecx,BYTE 16 |
694 | cmp ecx,BYTE 16 |
Line 698... | Line 695... | ||
698 | ja .L3 |
695 | ja .L3 |
699 | 696 | ||
700 | .L1 ; short loop |
697 | .L1: ; short loop |
701 | mov bl,[esi+0] ; blue |
698 | mov bl,[esi+0] ; blue |
702 | mov al,[esi+1] ; green |
699 | mov al,[esi+1] ; green |
703 | mov ah,[esi+2] ; red |
700 | mov ah,[esi+2] ; red |
Line 710... | Line 707... | ||
710 | mov [edi+1],ah |
707 | mov [edi+1],ah |
711 | add esi,BYTE 4 |
708 | add esi,BYTE 4 |
712 | add edi,BYTE 2 |
709 | add edi,BYTE 2 |
713 | dec ecx |
710 | dec ecx |
714 | jnz .L1 |
711 | jnz .L1 |
715 | .L2 |
712 | .L2: |
716 | jmp _x86return |
713 | retn |
Line 717... | Line 714... | ||
717 | 714 | ||
718 | .L3 ; head |
715 | .L3: ; head |
719 | mov ebx,edi |
716 | mov ebx,edi |
720 | and ebx,BYTE 11b |
717 | and ebx,BYTE 11b |
721 | jz .L4 |
718 | jz .L4 |
722 | mov bl,[esi+0] ; blue |
719 | mov bl,[esi+0] ; blue |
Line 731... | Line 728... | ||
731 | mov [edi+1],ah |
728 | mov [edi+1],ah |
732 | add esi,BYTE 4 |
729 | add esi,BYTE 4 |
733 | add edi,BYTE 2 |
730 | add edi,BYTE 2 |
734 | dec ecx |
731 | dec ecx |
Line 735... | Line 732... | ||
735 | 732 | ||
736 | .L4 ; save count |
733 | .L4: ; save count |
Line 737... | Line 734... | ||
737 | push ecx |
734 | push ecx |
738 | 735 | ||
Line 745... | Line 742... | ||
745 | 742 | ||
746 | ; negative counter |
743 | ; negative counter |
747 | neg ecx |
744 | neg ecx |
Line 748... | Line 745... | ||
748 | jmp SHORT .L6 |
745 | jmp SHORT .L6 |
749 | 746 | ||
750 | .L5 |
747 | .L5: |
751 | mov [edi+ecx*4-4],eax |
748 | mov [edi+ecx*4-4],eax |
Line 752... | Line 749... | ||
752 | .L6 |
749 | .L6: |
753 | mov eax,[esi+ecx*8] |
750 | mov eax,[esi+ecx*8] |
Line 792... | Line 789... | ||
792 | mov [edi+0],al |
789 | mov [edi+0],al |
793 | mov [edi+1],ah |
790 | mov [edi+1],ah |
794 | add esi,BYTE 4 |
791 | add esi,BYTE 4 |
795 | add edi,BYTE 2 |
792 | add edi,BYTE 2 |
Line 796... | Line 793... | ||
796 | 793 | ||
797 | .L7 |
794 | .L7: |
Line 798... | Line 795... | ||
798 | jmp _x86return |
795 | retn |
Line 807... | Line 804... | ||
807 | ; check short |
804 | ; check short |
808 | cmp ecx,BYTE 16 |
805 | cmp ecx,BYTE 16 |
809 | ja .L3 |
806 | ja .L3 |
Line 810... | Line 807... | ||
810 | 807 | ||
811 | 808 | ||
812 | .L1 ; short loop |
809 | .L1: ; short loop |
813 | mov ah,[esi+0] ; blue |
810 | mov ah,[esi+0] ; blue |
814 | mov al,[esi+1] ; green |
811 | mov al,[esi+1] ; green |
815 | mov bl,[esi+2] ; red |
812 | mov bl,[esi+2] ; red |
Line 822... | Line 819... | ||
822 | mov [edi+1],ah |
819 | mov [edi+1],ah |
823 | add esi,BYTE 4 |
820 | add esi,BYTE 4 |
824 | add edi,BYTE 2 |
821 | add edi,BYTE 2 |
825 | dec ecx |
822 | dec ecx |
826 | jnz .L1 |
823 | jnz .L1 |
827 | .L2 |
824 | .L2: |
828 | jmp _x86return |
825 | retn |
Line 829... | Line 826... | ||
829 | 826 | ||
830 | .L3 ; head |
827 | .L3: ; head |
831 | mov ebx,edi |
828 | mov ebx,edi |
832 | and ebx,BYTE 11b |
829 | and ebx,BYTE 11b |
833 | jz .L4 |
830 | jz .L4 |
834 | mov ah,[esi+0] ; blue |
831 | mov ah,[esi+0] ; blue |
Line 843... | Line 840... | ||
843 | mov [edi+1],ah |
840 | mov [edi+1],ah |
844 | add esi,BYTE 4 |
841 | add esi,BYTE 4 |
845 | add edi,BYTE 2 |
842 | add edi,BYTE 2 |
846 | dec ecx |
843 | dec ecx |
Line 847... | Line 844... | ||
847 | 844 | ||
848 | .L4 ; save count |
845 | .L4: ; save count |
Line 849... | Line 846... | ||
849 | push ecx |
846 | push ecx |
850 | 847 | ||
Line 857... | Line 854... | ||
857 | 854 | ||
858 | ; negative counter |
855 | ; negative counter |
859 | neg ecx |
856 | neg ecx |
Line 860... | Line 857... | ||
860 | jmp SHORT .L6 |
857 | jmp SHORT .L6 |
861 | 858 | ||
862 | .L5 |
859 | .L5: |
863 | mov [edi+ecx*4-4],eax |
860 | mov [edi+ecx*4-4],eax |
Line 864... | Line 861... | ||
864 | .L6 |
861 | .L6: |
865 | mov edx,[esi+ecx*8+4] |
862 | mov edx,[esi+ecx*8+4] |
Line 907... | Line 904... | ||
907 | mov [edi+0],al |
904 | mov [edi+0],al |
908 | mov [edi+1],ah |
905 | mov [edi+1],ah |
909 | add esi,BYTE 4 |
906 | add esi,BYTE 4 |
910 | add edi,BYTE 2 |
907 | add edi,BYTE 2 |
Line 911... | Line 908... | ||
911 | 908 | ||
912 | .L7 |
909 | .L7: |
Line 920... | Line 917... | ||
920 | ;; This routine writes FOUR pixels at once (dword) and then, if they exist |
917 | ;; This routine writes FOUR pixels at once (dword) and then, if they exist |
921 | ;; the trailing three pixels |
918 | ;; the trailing three pixels |
922 | _ConvertX86p32_8RGB332: |
919 | _ConvertX86p32_8RGB332: |
Line 923... | Line 920... | ||
923 | 920 | ||
924 | 921 | ||
Line 925... | Line 922... | ||
925 | .L_ALIGNED |
922 | .L_ALIGNED: |
926 | push ecx |
923 | push ecx |
Line 1038... | Line 1035... | ||
1038 | 1035 | ||
1039 | dec ecx |
1036 | dec ecx |
Line 1040... | Line 1037... | ||
1040 | jnz .L3 |
1037 | jnz .L3 |
1041 | 1038 | ||
- | 1039 | .L4: |
|
- | 1040 | retn |
|
- | 1041 | ||
- | 1042 | %ifidn __OUTPUT_FORMAT__,elf32 |