ntdll: Report 3dnow and sse features if the processor supports them.

This commit is contained in:
Hans Leidekker 2012-07-09 11:07:05 +02:00 committed by Alexandre Julliard
parent ec8ec0fa9b
commit 700eec9687
1 changed files with 12 additions and 3 deletions

View File

@ -922,7 +922,7 @@ void fill_cpu_info(void)
#endif #endif
cached_sci.Revision = 0; cached_sci.Revision = 0;
cached_sci.Reserved = 0; cached_sci.Reserved = 0;
cached_sci.FeatureSet = 0x1fff; /* FIXME: set some sensible defaults out of ProcessFeatures[] */ cached_sci.FeatureSet = 0x1fff;
NtCurrentTeb()->Peb->NumberOfProcessors = 1; NtCurrentTeb()->Peb->NumberOfProcessors = 1;
@ -1049,13 +1049,22 @@ void fill_cpu_info(void)
if (strstr(value, "tsc")) if (strstr(value, "tsc"))
user_shared_data->ProcessorFeatures[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE; user_shared_data->ProcessorFeatures[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE;
if (strstr(value, "3dnow")) if (strstr(value, "3dnow"))
{
user_shared_data->ProcessorFeatures[PF_3DNOW_INSTRUCTIONS_AVAILABLE] = TRUE; user_shared_data->ProcessorFeatures[PF_3DNOW_INSTRUCTIONS_AVAILABLE] = TRUE;
cached_sci.FeatureSet |= CPU_FEATURE_3DNOW;
}
/* This will also catch sse2, but we have sse itself /* This will also catch sse2, but we have sse itself
* if we have sse2, so no problem */ * if we have sse2, so no problem */
if (strstr(value, "sse")) if (strstr(value, "sse"))
{
user_shared_data->ProcessorFeatures[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; user_shared_data->ProcessorFeatures[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE;
cached_sci.FeatureSet |= CPU_FEATURE_SSE;
}
if (strstr(value, "sse2")) if (strstr(value, "sse2"))
{
user_shared_data->ProcessorFeatures[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; user_shared_data->ProcessorFeatures[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE;
cached_sci.FeatureSet |= CPU_FEATURE_SSE2;
}
if (strstr(value, "pni")) if (strstr(value, "pni"))
user_shared_data->ProcessorFeatures[PF_SSE3_INSTRUCTIONS_AVAILABLE] = TRUE; user_shared_data->ProcessorFeatures[PF_SSE3_INSTRUCTIONS_AVAILABLE] = TRUE;
if (strstr(value, "pae")) if (strstr(value, "pae"))