> 백엔드 개발 > C++ > 본문

제공된 코드가 CPU에서 SSE3 지원을 확인하는 데 충분합니까?

Susan Sarandon
풀어 주다: 2024-11-16 16:53:03
원래의
338명이 탐색했습니다.

Is the Provided Code Sufficient for Checking SSE3 Support on CPUs?

CPU에서 SSE3 지원 확인

질문

다음 코드는 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] &amp; ((int)1 <<  0)) != 0;
}
로그인 후 복사

위 내용은 제공된 코드가 CPU에서 SSE3 지원을 확인하는 데 충분합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿