From d8239786b306ffda6d5d73753d01f0ad3358e1a0 Mon Sep 17 00:00:00 2001 From: Jesse Hall Date: Tue, 17 Jul 2012 16:58:55 -0700 Subject: Delete sdl-1.2.12 Change-Id: Ia96f80df04035ae84be3af468c945f2cec14f99c --- distrib/sdl-1.2.12/src/hermes/x86p_32.asm | 1045 ----------------------------- 1 file changed, 1045 deletions(-) delete mode 100644 distrib/sdl-1.2.12/src/hermes/x86p_32.asm (limited to 'distrib/sdl-1.2.12/src/hermes/x86p_32.asm') diff --git a/distrib/sdl-1.2.12/src/hermes/x86p_32.asm b/distrib/sdl-1.2.12/src/hermes/x86p_32.asm deleted file mode 100644 index 4446c1c..0000000 --- a/distrib/sdl-1.2.12/src/hermes/x86p_32.asm +++ /dev/null @@ -1,1045 +0,0 @@ -; -; x86 format converters for HERMES -; Some routines Copyright (c) 1998 Christian Nentwich (brn@eleet.mcb.at) -; This source code is licensed under the GNU LGPL -; -; Please refer to the file COPYING.LIB contained in the distribution for -; licensing conditions -; -; Most routines are (c) Glenn Fiedler (ptc@gaffer.org), used with permission -; - -BITS 32 - -%include "common.inc" - -SDL_FUNC _ConvertX86p32_32BGR888 -SDL_FUNC _ConvertX86p32_32RGBA888 -SDL_FUNC _ConvertX86p32_32BGRA888 -SDL_FUNC _ConvertX86p32_24RGB888 -SDL_FUNC _ConvertX86p32_24BGR888 -SDL_FUNC _ConvertX86p32_16RGB565 -SDL_FUNC _ConvertX86p32_16BGR565 -SDL_FUNC _ConvertX86p32_16RGB555 -SDL_FUNC _ConvertX86p32_16BGR555 -SDL_FUNC _ConvertX86p32_8RGB332 - -SECTION .text - -;; _Convert_* -;; Paramters: -;; ESI = source -;; EDI = dest -;; ECX = amount (NOT 0!!! (the _ConvertX86 routine checks for that though)) -;; Destroys: -;; EAX, EBX, EDX - - -_ConvertX86p32_32BGR888: - - ; check short - cmp ecx,BYTE 32 - ja .L3 - -.L1 ; short loop - mov edx,[esi] - bswap edx - ror edx,8 - mov [edi],edx - add esi,BYTE 4 - add edi,BYTE 4 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; save ebp - push ebp - - ; unroll four times - mov ebp,ecx - shr ebp,2 - - ; save count - push ecx - -.L4 mov eax,[esi] - mov ebx,[esi+4] - - bswap eax - - bswap ebx - - ror eax,8 - mov ecx,[esi+8] - - ror ebx,8 - mov edx,[esi+12] - - bswap ecx - - bswap edx - - ror ecx,8 - mov [edi+0],eax - - ror edx,8 - mov [edi+4],ebx - - mov [edi+8],ecx - mov [edi+12],edx - - add esi,BYTE 16 - add edi,BYTE 16 - - dec ebp - jnz .L4 - - ; check tail - pop ecx - and ecx,BYTE 11b - jz .L6 - -.L5 ; tail loop - mov edx,[esi] - bswap edx - ror edx,8 - mov [edi],edx - add esi,BYTE 4 - add edi,BYTE 4 - dec ecx - jnz .L5 - -.L6 pop ebp - retn - - - - -_ConvertX86p32_32RGBA888: - - ; check short - cmp ecx,BYTE 32 - ja .L3 - -.L1 ; short loop - mov edx,[esi] - rol edx,8 - mov [edi],edx - add esi,BYTE 4 - add edi,BYTE 4 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; save ebp - push ebp - - ; unroll four times - mov ebp,ecx - shr ebp,2 - - ; save count - push ecx - -.L4 mov eax,[esi] - mov ebx,[esi+4] - - rol eax,8 - mov ecx,[esi+8] - - rol ebx,8 - mov edx,[esi+12] - - rol ecx,8 - mov [edi+0],eax - - rol edx,8 - mov [edi+4],ebx - - mov [edi+8],ecx - mov [edi+12],edx - - add esi,BYTE 16 - add edi,BYTE 16 - - dec ebp - jnz .L4 - - ; check tail - pop ecx - and ecx,BYTE 11b - jz .L6 - -.L5 ; tail loop - mov edx,[esi] - rol edx,8 - mov [edi],edx - add esi,BYTE 4 - add edi,BYTE 4 - dec ecx - jnz .L5 - -.L6 pop ebp - retn - - - - -_ConvertX86p32_32BGRA888: - - ; check short - cmp ecx,BYTE 32 - ja .L3 - -.L1 ; short loop - mov edx,[esi] - bswap edx - mov [edi],edx - add esi,BYTE 4 - add edi,BYTE 4 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; save ebp - push ebp - - ; unroll four times - mov ebp,ecx - shr ebp,2 - - ; save count - push ecx - -.L4 mov eax,[esi] - mov ebx,[esi+4] - - mov ecx,[esi+8] - mov edx,[esi+12] - - bswap eax - - bswap ebx - - bswap ecx - - bswap edx - - mov [edi+0],eax - mov [edi+4],ebx - - mov [edi+8],ecx - mov [edi+12],edx - - add esi,BYTE 16 - add edi,BYTE 16 - - dec ebp - jnz .L4 - - ; check tail - pop ecx - and ecx,BYTE 11b - jz .L6 - -.L5 ; tail loop - mov edx,[esi] - bswap edx - mov [edi],edx - add esi,BYTE 4 - add edi,BYTE 4 - dec ecx - jnz .L5 - -.L6 pop ebp - retn - - - - -;; 32 bit RGB 888 to 24 BIT RGB 888 - -_ConvertX86p32_24RGB888: - - ; check short - cmp ecx,BYTE 32 - ja .L3 - -.L1 ; short loop - mov al,[esi] - mov bl,[esi+1] - mov dl,[esi+2] - mov [edi],al - mov [edi+1],bl - mov [edi+2],dl - add esi,BYTE 4 - add edi,BYTE 3 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; head - mov edx,edi - and edx,BYTE 11b - jz .L4 - mov al,[esi] - mov bl,[esi+1] - mov dl,[esi+2] - mov [edi],al - mov [edi+1],bl - mov [edi+2],dl - add esi,BYTE 4 - add edi,BYTE 3 - dec ecx - jmp SHORT .L3 - -.L4 ; unroll 4 times - push ebp - mov ebp,ecx - shr ebp,2 - - ; save count - push ecx - -.L5 mov eax,[esi] ; first dword eax = [A][R][G][B] - mov ebx,[esi+4] ; second dword ebx = [a][r][g][b] - - shl eax,8 ; eax = [R][G][B][.] - mov ecx,[esi+12] ; third dword ecx = [a][r][g][b] - - shl ebx,8 ; ebx = [r][g][b][.] - mov al,[esi+4] ; eax = [R][G][B][b] - - ror eax,8 ; eax = [b][R][G][B] (done) - mov bh,[esi+8+1] ; ebx = [r][g][G][.] - - mov [edi],eax - add edi,BYTE 3*4 - - shl ecx,8 ; ecx = [r][g][b][.] - mov bl,[esi+8+0] ; ebx = [r][g][G][B] - - rol ebx,16 ; ebx = [G][B][r][g] (done) - mov cl,[esi+8+2] ; ecx = [r][g][b][R] (done) - - mov [edi+4-3*4],ebx - add esi,BYTE 4*4 - - mov [edi+8-3*4],ecx - dec ebp - - jnz .L5 - - ; check tail - pop ecx - and ecx,BYTE 11b - jz .L7 - -.L6 ; tail loop - mov al,[esi] - mov bl,[esi+1] - mov dl,[esi+2] - mov [edi],al - mov [edi+1],bl - mov [edi+2],dl - add esi,BYTE 4 - add edi,BYTE 3 - dec ecx - jnz .L6 - -.L7 pop ebp - retn - - - - -;; 32 bit RGB 888 to 24 bit BGR 888 - -_ConvertX86p32_24BGR888: - - ; check short - cmp ecx,BYTE 32 - ja .L3 - - -.L1 ; short loop - mov dl,[esi] - mov bl,[esi+1] - mov al,[esi+2] - mov [edi],al - mov [edi+1],bl - mov [edi+2],dl - add esi,BYTE 4 - add edi,BYTE 3 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; head - mov edx,edi - and edx,BYTE 11b - jz .L4 - mov dl,[esi] - mov bl,[esi+1] - mov al,[esi+2] - mov [edi],al - mov [edi+1],bl - mov [edi+2],dl - add esi,BYTE 4 - add edi,BYTE 3 - dec ecx - jmp SHORT .L3 - -.L4 ; unroll 4 times - push ebp - mov ebp,ecx - shr ebp,2 - - ; save count - push ecx - -.L5 - mov eax,[esi] ; first dword eax = [A][R][G][B] - mov ebx,[esi+4] ; second dword ebx = [a][r][g][b] - - bswap eax ; eax = [B][G][R][A] - - bswap ebx ; ebx = [b][g][r][a] - - mov al,[esi+4+2] ; eax = [B][G][R][r] - mov bh,[esi+4+4+1] ; ebx = [b][g][G][a] - - ror eax,8 ; eax = [r][B][G][R] (done) - mov bl,[esi+4+4+2] ; ebx = [b][g][G][R] - - ror ebx,16 ; ebx = [G][R][b][g] (done) - mov [edi],eax - - mov [edi+4],ebx - mov ecx,[esi+12] ; third dword ecx = [a][r][g][b] - - bswap ecx ; ecx = [b][g][r][a] - - mov cl,[esi+8] ; ecx = [b][g][r][B] (done) - add esi,BYTE 4*4 - - mov [edi+8],ecx - add edi,BYTE 3*4 - - dec ebp - jnz .L5 - - ; check tail - pop ecx - and ecx,BYTE 11b - jz .L7 - -.L6 ; tail loop - mov dl,[esi] - mov bl,[esi+1] - mov al,[esi+2] - mov [edi],al - mov [edi+1],bl - mov [edi+2],dl - add esi,BYTE 4 - add edi,BYTE 3 - dec ecx - jnz .L6 - -.L7 - pop ebp - retn - - - - -;; 32 bit RGB 888 to 16 BIT RGB 565 - -_ConvertX86p32_16RGB565: - ; check short - cmp ecx,BYTE 16 - ja .L3 - -.L1 ; short loop - mov bl,[esi+0] ; blue - mov al,[esi+1] ; green - mov ah,[esi+2] ; red - shr ah,3 - and al,11111100b - shl eax,3 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - jnz .L1 - -.L2: ; End of short loop - retn - - -.L3 ; head - mov ebx,edi - and ebx,BYTE 11b - jz .L4 - - mov bl,[esi+0] ; blue - mov al,[esi+1] ; green - mov ah,[esi+2] ; red - shr ah,3 - and al,11111100b - shl eax,3 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - -.L4: - ; save count - push ecx - - ; unroll twice - shr ecx,1 - - ; point arrays to end - lea esi,[esi+ecx*8] - lea edi,[edi+ecx*4] - - ; negative counter - neg ecx - jmp SHORT .L6 - -.L5: - mov [edi+ecx*4-4],eax -.L6: - mov eax,[esi+ecx*8] - - shr ah,2 - mov ebx,[esi+ecx*8+4] - - shr eax,3 - mov edx,[esi+ecx*8+4] - - shr bh,2 - mov dl,[esi+ecx*8+2] - - shl ebx,13 - and eax,000007FFh - - shl edx,8 - and ebx,07FF0000h - - and edx,0F800F800h - add eax,ebx - - add eax,edx - inc ecx - - jnz .L5 - - mov [edi+ecx*4-4],eax - - ; tail - pop ecx - test cl,1 - jz .L7 - - mov bl,[esi+0] ; blue - mov al,[esi+1] ; green - mov ah,[esi+2] ; red - shr ah,3 - and al,11111100b - shl eax,3 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - -.L7: - retn - - - - -;; 32 bit RGB 888 to 16 BIT BGR 565 - -_ConvertX86p32_16BGR565: - - ; check short - cmp ecx,BYTE 16 - ja .L3 - -.L1 ; short loop - mov ah,[esi+0] ; blue - mov al,[esi+1] ; green - mov bl,[esi+2] ; red - shr ah,3 - and al,11111100b - shl eax,3 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; head - mov ebx,edi - and ebx,BYTE 11b - jz .L4 - mov ah,[esi+0] ; blue - mov al,[esi+1] ; green - mov bl,[esi+2] ; red - shr ah,3 - and al,11111100b - shl eax,3 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - -.L4 ; save count - push ecx - - ; unroll twice - shr ecx,1 - - ; point arrays to end - lea esi,[esi+ecx*8] - lea edi,[edi+ecx*4] - - ; negative count - neg ecx - jmp SHORT .L6 - -.L5 - mov [edi+ecx*4-4],eax -.L6 - mov edx,[esi+ecx*8+4] - - mov bh,[esi+ecx*8+4] - mov ah,[esi+ecx*8] - - shr bh,3 - mov al,[esi+ecx*8+1] - - shr ah,3 - mov bl,[esi+ecx*8+5] - - shl eax,3 - mov dl,[esi+ecx*8+2] - - shl ebx,19 - and eax,0000FFE0h - - shr edx,3 - and ebx,0FFE00000h - - and edx,001F001Fh - add eax,ebx - - add eax,edx - inc ecx - - jnz .L5 - - mov [edi+ecx*4-4],eax - - ; tail - pop ecx - and ecx,BYTE 1 - jz .L7 - mov ah,[esi+0] ; blue - mov al,[esi+1] ; green - mov bl,[esi+2] ; red - shr ah,3 - and al,11111100b - shl eax,3 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - -.L7 - retn - - - - -;; 32 BIT RGB TO 16 BIT RGB 555 - -_ConvertX86p32_16RGB555: - - ; check short - cmp ecx,BYTE 16 - ja .L3 - -.L1 ; short loop - mov bl,[esi+0] ; blue - mov al,[esi+1] ; green - mov ah,[esi+2] ; red - shr ah,3 - and al,11111000b - shl eax,2 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; head - mov ebx,edi - and ebx,BYTE 11b - jz .L4 - mov bl,[esi+0] ; blue - mov al,[esi+1] ; green - mov ah,[esi+2] ; red - shr ah,3 - and al,11111000b - shl eax,2 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - -.L4 ; save count - push ecx - - ; unroll twice - shr ecx,1 - - ; point arrays to end - lea esi,[esi+ecx*8] - lea edi,[edi+ecx*4] - - ; negative counter - neg ecx - jmp SHORT .L6 - -.L5 - mov [edi+ecx*4-4],eax -.L6 - mov eax,[esi+ecx*8] - - shr ah,3 - mov ebx,[esi+ecx*8+4] - - shr eax,3 - mov edx,[esi+ecx*8+4] - - shr bh,3 - mov dl,[esi+ecx*8+2] - - shl ebx,13 - and eax,000007FFh - - shl edx,7 - and ebx,07FF0000h - - and edx,07C007C00h - add eax,ebx - - add eax,edx - inc ecx - - jnz .L5 - - mov [edi+ecx*4-4],eax - - ; tail - pop ecx - and ecx,BYTE 1 - jz .L7 - mov bl,[esi+0] ; blue - mov al,[esi+1] ; green - mov ah,[esi+2] ; red - shr ah,3 - and al,11111000b - shl eax,2 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - -.L7 - retn - - - - -;; 32 BIT RGB TO 16 BIT BGR 555 - -_ConvertX86p32_16BGR555: - - ; check short - cmp ecx,BYTE 16 - ja .L3 - - -.L1 ; short loop - mov ah,[esi+0] ; blue - mov al,[esi+1] ; green - mov bl,[esi+2] ; red - shr ah,3 - and al,11111000b - shl eax,2 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - jnz .L1 -.L2 - retn - -.L3 ; head - mov ebx,edi - and ebx,BYTE 11b - jz .L4 - mov ah,[esi+0] ; blue - mov al,[esi+1] ; green - mov bl,[esi+2] ; red - shr ah,3 - and al,11111000b - shl eax,2 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - dec ecx - -.L4 ; save count - push ecx - - ; unroll twice - shr ecx,1 - - ; point arrays to end - lea esi,[esi+ecx*8] - lea edi,[edi+ecx*4] - - ; negative counter - neg ecx - jmp SHORT .L6 - -.L5 - mov [edi+ecx*4-4],eax -.L6 - mov edx,[esi+ecx*8+4] - - mov bh,[esi+ecx*8+4] - mov ah,[esi+ecx*8] - - shr bh,3 - mov al,[esi+ecx*8+1] - - shr ah,3 - mov bl,[esi+ecx*8+5] - - shl eax,2 - mov dl,[esi+ecx*8+2] - - shl ebx,18 - and eax,00007FE0h - - shr edx,3 - and ebx,07FE00000h - - and edx,001F001Fh - add eax,ebx - - add eax,edx - inc ecx - - jnz .L5 - - mov [edi+ecx*4-4],eax - - ; tail - pop ecx - and ecx,BYTE 1 - jz .L7 - mov ah,[esi+0] ; blue - mov al,[esi+1] ; green - mov bl,[esi+2] ; red - shr ah,3 - and al,11111000b - shl eax,2 - shr bl,3 - add al,bl - mov [edi+0],al - mov [edi+1],ah - add esi,BYTE 4 - add edi,BYTE 2 - -.L7 - retn - - - - - -;; FROM 32 BIT RGB to 8 BIT RGB (rrrgggbbb) -;; This routine writes FOUR pixels at once (dword) and then, if they exist -;; the trailing three pixels -_ConvertX86p32_8RGB332: - - -.L_ALIGNED - push ecx - - shr ecx,2 ; We will draw 4 pixels at once - jnz .L1 - - jmp .L2 ; short jump out of range :( - -.L1: - mov eax,[esi] ; first pair of pixels - mov edx,[esi+4] - - shr dl,6 - mov ebx,eax - - shr al,6 - and ah,0e0h - - shr ebx,16 - and dh,0e0h - - shr ah,3 - and bl,0e0h - - shr dh,3 - - or al,bl - - mov ebx,edx - or al,ah - - shr ebx,16 - or dl,dh - - and bl,0e0h - - or dl,bl - - mov ah,dl - - - - mov ebx,[esi+8] ; second pair of pixels - - mov edx,ebx - and bh,0e0h - - shr bl,6 - and edx,0e00000h - - shr edx,16 - - shr bh,3 - - ror eax,16 - or bl,dl - - mov edx,[esi+12] - or bl,bh - - mov al,bl - - mov ebx,edx - and dh,0e0h - - shr dl,6 - and ebx,0e00000h - - shr dh,3 - mov ah,dl - - shr ebx,16 - or ah,dh - - or ah,bl - - rol eax,16 - add esi,BYTE 16 - - mov [edi],eax - add edi,BYTE 4 - - dec ecx - jz .L2 ; L1 out of range for short jump :( - - jmp .L1 -.L2: - - pop ecx - and ecx,BYTE 3 ; mask out number of pixels to draw - - jz .L4 ; Nothing to do anymore - -.L3: - mov eax,[esi] ; single pixel conversion for trailing pixels - - mov ebx,eax - - shr al,6 - and ah,0e0h - - shr ebx,16 - - shr ah,3 - and bl,0e0h - - or al,ah - or al,bl - - mov [edi],al - - inc edi - add esi,BYTE 4 - - dec ecx - jnz .L3 - -.L4: - retn - -%ifidn __OUTPUT_FORMAT__,elf -section .note.GNU-stack noalloc noexec nowrite progbits -%endif -- cgit v1.1