]> git.sesse.net Git - vlc/blobdiff - plugins/memcpy/fastmemcpy.h
* ALL: new module API. Makes a few things a lot simpler, and we gain
[vlc] / plugins / memcpy / fastmemcpy.h
index 5d491421c01119ee76554278e789b69c1a6f707c..031a3989acc37a76a15efa50131e46b238c1adf9 100644 (file)
@@ -1,12 +1,11 @@
 /*****************************************************************************
  * fastmemcpy.h : fast memcpy routines
  *****************************************************************************
- * $Id: fastmemcpy.h,v 1.2 2002/04/02 22:16:07 massiot Exp $
+ * $Id: fastmemcpy.h,v 1.5 2002/07/31 20:56:52 sam Exp $
  *
  * Authors: various Linux kernel hackers
  *          various MPlayer hackers
  *          Nick Kurshev <nickols_k@mail.ru>
- *          Christophe Massiot <massiot@via.ecp.fr> (Altivec)
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -154,7 +153,7 @@ __asm__ __volatile__(\
 #define MIN_LEN 0x40  /* 64-byte blocks */
 #endif
 
-void * _M( fast_memcpy )(void * to, const void * from, size_t len)
+void * fast_memcpy(void * to, const void * from, size_t len)
 {
        void *retval;
        size_t i;
@@ -276,6 +275,7 @@ void * _M( fast_memcpy )(void * to, const void * from, size_t len)
 
 //     printf(" %d %d\n", (int)from&1023, (int)to&1023);
        // Pure Assembly cuz gcc is a bit unpredictable ;)
+# if 0
        if(i>=BLOCK_SIZE/64)
                asm volatile(
                        "xorl %%eax, %%eax      \n\t"
@@ -335,6 +335,7 @@ void * _M( fast_memcpy )(void * to, const void * from, size_t len)
                                : "r" (BLOCK_SIZE), "i" (BLOCK_SIZE/64), "i" (CONFUSION_FACTOR)
                                : "%eax", "%ebx"
                );
+#endif
 
        for(; i>0; i--)
        {
@@ -383,71 +384,3 @@ void * _M( fast_memcpy )(void * to, const void * from, size_t len)
 
 
 #endif /* #if defined( HAVE_MMX2 ) || defined( HAVE_3DNOW ) || defined( HAVE_MMX ) */
-
-#ifdef HAVE_ALTIVEC
-#    if defined(CAN_COMPILE_C_ALTIVEC) || defined( __BUILD_ALTIVEC_ASM )
-
-#define vector_s16_t vector signed short
-#define vector_u16_t vector unsigned short
-#define vector_s8_t vector signed char
-#define vector_u8_t vector unsigned char
-#define vector_s32_t vector signed int
-#define vector_u32_t vector unsigned int
-#undef MMREG_SIZE
-#define MMREG_SIZE 16
-
-void * _M( fast_memcpy )(void * _to, const void * _from, size_t len)
-{
-    void * retval = _to;
-    u8 * to = (u8 *)_to;
-    u8 * from = (u8 *)_from;
-
-    if( len > 16 )
-    {
-        /* Align destination to MMREG_SIZE -boundary */
-        register unsigned long int delta;
-
-        delta = ((unsigned long)to)&(MMREG_SIZE-1);
-        if( delta )
-        {
-            delta = MMREG_SIZE - delta;
-            len -= delta;
-            memcpy(to, from, delta);
-            to += delta;
-            from += delta;
-        }
-
-        if( len & ~(MMREG_SIZE-1) )
-        {
-            vector_u8_t perm, ref0, ref1, tmp;
-
-            perm = vec_lvsl( 0, from );
-            ref0 = vec_ld( 0, from );
-            ref1 = vec_ld( 15, from );
-            from += 16;
-            len -= 16;
-            tmp = vec_perm( ref0, ref1, perm );
-            do
-            {
-                ref0 = vec_ld( 0, from );
-                ref1 = vec_ld( 15, from );
-                from += 16;
-                len -= 16;
-                vec_st( tmp, 0, to );
-                tmp = vec_perm( ref0, ref1, perm );
-                to += 16;
-            } while( len & ~(MMREG_SIZE-1) );
-            vec_st( tmp, 0, to );
-        }
-    }
-
-    if( len )
-    {
-        memcpy( to, from, len );
-    }
-
-    return retval;
-}
-
-#   endif
-#endif