以下程式碼是否足以驗證 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中文網其他相關文章!