Maison > développement back-end > C++ > le corps du texte

Le code fourni est-il suffisant pour vérifier la prise en charge de SSE3 sur les processeurs ?

Susan Sarandon
Libérer: 2024-11-16 16:53:03
original
338 Les gens l'ont consulté

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

Vérification de la prise en charge de SSE3 sur les processeurs

La question

Le code suivant est-il suffisant pour vérifier si un processeur prend en charge le jeu d'instructions 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;      
}
Copier après la connexion

La réponse

Malheureusement, l'extrait de code fourni présente une limitation sous Windows XP. Pour surmonter ce problème et garantir une détection précise de la prise en charge de SSE3 sur une gamme plus large de systèmes, une solution plus complète est recommandée.

Vous trouverez ci-dessous une approche qui fournit une détection SSE3 fiable sur Windows XP et d'autres systèmes d'exploitation :

// 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;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal