- __cpuid(CPUInfo, 1);
- if(CPUInfo[3] & 0x00800000) features.features |= FLAG_MMX;
- if(CPUInfo[3] & 0x02000000) features.features |= FLAG_SSE;
- if(CPUInfo[3] & 0x04000000) features.features |= FLAG_SSE2;
- if(CPUInfo[2] & 0x00000001) features.features |= FLAG_SSE3;
- if(CPUInfo[2] & 0x00000200) features.features |= FLAG_SSSE3;
- if(CPUInfo[2] & 0x00080000) features.features |= FLAG_SSE4;
- if(CPUInfo[2] & 0x00100000) features.features |= FLAG_SSE42;
- if ((CPUInfo[2] & 0x18000000) == 0x18000000)
+ MY_CPUID(&cpuInfo[0], 1);
+ features.features |= CHECK_FLAG(cpuInfo[3], 0x00008000, FLAG_CMOV);
+ features.features |= CHECK_FLAG(cpuInfo[3], 0x00800000, FLAG_MMX);
+ features.features |= CHECK_FLAG(cpuInfo[3], 0x02000000, FLAG_SSE);
+ features.features |= CHECK_FLAG(cpuInfo[3], 0x04000000, FLAG_SSE2);
+ features.features |= CHECK_FLAG(cpuInfo[2], 0x00000001, FLAG_SSE3);
+ features.features |= CHECK_FLAG(cpuInfo[2], 0x00000200, FLAG_SSSE3);
+ features.features |= CHECK_FLAG(cpuInfo[2], 0x00080000, FLAG_SSE41);
+ features.features |= CHECK_FLAG(cpuInfo[2], 0x00100000, FLAG_SSE42);
+
+ //Check for AVX
+ if ((cpuInfo[2] & 0x18000000) == 0x18000000)