| Index: source/cpu_id.cc
|
| diff --git a/source/cpu_id.cc b/source/cpu_id.cc
|
| index d64d9d565729d8b371794440d961b92747e75a1f..84927ebc3e2b730fd637ee3519d6881c8751d556 100644
|
| --- a/source/cpu_id.cc
|
| +++ b/source/cpu_id.cc
|
| @@ -15,7 +15,7 @@
|
| #endif
|
| #if !defined(__pnacl__) && !defined(__CLR_VER) && \
|
| !defined(__native_client__) && (defined(_M_IX86) || defined(_M_X64)) && \
|
| - defined(_MSC_VER) && (_MSC_FULL_VER >= 160040219)
|
| + defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219)
|
| #include <immintrin.h> // For _xgetbv()
|
| #endif
|
|
|
| @@ -36,7 +36,8 @@ extern "C" {
|
|
|
| // For functions that use the stack and have runtime checks for overflow,
|
| // use SAFEBUFFERS to avoid additional check.
|
| -#if (defined(_MSC_VER) && !defined(__clang__)) && (_MSC_FULL_VER >= 160040219)
|
| +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219) && \
|
| + !defined(__clang__)
|
| #define SAFEBUFFERS __declspec(safebuffers)
|
| #else
|
| #define SAFEBUFFERS
|
| @@ -50,7 +51,7 @@ LIBYUV_API
|
| void CpuId(uint32 info_eax, uint32 info_ecx, uint32* cpu_info) {
|
| #if defined(_MSC_VER)
|
| // Visual C version uses intrinsic or inline x86 assembly.
|
| -#if (_MSC_FULL_VER >= 160040219)
|
| +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219)
|
| __cpuidex((int*)(cpu_info), info_eax, info_ecx);
|
| #elif defined(_M_IX86)
|
| __asm {
|
| @@ -117,7 +118,7 @@ void CpuId(uint32 eax, uint32 ecx, uint32* cpu_info) {
|
| // X86 CPUs have xgetbv to detect OS saves high parts of ymm registers.
|
| int GetXCR0() {
|
| uint32 xcr0 = 0u;
|
| -#if (_MSC_FULL_VER >= 160040219)
|
| +#if defined(_MSC_FULL_VER) && (_MSC_FULL_VER >= 160040219)
|
| xcr0 = (uint32)(_xgetbv(0)); // VS2010 SP1 required.
|
| #elif defined(__i386__) || defined(__x86_64__)
|
| asm(".byte 0x0f, 0x01, 0xd0" : "=a" (xcr0) : "c" (0) : "%edx");
|
|
|