#include <cpu_info.h>
Nevrax France
Definition at line 41 of file cpu_info.h.
Static Public Member Functions | |
bool | hasCPUID (void) |
bool | hasMMX (void) |
bool | hasSSE (void) |
|
test wether the cpuid instruction is supported (always false on non intel architectures) Definition at line 108 of file cpu_info.cpp. References uint32.
00109 { 00110 #ifdef NL_OS_WINDOWS 00111 uint32 result; 00112 __asm 00113 { 00114 pushad 00115 pushfd 00116 // If ID bit of EFLAGS can change, then cpuid is available 00117 pushfd 00118 pop eax // Get EFLAG 00119 mov ecx,eax 00120 xor eax,0x200000 // Flip ID bit 00121 push eax 00122 popfd // Write EFLAGS 00123 pushfd 00124 pop eax // read back EFLAG 00125 xor eax,ecx 00126 je noCpuid // no flip -> no CPUID instr. 00127 00128 popfd // restore state 00129 popad 00130 mov result, 1 00131 jmp CPUIDPresent 00132 00133 noCpuid: 00134 popfd // restore state 00135 popad 00136 mov result, 0 00137 CPUIDPresent: 00138 } 00139 return result == 1; 00140 #else 00141 return false; 00142 #endif 00143 } |
|
helps to know wether the processor features mmx instruction set This is initialized at started, so its fast (always false on not 0x86 architecture ...) Definition at line 144 of file cpu_info.cpp. References NLMISC::HasMMX.
00144 { return HasMMX; } |
|
helps to know wether the processor has streaming SIMD instructions (the OS must supports it) This is initialized at started, so its fast (always false on not 0x86 architecture ...) Definition at line 145 of file cpu_info.cpp. References NLMISC::HasSSE.
00145 { return HasSSE; } |