summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Wilkins <paulwilkins@google.com>2013-11-23 03:05:55 -0800
committerGerrit Code Review <gerrit@gerrit.golo.chromium.org>2013-11-23 03:05:55 -0800
commitf345da523850d0dab4c3d9e99f43978a7db467ce (patch)
tree5e358ee6e981c37ce24666fca6d5e3e3edd852e5
parent520aa705cbda11faf64b311e346a42104146da8a (diff)
parent8caeeb886a67c8314df4f9f5abd5f55aec6b2e82 (diff)
downloadlibvpx-f345da523850d0dab4c3d9e99f43978a7db467ce.tar
libvpx-f345da523850d0dab4c3d9e99f43978a7db467ce.tar.gz
libvpx-f345da523850d0dab4c3d9e99f43978a7db467ce.tar.bz2
libvpx-f345da523850d0dab4c3d9e99f43978a7db467ce.zip
Merge "Added cpuid compatibility for older MSVC versions"
-rw-r--r--vpx_ports/x86.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/vpx_ports/x86.h b/vpx_ports/x86.h
index e5e97e706..fdbed2524 100644
--- a/vpx_ports/x86.h
+++ b/vpx_ports/x86.h
@@ -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\