示例#1
0
/*
=================
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;
}
示例#2
0
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;
}