cpuinfo: use __cpuidex instead of __cpuid

The classic Intel Compiler does not clear the ecx register prior
to executing the cpuid opcode.
This commit is contained in:
Anonymous Maarten 2023-03-22 23:40:35 +01:00 committed by Anonymous Maarten
parent 1158cff9ea
commit 5aa76de35f

View file

@ -262,15 +262,16 @@ done:
__asm mov c, ecx \
__asm mov d, edx \
}
#elif defined(_MSC_VER) && defined(_M_X64)
#define cpuid(func, a, b, c, d) \
{ \
int CPUInfo[4]; \
__cpuid(CPUInfo, func); \
a = CPUInfo[0]; \
b = CPUInfo[1]; \
c = CPUInfo[2]; \
d = CPUInfo[3]; \
#elif (defined(_MSC_VER) && defined(_M_X64))
/* Use __cpuidex instead of __cpuid because ICL does not clear ecx register */
#define cpuid(func, a, b, c, d) \
{ \
int CPUInfo[4]; \
__cpuidex(CPUInfo, func, 0); \
a = CPUInfo[0]; \
b = CPUInfo[1]; \
c = CPUInfo[2]; \
d = CPUInfo[3]; \
}
#else
#define cpuid(func, a, b, c, d) \