Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Adakah Kod yang Disediakan Mencukupi untuk Menyemak Sokongan SSE3 pada CPU?

Adakah Kod yang Disediakan Mencukupi untuk Menyemak Sokongan SSE3 pada CPU?

Susan Sarandon
Susan Sarandonasal
2024-11-16 16:53:03333semak imbas

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

Menyemak Sokongan SSE3 pada CPU

Persoalannya

Adakah kod berikut mencukupi untuk mengesahkan sama ada CPU menyokong set arahan 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;      
}

Jawapannya

Malangnya, coretan kod yang disediakan mempunyai had pada Windows XP. Untuk mengatasinya dan memastikan pengesanan tepat bagi sokongan SSE3 merentas julat sistem yang lebih luas, penyelesaian yang lebih komprehensif disyorkan.

Di bawah ialah pendekatan yang menyediakan pengesanan SSE3 yang boleh dipercayai pada Windows XP dan sistem pengendalian lain:

// 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;
}

Atas ialah kandungan terperinci Adakah Kod yang Disediakan Mencukupi untuk Menyemak Sokongan SSE3 pada CPU?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn