"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > O snippet de código fornecido na descrição do problema verifica com precisão o suporte do conjunto de instruções do SSE3?

O snippet de código fornecido na descrição do problema verifica com precisão o suporte do conjunto de instruções do SSE3?

Postado em 2025-03-22
Navegar:136

Does the Code Snippet Provided in the Problem Description Accurately Check for SSE3 Instruction Set Support?

como determinar o suporte da CPU para o SSE3 Instrutivest Set

Pergunta:

é o código fornecido na descrição de uma maneira válida para verificar sse3 Suporte?

Responder:

NO, o snippet de código não é válido para verificar suporte SSE3 no Windows XP.

Solução:

Aqui está um método mais confiável para detectar suporte da CPU para SSE3 e vários outros conjuntos de instruções:

código: // Windows #define cpuid (info, x) __cpuidex (info, x, 0) #outro // GCC Intrinsics #include Void CPUID (int info [4], int infotipo) { __cpuid_count (infotipo, 0, info [0], info [1], info [2], info [3]); } #endif // misc. bool hw_mmx; bool hw_x64; bool hw_abm; // manipulação avançada de bits bool hw_rdrand; bool hw_bmi1; bool hw_bmi2; bool hw_adx; bool hw_prefetchwt1; // SIMD: 128 bits bool hw_sse; bool hw_ssse2; bool hw_ssse3; bool hw_ssse3; bool hw_ssse41; bool hw_ssse42; bool hw_ssse4a; bool hw_aes; bool hw_sha; // SIMD: 256 bits bool hw_avx; bool hw_xop; bool hw_fma3; bool hw_fma4; bool hw_avx2; // SIMD: 512 bits bool hw_avx512f; // Fundação Avx512 bool hw_avx512cd; // AVX512 Detecção de conflitos bool hw_avx512pf; // Avx512 Presecch bool hw_avx512er; // AVX512 recíproco exponencial bool hw_avx512vl; // AVX512 Extensões de comprimento do vetor bool hw_avx512bw; // Avx512 Byte Word bool hw_avx512dq; // AVX512 Quadword duplo bool hw_avx512ifma; // AVX512 INTEIRO INTEIRO 52 bits multiply-add bool hw_avx512vbmi; // AVX512 Instruções de manipulação de bytes vetoriais int info [4]; cpuid (info, 0); int nids = info [0]; CPUID (info, 0x80000000); nexids não assinados = info [0]; // Detecte os recursos if (nids> = 0x00000001) { CPUID (info, 0x00000001); Hw_mmx = (info [3] & ((int) 1 = 0x00000007) { CPUID (info, 0x00000007); Hw_avx2 = (info [1] & ((int) 1 = 0x80000001) { CPUID (info, 0x80000001); Hw_x64 = (info [3] & ((int) 1

#ifdef _WIN32

//  Windows
#define cpuid(info, x)    __cpuidex(info, x, 0)

#else

//  GCC Intrinsics
#include 

void cpuid(int info[4], int InfoType) {
    __cpuid_count(InfoType, 0, info[0], info[1], info[2], info[3]);
}

#endif

//  Misc.
bool HW_MMX;
bool HW_x64;
bool HW_ABM;      // Advanced Bit Manipulation
bool HW_RDRAND;
bool HW_BMI1;
bool HW_BMI2;
bool HW_ADX;
bool HW_PREFETCHWT1;

//  SIMD: 128-bit
bool HW_SSE;
bool HW_SSE2;
bool HW_SSE3;
bool HW_SSSE3;
bool HW_SSE41;
bool HW_SSE42;
bool HW_SSE4a;
bool HW_AES;
bool HW_SHA;

//  SIMD: 256-bit
bool HW_AVX;
bool HW_XOP;
bool HW_FMA3;
bool HW_FMA4;
bool HW_AVX2;

//  SIMD: 512-bit
bool HW_AVX512F;    //  AVX512 Foundation
bool HW_AVX512CD;   //  AVX512 Conflict Detection
bool HW_AVX512PF;   //  AVX512 Prefetch
bool HW_AVX512ER;   //  AVX512 Exponential   Reciprocal
bool HW_AVX512VL;   //  AVX512 Vector Length Extensions
bool HW_AVX512BW;   //  AVX512 Byte   Word
bool HW_AVX512DQ;   //  AVX512 Doubleword   Quadword
bool HW_AVX512IFMA; //  AVX512 Integer 52-bit Fused Multiply-Add
bool HW_AVX512VBMI; //  AVX512 Vector Byte Manipulation Instructions

int info[4];
cpuid(info, 0);
int nIds = info[0];

cpuid(info, 0x80000000);
unsigned nExIds = info[0];

//  Detect Features
if (nIds >= 0x00000001){
    cpuid(info, 0x00000001);
    HW_MMX    = (info[3] & ((int)1 = 0x00000007){
    cpuid(info, 0x00000007);
    HW_AVX2   = (info[1] & ((int)1 = 0x80000001){
    cpuid(info, 0x80000001);
    HW_x64   = (info[3] & ((int)1 

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3