From 700eec9687139fa9793ee038393ea8cc8d0e72fe Mon Sep 17 00:00:00 2001 From: Hans Leidekker Date: Mon, 9 Jul 2012 11:07:05 +0200 Subject: [PATCH] ntdll: Report 3dnow and sse features if the processor supports them. --- dlls/ntdll/nt.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/dlls/ntdll/nt.c b/dlls/ntdll/nt.c index b90672b27b..6d6e0b0378 100644 --- a/dlls/ntdll/nt.c +++ b/dlls/ntdll/nt.c @@ -920,9 +920,9 @@ void fill_cpu_info(void) #else #error Unknown CPU #endif - cached_sci.Revision = 0; - cached_sci.Reserved = 0; - cached_sci.FeatureSet = 0x1fff; /* FIXME: set some sensible defaults out of ProcessFeatures[] */ + cached_sci.Revision = 0; + cached_sci.Reserved = 0; + cached_sci.FeatureSet = 0x1fff; NtCurrentTeb()->Peb->NumberOfProcessors = 1; @@ -1049,13 +1049,22 @@ void fill_cpu_info(void) if (strstr(value, "tsc")) user_shared_data->ProcessorFeatures[PF_RDTSC_INSTRUCTION_AVAILABLE] = TRUE; if (strstr(value, "3dnow")) + { 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 * if we have sse2, so no problem */ if (strstr(value, "sse")) + { user_shared_data->ProcessorFeatures[PF_XMMI_INSTRUCTIONS_AVAILABLE] = TRUE; + cached_sci.FeatureSet |= CPU_FEATURE_SSE; + } if (strstr(value, "sse2")) + { user_shared_data->ProcessorFeatures[PF_XMMI64_INSTRUCTIONS_AVAILABLE] = TRUE; + cached_sci.FeatureSet |= CPU_FEATURE_SSE2; + } if (strstr(value, "pni")) user_shared_data->ProcessorFeatures[PF_SSE3_INSTRUCTIONS_AVAILABLE] = TRUE; if (strstr(value, "pae")) -- 2.32.0.93.g670b81a890