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) ; } }
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) ; } }