• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1;
2; mmx format converter main loops for HERMES
3; Some routines Copyright (c) 1998 Christian Nentwich (c.nentwich@cs.ucl.ac.uk)
4; This source code is licensed under the GNU LGPL
5;
6; Please refer to the file COPYING.LIB contained in the distribution for
7; licensing conditions
8;
9
10BITS 32
11
12%include "common.inc"
13
14SDL_FUNC _ConvertMMX
15
16SECTION .text
17
18;; _ConvertMMX:
19;; [ESP+8] ConverterInfo*
20;; --------------------------------------------------------------------------
21;; ConverterInfo (ebp+..)
22;;   0:	void *s_pixels
23;;   4:	int s_width
24;;   8:	int s_height
25;;  12:	int s_add
26;;  16:	void *d_pixels
27;;  20:	int d_width
28;;  24:	int d_height
29;;  28:	int d_add
30;;  32:	void (*converter_function)()
31;;  36: int32 *lookup
32
33_ConvertMMX:
34	push ebp
35	mov ebp,esp
36
37; Save the registers used by the blitters, necessary for optimized code
38	pusha
39
40	mov eax,[ebp+8]
41
42        cmp dword [eax+4],BYTE 0
43	je endconvert
44
45	mov ebp,eax
46
47	mov esi,[ebp+0]
48	mov edi,[ebp+16]
49
50y_loop:
51	mov ecx,[ebp+4]
52
53	call [ebp+32]
54
55	add esi,[ebp+12]
56	add edi,[ebp+28]
57
58	dec dword  [ebp+8]
59	jnz y_loop
60
61
62; Restore the registers used by the blitters, necessary for optimized code
63	popa
64
65	pop ebp
66
67endconvert:
68	emms
69
70	ret
71
72%ifidn __OUTPUT_FORMAT__,elf
73section .note.GNU-stack noalloc noexec nowrite progbits
74%endif
75