# HG changeset patch
# User Diego 'Flameeyes' Pettenò <[EMAIL PROTECTED]>
# Date 1181392676 -7200
# Node ID 28b64238aa8d0c29d3ef9998465f09d6f68c7a14
# Parent  4c2d63caa6ddfd5326bc32e870e40aac0e8df0de
Update memcpy selection to use the new cpu_accel interface.

diff -r 28b64238aa8d0c29d3ef9998465f09d6f68c7a14 -r 
4c2d63caa6ddfd5326bc32e870e40aac0e8df0de src/xine-utils/memcpy.c
--- a/src/xine-utils/memcpy.c   Sat Jun 09 14:37:56 2007 +0200
+++ b/src/xine-utils/memcpy.c   Sat Jun 09 14:30:14 2007 +0200
@@ -51,6 +51,7 @@
 */
 
 #include "xine_internal.h"
+#include "cpu_accel.h"
 
 void *(* xine_fast_memcpy)(void *to, const void *from, size_t len);
 
@@ -118,9 +119,7 @@ quote of the day:
 */
 
 
-#if defined(ARCH_X86) || defined(ARCH_X86_64)
-
-#ifndef _MSC_VER
+#if defined(__i386__) || defined(__x86_64__)
 /* for small memory blocks (<256 bytes) this version is faster */
 #define small_memcpy(to,from,n)\
 {\
@@ -160,12 +159,18 @@ int d0, d1, d2;
   return (to);
 }
 
+static void *linux_kernel_memcpy(void *to, const void *from, size_t len) {
+  return linux_kernel_memcpy_impl(to,from,len);
+}
+#endif
+
 #define SSE_MMREG_SIZE 16
 #define MMX_MMREG_SIZE 8
 
 #define MMX1_MIN_LEN 0x800  /* 2K blocks */
 #define MIN_LEN 0x40  /* 64-byte blocks */
 
+#ifdef BUILD_SSE_MAYBE
 /* SSE note: i tried to move 128 bytes a time instead of 64 but it
 didn't make any measureable difference. i'm using 64 for the sake of
 simplicity. [MF] */
@@ -254,7 +259,9 @@ static void * sse_memcpy(void * to, cons
   if(len) linux_kernel_memcpy_impl(to, from, len);
   return retval;
 }
-
+#endif
+
+#ifdef BUILD_MMX_MAYBE
 static void * mmx_memcpy(void * to, const void * from, size_t len)
 {
   void *retval;
@@ -305,7 +312,9 @@ static void * mmx_memcpy(void * to, cons
   if(len) linux_kernel_memcpy_impl(to, from, len);
   return retval;
 }
-
+#endif
+
+#ifdef BUILD_MMXEXT_MAYBE
 static void * mmx2_memcpy(void * to, const void * from, size_t len)
 {
   void *retval;
@@ -375,16 +384,11 @@ static void * mmx2_memcpy(void * to, con
   if(len) linux_kernel_memcpy_impl(to, from, len);
   return retval;
 }
-
-static void *linux_kernel_memcpy(void *to, const void *from, size_t len) {
-  return linux_kernel_memcpy_impl(to,from,len);
-}
-#endif /* _MSC_VER */
-#endif /* ARCH_X86 */
+#endif
 
 static struct {
   char *const name;
-  void *(*const  function)(void *to, const void *from, size_t len);
+  void *(*const function)(void *to, const void *from, size_t len);
 
   uint64_t time; /* This type could be used for non-MSC build too! */
 
@@ -393,12 +397,18 @@ static struct {
 {
   { NULL, NULL, 0, 0 },
   { "libc memcpy()", memcpy, 0, 0 },
-#if (defined(ARCH_X86) || defined(ARCH_X86_64)) && !defined(_MSC_VER)
+#if defined(__i386__) || defined(__x86_64__)
   { "linux kernel memcpy()", linux_kernel_memcpy, 0, 0 },
-  { "MMX optimized memcpy()", mmx_memcpy, 0, MM_MMX },
-  { "MMXEXT optimized memcpy()", mmx2_memcpy, 0, MM_MMXEXT },
-  { "SSE optimized memcpy()", sse_memcpy, 0, MM_MMXEXT|MM_SSE },
-#endif /* ARCH_X86 */
+#endif
+#ifdef BUILD_MMX_MAYBE
+  { "MMX optimized memcpy()", mmx_memcpy, 0, MM_ACCEL_X86_MMX },
+#endif
+#ifdef BUILD_MMXEXT_MAYBE
+  { "MMXEXT optimized memcpy()", mmx2_memcpy, 0, MM_ACCEL_X86_MMXEXT },
+#endif
+#ifdef BUILD_SSE_MAYBE
+  { "SSE optimized memcpy()", sse_memcpy, 0, 
MM_ACCEL_X86_MMXEXT|MM_ACCEL_X86_SSE },
+#endif
 #if defined (ARCH_PPC) && !defined (HOST_OS_DARWIN)
   { "ppcasm_memcpy()", ppcasm_memcpy, 0, 0 },
   { "ppcasm_cacheable_memcpy()", ppcasm_cacheable_memcpy, 0, 
MM_ACCEL_PPC_CACHE32 },
@@ -412,7 +422,7 @@ static int64_t rdtsc(int config_flags)
   int64_t x;
 
   /* that should prevent us from trying cpuid with old cpus */
-  if( config_flags & MM_MMX ) {
+  if( config_flags & MM_ACCEL_X86_MMX ) {
     __asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
     return x;
   } else {
@@ -463,8 +473,17 @@ void xine_probe_fast_memcpy(xine_t *xine
   int               config_flags = -1;
   static const char *const memcpy_methods[] = {
     "probe", "libc",
-#if (defined(ARCH_X86) || defined(ARCH_X86_64)) && !defined(_MSC_VER)
-    "kernel", "mmx", "mmxext", "sse",
+#if defined(__i386__) || defined(__x86_64__)
+    "kernel",
+#endif
+#ifdef BUILD_MMX_MAYBE
+    "mmx",
+#endif
+#ifdef BUILD_MMXEXT_MAYBE
+    "mmxext",
+#endif
+#ifdef BUILD_SSE_MAYBE
+    "sse",
 #endif
 #if defined (ARCH_PPC) && !defined (HOST_OS_DARWIN)
     "ppcasm_memcpy", "ppcasm_cacheable_memcpy",

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
Xine-cvslog mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xine-cvslog

Reply via email to