[Sumover-dev] [svn commit] r4460 - vic/branches/mpeg4/cpu
sumover-dev at cs.ucl.ac.uk
sumover-dev at cs.ucl.ac.uk
Thu Jun 4 16:05:36 BST 2009
Author: piers
Date: Thu Jun 4 16:05:35 2009
New Revision: 4460
Modified:
vic/branches/mpeg4/cpu/cpudetect.h
vic/branches/mpeg4/cpu/cpuid.cpp
Log:
Fix line endings for Windows (otherwise it complains)
Modified: vic/branches/mpeg4/cpu/cpudetect.h
==============================================================================
--- vic/branches/mpeg4/cpu/cpudetect.h (original)
+++ vic/branches/mpeg4/cpu/cpudetect.h Thu Jun 4 16:05:35 2009
@@ -1,86 +1,86 @@
-#ifndef CPUDETECT_H
-#define CPUDETECT_H
-
-#include "config_arch.h"
-
-#ifdef __cplusplus
-extern "C" {
-
-#endif
-
-#define CPUTYPE_I386 3
-#define CPUTYPE_I486 4
-#define CPUTYPE_I586 5
-#define CPUTYPE_I686 6
-
-#ifdef ARCH_X86_64
-# define REGa rax
-# define REGb rbx
-# define REGBP rbp
-# define REGSP rsp
-# define REG_a "rax"
-# define REG_b "rbx"
-# define REG_c "rcx"
-# define REG_d "rdx"
-# define REG_S "rsi"
-# define REG_D "rdi"
-# define REG_SP "rsp"
-# define REG_BP "rbp"
-#else
-# define REGa eax
-# define REGb ebx
-# define REGBP ebp
-# define REGSP esp
-# define REG_a "eax"
-# define REG_b "ebx"
-# define REG_c "ecx"
-# define REG_d "edx"
-# define REG_S "esi"
-# define REG_D "edi"
-# define REG_SP "esp"
-# define REG_BP "ebp"
-#endif
-
-typedef struct cpucaps_s {
- int cpuType;
- int cpuModel;
- int cpuStepping;
- int hasMMX;
- int hasMMX2;
- int has3DNow;
- int has3DNowExt;
- int hasSSE;
- int hasSSE2;
- int isX86;
- unsigned cl_size; /* size of cache line */
- int hasAltiVec;
- int hasTSC;
- char cpuname[50];
-} CpuCaps;
-
-enum
-{
- FF_CPU_MMX =0x00000001,
- FF_CPU_MMXEXT =0x00000002,
- FF_CPU_SSE =0x00000004,
- FF_CPU_SSE2 =0x00000008,
- FF_CPU_3DNOW =0x00000010,
- FF_CPU_3DNOWEXT=0x00000020,
- FF_CPU_ALTIVEC =0x00000040,
+#ifndef CPUDETECT_H
+#define CPUDETECT_H
+
+#include "config_arch.h"
+
+#ifdef __cplusplus
+extern "C" {
+
+#endif
+
+#define CPUTYPE_I386 3
+#define CPUTYPE_I486 4
+#define CPUTYPE_I586 5
+#define CPUTYPE_I686 6
+
+#ifdef ARCH_X86_64
+# define REGa rax
+# define REGb rbx
+# define REGBP rbp
+# define REGSP rsp
+# define REG_a "rax"
+# define REG_b "rbx"
+# define REG_c "rcx"
+# define REG_d "rdx"
+# define REG_S "rsi"
+# define REG_D "rdi"
+# define REG_SP "rsp"
+# define REG_BP "rbp"
+#else
+# define REGa eax
+# define REGb ebx
+# define REGBP ebp
+# define REGSP esp
+# define REG_a "eax"
+# define REG_b "ebx"
+# define REG_c "ecx"
+# define REG_d "edx"
+# define REG_S "esi"
+# define REG_D "edi"
+# define REG_SP "esp"
+# define REG_BP "ebp"
+#endif
+
+typedef struct cpucaps_s {
+ int cpuType;
+ int cpuModel;
+ int cpuStepping;
+ int hasMMX;
+ int hasMMX2;
+ int has3DNow;
+ int has3DNowExt;
+ int hasSSE;
+ int hasSSE2;
+ int isX86;
+ unsigned cl_size; /* size of cache line */
+ int hasAltiVec;
+ int hasTSC;
+ char cpuname[50];
+} CpuCaps;
+
+enum
+{
+ FF_CPU_MMX =0x00000001,
+ FF_CPU_MMXEXT =0x00000002,
+ FF_CPU_SSE =0x00000004,
+ FF_CPU_SSE2 =0x00000008,
+ FF_CPU_3DNOW =0x00000010,
+ FF_CPU_3DNOWEXT=0x00000020,
+ FF_CPU_ALTIVEC =0x00000040,
};
-
-/* return available_cpu_flags defined above */
-int cpu_check();
-
-extern CpuCaps gCpuCaps;
-void GetCpuCaps(CpuCaps *caps);
-
-/* returned value is malloc()'ed so free() it after use */
-char *GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]);
-
-
-#ifdef __cplusplus
-}
-#endif
-#endif /* !CPUDETECT_H */
-
+
+/* return available_cpu_flags defined above */
+int cpu_check();
+
+extern CpuCaps gCpuCaps;
+void GetCpuCaps(CpuCaps *caps);
+
+/* returned value is malloc()'ed so free() it after use */
+char *GetCpuFriendlyName(unsigned int regs[], unsigned int regs2[]);
+
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !CPUDETECT_H */
+
Modified: vic/branches/mpeg4/cpu/cpuid.cpp
==============================================================================
--- vic/branches/mpeg4/cpu/cpuid.cpp (original)
+++ vic/branches/mpeg4/cpu/cpuid.cpp Thu Jun 4 16:05:35 2009
@@ -9,85 +9,85 @@
}
#include <stdio.h>
-static CpuCaps aCpuCaps;
+static CpuCaps aCpuCaps;
static int available_cpu_flags;
-#ifndef WIN64
-extern "C"
-{
- // cpu_flag detection helper functions
- extern int check_cpu_features(void);
- extern void sse_os_trigger(void);
- extern void sse2_os_trigger(void);
-}
-
-
- #ifdef __GNUC__
- #include <signal.h>
- #include <setjmp.h>
- static jmp_buf mark;
- static void sigill_handler(int signal)
- {
- longjmp(mark, 1);
- }
- static int sigill_check(void (*func)())
- {
- void (*old_handler)(int);
- int jmpret;
- old_handler=signal(SIGILL,sigill_handler);
- if (old_handler==SIG_ERR)
- return -1;
-
- jmpret=setjmp(mark);
- if (jmpret==0)
- func();
- signal(SIGILL,old_handler);
- return jmpret;
- }
- #else
- static int sigill_check(void (*func)())
- {
- __try
- {
- func();
- }
- __except(EXCEPTION_EXECUTE_HANDLER)
- {
- if (_exception_code()==STATUS_ILLEGAL_INSTRUCTION)
- return 1;
- }
- return 0;
- }
- #endif
-#endif
-
-
-int cpu_check(){
-
+#ifndef WIN64
+extern "C"
+{
+ // cpu_flag detection helper functions
+ extern int check_cpu_features(void);
+ extern void sse_os_trigger(void);
+ extern void sse2_os_trigger(void);
+}
+
+
+ #ifdef __GNUC__
+ #include <signal.h>
+ #include <setjmp.h>
+ static jmp_buf mark;
+ static void sigill_handler(int signal)
+ {
+ longjmp(mark, 1);
+ }
+ static int sigill_check(void (*func)())
+ {
+ void (*old_handler)(int);
+ int jmpret;
+ old_handler=signal(SIGILL,sigill_handler);
+ if (old_handler==SIG_ERR)
+ return -1;
+
+ jmpret=setjmp(mark);
+ if (jmpret==0)
+ func();
+ signal(SIGILL,old_handler);
+ return jmpret;
+ }
+ #else
+ static int sigill_check(void (*func)())
+ {
+ __try
+ {
+ func();
+ }
+ __except(EXCEPTION_EXECUTE_HANDLER)
+ {
+ if (_exception_code()==STATUS_ILLEGAL_INSTRUCTION)
+ return 1;
+ }
+ return 0;
+ }
+ #endif
+#endif
+
+
+int cpu_check(){
+
#ifdef __GNUC__
/* CPU capabilities detection */
GetCpuCaps(&aCpuCaps);
- available_cpu_flags=(aCpuCaps.hasMMX ? FF_CPU_MMX|FF_CPU_MMXEXT:0)|
- (aCpuCaps.has3DNow ? FF_CPU_3DNOW|FF_CPU_3DNOWEXT:0)|
- (aCpuCaps.hasSSE ? FF_CPU_SSE:0)|
+ available_cpu_flags=(aCpuCaps.hasMMX ? FF_CPU_MMX|FF_CPU_MMXEXT:0)|
+ (aCpuCaps.has3DNow ? FF_CPU_3DNOW|FF_CPU_3DNOWEXT:0)|
+ (aCpuCaps.hasSSE ? FF_CPU_SSE:0)|
(aCpuCaps.hasSSE2 ? FF_CPU_SSE2:0);
-#elif defined(WIN32)
- available_cpu_flags=check_cpu_features();
- if ((available_cpu_flags&FF_CPU_SSE) && sigill_check(sse_os_trigger))
- available_cpu_flags&=~FF_CPU_SSE;
- if ((available_cpu_flags&FF_CPU_SSE2) && sigill_check(sse2_os_trigger))
- available_cpu_flags&=~FF_CPU_SSE2;
-
-#elif defined(WIN64)
- available_cpu_flags=(IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE)?FF_CPU_MMX|FF_CPU_MMXEXT:0)|
- (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE)?FF_CPU_3DNOW|FF_CPU_3DNOWEXT:0)|
- (IsProcessorFeaturePresent(PF_XMMI_INSTRUCTIONS_AVAILABLE)?FF_CPU_SSE:0)|
- (IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE)?FF_CPU_SSE2:0);
- #ifdef __INTEL_COMPILER
- available_cpu_flags|=FF_CPU_MMX|FF_CPU_MMXEXT;
- #endif
-
+#elif defined(WIN32)
+ available_cpu_flags=check_cpu_features();
+ if ((available_cpu_flags&FF_CPU_SSE) && sigill_check(sse_os_trigger))
+ available_cpu_flags&=~FF_CPU_SSE;
+ if ((available_cpu_flags&FF_CPU_SSE2) && sigill_check(sse2_os_trigger))
+ available_cpu_flags&=~FF_CPU_SSE2;
+
+#elif defined(WIN64)
+ available_cpu_flags=(IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE)?FF_CPU_MMX|FF_CPU_MMXEXT:0)|
+ (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE)?FF_CPU_3DNOW|FF_CPU_3DNOWEXT:0)|
+ (IsProcessorFeaturePresent(PF_XMMI_INSTRUCTIONS_AVAILABLE)?FF_CPU_SSE:0)|
+ (IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE)?FF_CPU_SSE2:0);
+ #ifdef __INTEL_COMPILER
+ available_cpu_flags|=FF_CPU_MMX|FF_CPU_MMXEXT;
+ #endif
+
#endif
aCpuCaps.hasMMX = (available_cpu_flags & FF_CPU_MMX ? 1:0);
@@ -99,6 +99,6 @@
debug_msg("cpudetect: MMX=%d MMX2=%d SSE=%d SSE2=%d 3DNow=%d 3DNowExt=%d\n", \
aCpuCaps.hasMMX, aCpuCaps.hasMMX2, aCpuCaps.hasSSE, aCpuCaps.hasSSE2, \
- aCpuCaps.has3DNow, aCpuCaps.has3DNowExt );
- return available_cpu_flags;
+ aCpuCaps.has3DNow, aCpuCaps.has3DNowExt );
+ return available_cpu_flags;
}
\ No newline at end of file
More information about the Sumover-dev
mailing list