Added cpuid compatibility for older MSVC versions
authorYaowu Xu <yaowu@google.com>
Sat, 23 Nov 2013 00:45:56 +0000 (16:45 -0800)
committerYaowu Xu <yaowu@google.com>
Sat, 23 Nov 2013 01:06:02 +0000 (17:06 -0800)
Change-Id: I891bf936e03411ca611620e7cb2eb5081993a346

vpx_ports/x86.h

index e5e97e7..fdbed25 100644 (file)
@@ -71,6 +71,7 @@ typedef enum {
 #endif
 #else /* end __SUNPRO__ */
 #if ARCH_X86_64
+#if defined(_MSC_VER) && _MSC_VER > 1500
 void __cpuidex(int CPUInfo[4], int info_type, int ecxvalue);
 #pragma intrinsic(__cpuidex)
 #define cpuid(func, func2, a, b, c, d) do {\
@@ -79,6 +80,15 @@ void __cpuidex(int CPUInfo[4], int info_type, int ecxvalue);
     a = regs[0];  b = regs[1];  c = regs[2];  d = regs[3];\
   } while(0)
 #else
+void __cpuid(int CPUInfo[4], int info_type);
+#pragma intrinsic(__cpuid)
+#define cpuid(func, func2, a, b, c, d) do {\
+    int regs[4];\
+    __cpuid(regs, func); \
+    a = regs[0];  b = regs[1];  c = regs[2];  d = regs[3];\
+  } while (0)
+#endif
+#else
 #define cpuid(func, func2, a, b, c, d)\
   __asm mov eax, func\
   __asm mov ecx, func2\