ホームページ >バックエンド開発 >C++ >提供されたコードは CPU での SSE3 サポートを確認するのに十分ですか?

提供されたコードは CPU での SSE3 サポートを確認するのに十分ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-16 16:53:03407ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。