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

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

Susan Sarandon
Lepaskan: 2024-11-16 16:53:03
asal
418 orang telah melayarinya

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;      
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan