--- mem_transfer_3dne.asm 2004/07/24 11:46:08 1.4 +++ mem_transfer_3dne.asm 2007/09/11 12:41:13 1.8 @@ -19,7 +19,7 @@ ; * along with this program ; if not, write to the Free Software ; * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ; * -; * $Id: mem_transfer_3dne.asm,v 1.4 2004/07/24 11:46:08 edgomez Exp $ +; * $Id: mem_transfer_3dne.asm,v 1.8 2007/09/11 12:41:13 suxen_drol Exp $ ; * ; ***************************************************************************/ @@ -30,10 +30,19 @@ %macro cglobal 1 %ifdef PREFIX - global _%1 - %define %1 _%1 + %ifdef MARK_FUNCS + global _%1:function %1.endfunc-%1 + %define %1 _%1:function %1.endfunc-%1 + %else + global _%1 + %define %1 _%1 + %endif %else - global %1 + %ifdef MARK_FUNCS + global %1:function %1.endfunc-%1 + %else + global %1 + %endif %endif %endmacro @@ -71,6 +80,7 @@ cglobal transfer_8to16sub2_3dne cglobal transfer_16to8add_3dne cglobal transfer8x8_copy_3dne +cglobal transfer8x4_copy_3dne ;----------------------------------------------------------------------------- ; @@ -139,7 +149,7 @@ movq [byte ecx+1*64+48], mm6 movq [ecx+1*64+40], mm7 ret - +.endfunc ;----------------------------------------------------------------------------- @@ -185,6 +195,7 @@ movq [eax+4*edx], mm7 movq [ecx+2*edx], mm6 ret +.endfunc ;----------------------------------------------------------------------------- ; @@ -243,7 +254,7 @@ mov eax, [esp + 8] ; Cur mov ecx, [esp +12] ; Ref push edi - mov edx, [dword esp+4+16] ; Stride + mov edx, [esp+4+16] ; Stride mov edi, [esp+4+ 4] ; Dst pxor mm7, mm7 nop @@ -254,13 +265,14 @@ COPY_8_TO_16_SUB 3, 1 mov edi, ecx ret +.endfunc ALIGN 16 transfer_8to16subro_3dne: mov eax, [esp + 8] ; Cur mov ecx, [esp +12] ; Ref push edi - mov edx, [dword esp+4+16] ; Stride + mov edx, [esp+4+16] ; Stride mov edi, [esp+4+ 4] ; Dst pxor mm7, mm7 nop @@ -271,6 +283,7 @@ COPY_8_TO_16_SUB 3, 0 mov edi, ecx ret +.endfunc ;----------------------------------------------------------------------------- @@ -342,6 +355,7 @@ COPY_8_TO_16_SUB2_SSE 3 ret +.endfunc ;----------------------------------------------------------------------------- @@ -389,6 +403,7 @@ lea ecx,[byte ecx+2*edx] COPY_16_TO_8_ADD 3 ret +.endfunc ;----------------------------------------------------------------------------- ; @@ -421,3 +436,26 @@ lea ecx,[byte ecx+2*edx] COPY_8_TO_8 ret +.endfunc + +;----------------------------------------------------------------------------- +; +; void transfer8x4_copy_3dne(uint8_t * const dst, +; const uint8_t * const src, +; const uint32_t stride); +; +; +;----------------------------------------------------------------------------- + +ALIGN 16 +transfer8x4_copy_3dne: + mov eax, [esp+ 8] ; Src + mov edx, [esp+12] ; Stride + mov ecx, [esp+ 4] ; Dst + + COPY_8_TO_8 + lea ecx,[byte ecx+2*edx] + COPY_8_TO_8 + ret +.endfunc +