Add SSE4a CPUID check

This commit is contained in:
Luke Street 2019-12-10 17:09:24 -05:00
parent c5d90a5d5e
commit c3671245e2
1 changed files with 7 additions and 1 deletions

View File

@ -49,7 +49,8 @@ void detectCPU() {
*reinterpret_cast<int*>((char*)g_cpuFeatures.cpuVendor + 4) = regs[3]; *reinterpret_cast<int*>((char*)g_cpuFeatures.cpuVendor + 4) = regs[3];
*reinterpret_cast<int*>((char*)g_cpuFeatures.cpuVendor + 8) = regs[2]; *reinterpret_cast<int*>((char*)g_cpuFeatures.cpuVendor + 8) = regs[2];
getCpuInfo(0x80000000, regs); getCpuInfo(0x80000000, regs);
if (regs[0] >= 0x80000004) { int maxExtended = regs[0];
if (maxExtended >= 0x80000004) {
for (unsigned int i = 0x80000002; i <= 0x80000004; i++) { for (unsigned int i = 0x80000002; i <= 0x80000004; i++) {
getCpuInfo(i, regs); getCpuInfo(i, regs);
// Interpret CPU brand string and cache information. // Interpret CPU brand string and cache information.
@ -79,6 +80,11 @@ void detectCPU() {
memset((bool*)&g_cpuFeatures.AVX2, ((regs[1] & 0x00000020) != 0), 1); memset((bool*)&g_cpuFeatures.AVX2, ((regs[1] & 0x00000020) != 0), 1);
} }
if (maxExtended >= 0x80000001) {
getCpuInfo(0x80000001, regs);
memset((bool*)&g_cpuFeatures.SSE4a, ((regs[2] & (1 << 6)) != 0), 1);
}
isCPUInit = true; isCPUInit = true;
#endif #endif
} }