--- mem_transfer_3dne.asm 2004/07/24 11:46:08 1.4 +++ mem_transfer_3dne.asm 2005/09/13 12:12:15 1.7 @@ -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.7 2005/09/13 12:12:15 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 ;----------------------------------------------------------------------------- ; @@ -254,6 +265,7 @@ COPY_8_TO_16_SUB 3, 1 mov edi, ecx ret +.endfunc ALIGN 16 transfer_8to16subro_3dne: @@ -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 +