Example #1
0
void _vl_x86cpu_init () 
{
  vl_int32 info [4] ;
  int max_func = 0 ;
  _vl_cpuid(info, 0) ;
  max_func = info[0] ;
  *((vl_int32*)x86cpu.vendor_string+0) = info[1] ;
  *((vl_int32*)x86cpu.vendor_string+1) = info[3] ;
  *((vl_int32*)x86cpu.vendor_string+2) = info[2] ;

  if (max_func >= 1) {
    _vl_cpuid(info, 1) ;
    x86cpu.has_mmx   = info[3] & (1 << 23) ;
    x86cpu.has_sse   = info[3] & (1 << 25) ;
    x86cpu.has_sse2  = info[3] & (1 << 26) ;
    x86cpu.has_sse3  = info[2] & (1 <<  0) ;
    x86cpu.has_sse41 = info[2] & (1 << 19) ;
    x86cpu.has_sse42 = info[2] & (1 << 20) ;
  }
}
Example #2
0
File: host.c Project: 0x27/encuadro
void
_vl_x86cpu_info_init (VlX86CpuInfo *self)
{
  vl_int32 info [4] ;
  int max_func = 0 ;
  _vl_cpuid(info, 0) ;
  max_func = info[0] ;
  self->vendor.words[0] = info[1] ;
  self->vendor.words[1] = info[3] ;
  self->vendor.words[2] = info[2] ;

  if (max_func >= 1) {
    _vl_cpuid(info, 1) ;
    self->hasMMX   = info[3] & (1 << 23) ;
    self->hasSSE   = info[3] & (1 << 25) ;
    self->hasSSE2  = info[3] & (1 << 26) ;
    self->hasSSE3  = info[2] & (1 <<  0) ;
    self->hasSSE41 = info[2] & (1 << 19) ;
    self->hasSSE42 = info[2] & (1 << 20) ;
  }
}