/* ================= Sys_GetProcessorFeatures ================= */ int Sys_GetProcessorFeatures( void ) { int features = 0; //cpuFeatures_t features = (cpuFeatures_t)0; CPUINFO cpuinfo; GetCPUInfo( &cpuinfo, CI_FALSE ); if( HasCPUID() ) features |= CF_RDTSC; if( HasMMX( &cpuinfo ) ) features |= CF_MMX; if( HasMMXExt( &cpuinfo ) ) features |= CF_MMX_EXT; if( Has3DNow( &cpuinfo ) ) features |= CF_3DNOW; if( Has3DNowExt( &cpuinfo ) ) features |= CF_3DNOW_EXT; if( HasSSE( &cpuinfo ) ) features |= CF_SSE; if( HasSSE2( &cpuinfo ) ) features |= CF_SSE2; if( HasSSE3( &cpuinfo ) ) features |= CF_SSE3; if( HasSSSE3( &cpuinfo ) ) features |= CF_SSSE3; if( HasSSE4_1( &cpuinfo ) ) features |= CF_SSE4_1; if( HasSSE4_2( &cpuinfo ) ) features |= CF_SSE4_2; if( HasHTT( &cpuinfo ) ) features |= CF_HasHTT; if( HasSerial( &cpuinfo ) ) features |= CF_HasSerial; if( Is64Bit( &cpuinfo ) ) features |= CF_Is64Bit; return features; }
nglString nglCPUInfo::Dump() { nglString text, buffer; uint count = GetCount(); if (count == 0) { text = _T("no host CPU information available"); return text; } switch (GetFamily()) { case eUnknown: text += _T("unknown"); break; case eIA32 : text += _T("IA32"); break; case eIA64 : text += _T("IA64"); break; case ePPC : text += _T("PPC"); break; case eAlpha : text += _T("Alpha"); break; case eMIPS : text += _T("MIPS"); break; } if (count > 1) { buffer.Format(_T(" x %d"), count); text += _T(" x %d"); } buffer.Format(_T("%s%s%s%s%s"), HasMMX() ? _T(" MMX") : _T(""), HasSSE() ? _T(" SSE") : _T(""), HasSSE2() ? _T(" SSE2") : _T(""), Has3DNow() ? _T(" 3DNow") : _T(""), HasAltivec() ? _T(" Altivec") : _T("")); if (buffer.GetLength()) { text += _T(" with"); text += buffer; } return text; }