#ifndef __linux__
#include <sys/types.h>
-#ifndef WIN32
+#ifndef _WIN32
#include <unistd.h>
#include <sys/wait.h>
#include <signal.h>
#if defined (__i386__) || defined (__x86_64__) || defined (__powerpc__) \
|| defined (__ppc__) || defined (__ppc64__) || defined (__powerpc64__)
-# if !defined (WIN32) && !defined (__OS2__)
+# if !defined (_WIN32) && !defined (__OS2__)
static bool vlc_CPU_check (const char *name, void (*func) (void))
{
pid_t pid = fork();
asm volatile ("xorps %%xmm0,%%xmm0\n" : : : "xmm0", "xmm1");
}
#endif
-#if defined (CAN_COMPILE_SSE2) && !defined (__SSE2__)
-VLC_SSE static void SSE2_test (void)
-{
- asm volatile ("movupd %%xmm0, %%xmm0\n" : : : "xmm0", "xmm1");
-}
-#endif
-#if defined (CAN_COMPILE_SSE3) && !defined (__SSE3__)
-VLC_SSE static void SSE3_test (void)
-{
- asm volatile ("movsldup %%xmm1, %%xmm0\n" : : : "xmm0", "xmm1");
-}
-#endif
-#if defined (CAN_COMPILE_SSSE3) && !defined (__SSSE3__)
-VLC_SSE static void SSSE3_test (void)
-{
- asm volatile ("pabsw %%xmm1, %%xmm0\n" : : : "xmm0", "xmm1");
-}
-#endif
-#if defined (CAN_COMPILE_SSE4_1) && !defined (__SSE4_1__)
-VLC_SSE static void SSE4_1_test (void)
-{
- asm volatile ("pmaxsb %%xmm1, %%xmm0\n" : : : "xmm0", "xmm1");
-}
-#endif
-#if defined (CAN_COMPILE_SSE4_2) && !defined (__SSE4_2__)
-VLC_SSE static void SSE4_2_test (void)
-{
- asm volatile ("pcmpgtq %%xmm1, %%xmm0\n" : : : "xmm0", "xmm1");
-}
-#endif
-#if defined (CAN_COMPILE_3DNOW) && !defined (__3dNOW__)
+#if defined (CAN_COMPILE_3DNOW)
VLC_MMX static void ThreeD_Now_test (void)
{
asm volatile ("pfadd %%mm0,%%mm0\n" "femms\n" : : : "mm0");
}
#endif
-#else /* WIN32 || __OS2__ */
+#else /* _WIN32 || __OS2__ */
# define vlc_CPU_check(name, func) (1)
#endif
#endif
i_capabilities |= VLC_CPU_MMX;
if( i_edx & 0x02000000 )
- {
i_capabilities |= VLC_CPU_MMXEXT;
-# ifdef CAN_COMPILE_SSE
- if (vlc_CPU_check ("SSE", SSE_test))
+# if defined (CAN_COMPILE_SSE) && !defined (__SSE__)
+ if (( i_edx & 0x02000000 ) && vlc_CPU_check ("SSE", SSE_test))
+# endif
+ {
+ /*if( i_edx & 0x02000000 )*/
i_capabilities |= VLC_CPU_SSE;
-# endif
+ if (i_edx & 0x04000000)
+ i_capabilities |= VLC_CPU_SSE2;
+ if (i_ecx & 0x00000001)
+ i_capabilities |= VLC_CPU_SSE3;
+ if (i_ecx & 0x00000200)
+ i_capabilities |= VLC_CPU_SSSE3;
+ if (i_ecx & 0x00080000)
+ i_capabilities |= VLC_CPU_SSE4_1;
+ if (i_ecx & 0x00100000)
+ i_capabilities |= VLC_CPU_SSE4_2;
}
-# if defined (CAN_COMPILE_SSE2)
- if ((i_edx & 0x04000000) && vlc_CPU_check ("SSE2", SSE2_test))
- i_capabilities |= VLC_CPU_SSE2;
-# endif
-
-# if defined (CAN_COMPILE_SSE3)
- if ((i_ecx & 0x00000001) && vlc_CPU_check ("SSE3", SSE3_test))
- i_capabilities |= VLC_CPU_SSE3;
-# endif
-
-# if defined (CAN_COMPILE_SSSE3)
- if ((i_ecx & 0x00000200) && vlc_CPU_check ("SSSE3", SSSE3_test))
- i_capabilities |= VLC_CPU_SSSE3;
-# endif
-
-# if defined (CAN_COMPILE_SSE4_1)
- if ((i_ecx & 0x00080000) && vlc_CPU_check ("SSE4.1", SSE4_1_test))
- i_capabilities |= VLC_CPU_SSE4_1;
-# endif
-
-# if defined (CAN_COMPILE_SSE4_2)
- if ((i_ecx & 0x00100000) && vlc_CPU_check ("SSE4.2", SSE4_2_test))
- i_capabilities |= VLC_CPU_SSE4_2;
-# endif
-
/* test for additional capabilities */
cpuid( 0x80000000 );
/* list these additional capabilities */
cpuid( 0x80000001 );
-# if defined (CAN_COMPILE_3DNOW)
+# if defined (CAN_COMPILE_3DNOW) && !defined (__3dNOW__)
if ((i_edx & 0x80000000) && vlc_CPU_check ("3D Now!", ThreeD_Now_test))
- i_capabilities |= CPU_CAPABILITY_3DNOW;
# endif
+ i_capabilities |= VLC_CPU_3dNOW;
if( b_amd && ( i_edx & 0x00400000 ) )
i_capabilities |= VLC_CPU_MMXEXT;
{
/* On Windows and OS/2,
* initialized from DllMain() and _DLL_InitTerm() respectively, instead */
-#if !defined(WIN32) && !defined(__OS2__)
+#if !defined(_WIN32) && !defined(__OS2__)
static pthread_once_t once = PTHREAD_ONCE_INIT;
pthread_once (&once, vlc_CPU_init);
#endif
if (vlc_CPU_MMXEXT()) p += sprintf (p, "MMXEXT ");
if (vlc_CPU_SSE()) p += sprintf (p, "SSE ");
if (vlc_CPU_SSE2()) p += sprintf (p, "SSE2 ");
- if (vlc_CPU_SSE3()) p += sprintf (p, "SSE2 ");
+ if (vlc_CPU_SSE3()) p += sprintf (p, "SSE3 ");
if (vlc_CPU_SSSE3()) p += sprintf (p, "SSSE3 ");
if (vlc_CPU_SSE4_1()) p += sprintf (p, "SSE4.1 ");
if (vlc_CPU_SSE4_2()) p += sprintf (p, "SSE4.2 ");