16bfbea62SDavid McPaul /* 26bfbea62SDavid McPaul * Copyright (C) 2009 David McPaul 36bfbea62SDavid McPaul * 46bfbea62SDavid McPaul * All rights reserved. Distributed under the terms of the MIT License. 56bfbea62SDavid McPaul */ 66bfbea62SDavid McPaul #ifndef __CPU_CAPABILITIES__ 76bfbea62SDavid McPaul #define __CPU_CAPABILITIES__ 86bfbea62SDavid McPaul 9fae87f40SStephan Aßmus 10fae87f40SStephan Aßmus #include <SupportDefs.h> 11fae87f40SStephan Aßmus 12fae87f40SStephan Aßmus 136bfbea62SDavid McPaul #define CAPABILITY_MMX 1 146bfbea62SDavid McPaul #define CAPABILITY_SSE1 2 156bfbea62SDavid McPaul #define CAPABILITY_SSE2 3 166bfbea62SDavid McPaul #define CAPABILITY_SSE3 4 176bfbea62SDavid McPaul #define CAPABILITY_SSSE3 5 186bfbea62SDavid McPaul #define CAPABILITY_SSE41 6 196bfbea62SDavid McPaul #define CAPABILITY_SSE42 7 206bfbea62SDavid McPaul 216bfbea62SDavid McPaul 226bfbea62SDavid McPaul class CPUCapabilities { 236bfbea62SDavid McPaul public: 246bfbea62SDavid McPaul CPUCapabilities(); 256bfbea62SDavid McPaul ~CPUCapabilities(); 266bfbea62SDavid McPaul 276bfbea62SDavid McPaul bool HasMMX(); 286bfbea62SDavid McPaul bool HasSSE1(); 296bfbea62SDavid McPaul bool HasSSE2(); 306bfbea62SDavid McPaul bool HasSSE3(); 316bfbea62SDavid McPaul bool HasSSSE3(); 326bfbea62SDavid McPaul bool HasSSE41(); 336bfbea62SDavid McPaul bool HasSSE42(); 346bfbea62SDavid McPaul 356bfbea62SDavid McPaul void PrintCapabilities(); 366bfbea62SDavid McPaul 376bfbea62SDavid McPaul private: 38*5ffbe7d7SAugustin Cavalier #if defined(__i386__) || defined(__x86_64__) 391a37a812SJerome Duval void _SetIntelCapabilities(); 40*5ffbe7d7SAugustin Cavalier #endif // __i386__ || __x86_64__ 416bfbea62SDavid McPaul 421a37a812SJerome Duval uint32 fCapabilities; 436bfbea62SDavid McPaul }; 446bfbea62SDavid McPaul 456bfbea62SDavid McPaul #endif //__CPU_CAPABILITIES__ 46