src/hermes/mmx_main.asm
author Ryan C. Gordon
Wed, 29 Nov 2006 10:30:05 +0000
branchSDL-1.2
changeset 3900 ce3a2bd11305
parent 1873 eb4d9d99849b
child 2134 180fa05e98e2
permissions -rw-r--r--
Wrapped some macro params in parentheses for alloca wrappers.
Thansk, Suzuki Masahiro.
     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 
    10 BITS 32
    11 
    12 %include "common.inc"
    13 
    14 SDL_FUNC _ConvertMMX
    15 SDL_FUNC _mmxreturn
    16 
    17 SECTION .text
    18 		
    19 ;; _ConvertMMX:	 
    20 ;; [ESP+8] ConverterInfo*
    21 ;; --------------------------------------------------------------------------
    22 ;; ConverterInfo (ebp+..)
    23 ;;   0:	void *s_pixels
    24 ;;   4:	int s_width
    25 ;;   8:	int s_height
    26 ;;  12:	int s_add
    27 ;;  16:	void *d_pixels
    28 ;;  20:	int d_width
    29 ;;  24:	int d_height
    30 ;;  28:	int d_add
    31 ;;  32:	void (*converter_function)() 
    32 ;;  36: int32 *lookup
    33 	
    34 _ConvertMMX:
    35 	push ebp
    36 	mov ebp,esp
    37 
    38 ; Save the registers used by the blitters, necessary for optimized code
    39 	pusha
    40 
    41 	mov eax,[ebp+8]
    42 
    43         cmp dword [eax+4],BYTE 0
    44 	je endconvert
    45 	
    46 	mov ebp,eax
    47 	
    48 	mov esi,[ebp+0]
    49 	mov edi,[ebp+16]
    50 	
    51 y_loop:	
    52 	mov ecx,[ebp+4]
    53 
    54 	jmp [ebp+32]
    55 
    56 _mmxreturn:	
    57 	add esi,[ebp+12]
    58 	add edi,[ebp+28]
    59 	
    60 	dec dword  [ebp+8]
    61 	jnz y_loop
    62 
    63 	
    64 ; Restore the registers used by the blitters, necessary for optimized code
    65 	popa
    66 
    67 	pop ebp
    68 
    69 endconvert:
    70 	emms
    71 	
    72 	ret		
    73 
    74 %ifidn __OUTPUT_FORMAT__,elf
    75 section .note.GNU-stack noalloc noexec nowrite progbits
    76 %endif