00001 #ifndef __CFPUInformation__ 00002 #define __CFPUInformation__ 00003 00004 #include "../Basics/CString.hpp" 00005 #include "SSystemInformation.hpp" 00006 #include "../IO/CTextStream.hpp" 00007 00008 // =========================================================================== 00009 00010 using Exponent::Host::SSystemInformation; 00011 using Exponent::Basics::CString; 00012 using Exponent::IO::CTextStream; 00013 00014 // =========================================================================== 00015 00016 namespace Exponent 00017 { 00018 namespace Host 00019 { 00037 class CFPUInformation 00038 { 00039 public: 00040 00041 // =========================================================================== 00042 00046 static void initialiseCPUInformation(); 00047 00048 // =========================================================================== 00049 00054 static void dumpFPUInfoToFile(CSystemString &path); 00055 00060 static void dumpFPUInfoToFile(CTextStream &stream); 00061 00062 // =========================================================================== 00063 00068 static bool CPUHasMMX() { return CFPU_INFORMATION_HAS_MMX; } 00069 00074 static bool CPUHasSSE() { return CFPU_INFORMATION_HAS_SSE; } 00075 00080 static bool CPUHasSSE2() { return CFPU_INFORMATION_HAS_SSE2; } 00081 00086 static bool CPUHasSSE3() { return CFPU_INFORMATION_HAS_SSE3; } 00087 00092 static bool CPUHasHyperThreading() { return CFPU_INFORMATION_HAS_HT; } 00093 00094 // =========================================================================== 00095 00096 protected: 00097 00098 // =========================================================================== 00099 00100 static bool CFPU_INFORMATION_HAS_MMX; 00101 static bool CFPU_INFORMATION_HAS_SSE; 00102 static bool CFPU_INFORMATION_HAS_SSE2; 00103 static bool CFPU_INFORMATION_HAS_SSE3; 00104 static bool CFPU_INFORMATION_HAS_HT; 00106 }; 00107 } 00108 } 00109 #endif // End of CFPUInformation.hpp