diff options
author | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-11 19:41:38 +0000 |
---|---|---|
committer | arpi_esp <arpi_esp@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-04-11 19:41:38 +0000 |
commit | 0ddb6b81b5030d4a15b6cad229e80aa9d0ed5678 (patch) | |
tree | 1ed95e133249628abd9d0e94f9c980fc5caf33c8 /libvo/mmx.h | |
parent | 69bf86446c90141b1f80e2935a4f01eb38eb1ea4 (diff) | |
download | mpv-0ddb6b81b5030d4a15b6cad229e80aa9d0ed5678.tar.bz2 mpv-0ddb6b81b5030d4a15b6cad229e80aa9d0ed5678.tar.xz |
memcpy() moved mmx.h -> fastmemcpy.h
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@355 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libvo/mmx.h')
-rw-r--r-- | libvo/mmx.h | 98 |
1 files changed, 0 insertions, 98 deletions
diff --git a/libvo/mmx.h b/libvo/mmx.h index 30d01b5e2b..bc92a7d5db 100644 --- a/libvo/mmx.h +++ b/libvo/mmx.h @@ -27,104 +27,6 @@ #ifndef _MMX_H #define _MMX_H -/* - This part of code was taken by from Linux-2.4.3 and slightly modified -for MMX2 instruction set. I have done it since linux uses page aligned -blocks but mplayer uses weakly ordered data and original sources can not -speedup their. Only using prefetch and movntq together have effect! -If you have questions please contact with me: Nick Kurshev: nickols_k@mail.ru. -*/ - -#ifndef HAVE_MMX2 -//static inline void * __memcpy(void * to, const void * from, unsigned n) -inline static void * memcpy(void * to, const void * from, unsigned n) -{ -int d0, d1, d2; -__asm__ __volatile__( - "rep ; movsl\n\t" - "testb $2,%b4\n\t" - "je 1f\n\t" - "movsw\n" - "1:\ttestb $1,%b4\n\t" - "je 2f\n\t" - "movsb\n" - "2:" - : "=&c" (d0), "=&D" (d1), "=&S" (d2) - :"0" (n/4), "q" (n),"1" ((long) to),"2" ((long) from) - : "memory"); -return (to); -} -#else -//inline static void *__memcpy_mmx2(void *to, const void *from, unsigned len) -inline static void * memcpy(void * to, const void * from, unsigned n) -{ - void *p; - int i; - - if(len >= 0x200) /* 512-byte blocks */ - { - p = to; - i = len >> 6; /* len/64 */ - __asm__ __volatile__ ( - "1: prefetch (%0)\n" /* This set is 28 bytes */ - " prefetch 64(%0)\n" - " prefetch 128(%0)\n" - " prefetch 192(%0)\n" - " prefetch 256(%0)\n" - "2: \n" - ".section .fixup, \"ax\"\n" - "3: movw $0x1AEB, 1b\n" /* jmp on 26 bytes */ - " jmp 2b\n" - ".previous\n" - ".section __ex_table,\"a\"\n" - " .align 4\n" - " .long 1b, 3b\n" - ".previous" - : : "r" (from) ); - - - for(; i>0; i--) - { - __asm__ __volatile__ ( - "1: prefetch 320(%0)\n" - "2: movq (%0), %%mm0\n" - " movq 8(%0), %%mm1\n" - " movq 16(%0), %%mm2\n" - " movq 24(%0), %%mm3\n" - " movntq %%mm0, (%1)\n" - " movntq %%mm1, 8(%1)\n" - " movntq %%mm2, 16(%1)\n" - " movntq %%mm3, 24(%1)\n" - " movq 32(%0), %%mm0\n" - " movq 40(%0), %%mm1\n" - " movq 48(%0), %%mm2\n" - " movq 56(%0), %%mm3\n" - " movntq %%mm0, 32(%1)\n" - " movntq %%mm1, 40(%1)\n" - " movntq %%mm2, 48(%1)\n" - " movntq %%mm3, 56(%1)\n" - ".section .fixup, \"ax\"\n" - "3: movw $0x05EB, 1b\n" /* jmp on 5 bytes */ - " jmp 2b\n" - ".previous\n" - ".section __ex_table,\"a\"\n" - " .align 4\n" - " .long 1b, 3b\n" - ".previous" - : : "r" (from), "r" (to) : "memory"); - from+=64; - to+=64; - } - __asm__ __volatile__ ("emms":::"memory"); - } - /* - * Now do the tail of the block - */ - __memcpy(to, from, len&63); - return p; -} -#endif - /* Warning: at this writing, the version of GAS packaged with most Linux distributions does not handle the |