From 629f3135970459228a4c81736d2681de0ca122f6 Mon Sep 17 00:00:00 2001 From: asmodai Date: Sun, 13 Dec 2015 17:58:06 +0300 Subject: [PATCH] Fixed cpu features detection code for SDK --- rehlds/public/rehlds/sys_shared.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/rehlds/public/rehlds/sys_shared.cpp b/rehlds/public/rehlds/sys_shared.cpp index 58981d6..54afe5f 100644 --- a/rehlds/public/rehlds/sys_shared.cpp +++ b/rehlds/public/rehlds/sys_shared.cpp @@ -44,7 +44,13 @@ void Sys_CheckCpuInstructionsSupport(void) { int cpuid_data[4]; +#if defined ASMLIB_H cpuid_ex(cpuid_data, 1, 0); +#elif defined(__GNUC__) + __get_cpuid(0x1, &cpuid_data[0], &cpuid_data[1], &cpuid_data[2], &cpuid_data[3]); +#else + __cpuidex((int*)cpuid_data, 1, 0); +#endif cpuinfo.sse3 = (cpuid_data[2] & SSE3_FLAG) ? 1 : 0; // ecx cpuinfo.ssse3 = (cpuid_data[2] & SSSE3_FLAG) ? 1 : 0; @@ -52,7 +58,13 @@ void Sys_CheckCpuInstructionsSupport(void) cpuinfo.sse4_2 = (cpuid_data[2] & SSE4_2_FLAG) ? 1 : 0; cpuinfo.avx = (cpuid_data[2] & AVX_FLAG) ? 1 : 0; +#if defined ASMLIB_H cpuid_ex(cpuid_data, 7, 0); +#elif defined(__GNUC__) + __get_cpuid(0x7, &cpuid_data[0], &cpuid_data[1], &cpuid_data[2], &cpuid_data[3]); +#else + __cpuidex((int*)cpuid_data, 7, 0); +#endif cpuinfo.avx2 = (cpuid_data[1] & AVX2_FLAG) ? 1 : 0; // ebx } \ No newline at end of file