다음 코드는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!