Мне нужно определить поддержку процессора для SSE2 перед установкой программного обеспечения. Насколько я понимаю, я придумал следующее:Определить поддержку процессора для SSE2?
bool TestSSE2(char * szErrorMsg)
{
__try
{
__asm
{
xorpd xmm0, xmm0 // executing SSE2 instruction
}
}
#pragma warning (suppress: 6320)
__except (EXCEPTION_EXECUTE_HANDLER)
{
if (_exception_code() == STATUS_ILLEGAL_INSTRUCTION)
{
_tcscpy_s(szErrorMsg,MSGSIZE, _T("Streaming SIMD Extensions 2(SSE2) is not supported by the CPU.\r\n Unable to launch APP"));
return false;
}
_tcscpy_s(szErrorMsg,MSGSIZE, _T("Streaming SIMD Extensions 2(SSE2) is not supported by the CPU.\r\n Unable to launch APP"));
return false;
}
return true;
}
Будет ли это работать? Я не уверен, как тестировать, так как мой процессор поддерживает его, поэтому я не получаю false из вызова функции.
Как определить поддержку процессора для SSE2?
Любая конкретная операционная система? –
Windows xp или выше. – DogDog
Ваш код должен работать нормально, насколько я могу судить. Я бы предпочел путь CPUID, потому что он немного более гибкий и дает вам доступ к целому ряду других флагов возможностей ЦП. –