以下代码是否足以验证 CPU 是否支持 SSE3 指令集?
bool CheckSSE3() { int CPUInfo[4] = {-1}; //-- Get number of valid info ids __cpuid(CPUInfo, 0); int nIds = CPUInfo[0]; //-- Get info for id "1" if (nIds >= 1) { __cpuid(CPUInfo, 1); bool bSSE3NewInstructions = (CPUInfo[2] & 0x1) || false; return bSSE3NewInstructions; } return false; }
不幸的是,提供的代码片段在 Windows XP 上有限制。为了克服这个问题并确保在更广泛的系统上准确检测 SSE3 支持,建议采用更全面的解决方案。
以下方法可以在 Windows XP 和其他操作系统上提供可靠的 SSE3 检测:
// Access CPUID instruction #ifdef _WIN32 #define cpuid(info, x) __cpuidex(info, x, 0) #else #include <cpuid.h> void cpuid(int info[4], int InfoType){ __cpuid_count(InfoType, 0, info[0], info[1], info[2], info[3]); } #endif // Detect SSE3 support bool HW_SSE3; int info[4]; cpuid(info, 0); int nIds = info[0]; if (nIds >= 0x00000001){ cpuid(info,0x00000001); HW_SSE3 = (info[2] & ((int)1 << 0)) != 0; }
以上是提供的代码足以检查 CPU 上的 SSE3 支持吗?的详细内容。更多信息请关注PHP中文网其他相关文章!