# 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