mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 04:24:07 +02:00
Add CPUID::getAllFeatures
This commit is contained in:
parent
b155a0534b
commit
3c9f26a7f2
3 changed files with 70 additions and 1 deletions
|
@ -14,4 +14,62 @@
|
|||
|
||||
const CPUID::CPUID_Internal CPUID::CPU_Rep;
|
||||
|
||||
std::vector<CPUID::Feature> CPUID::getAllFeatures() {
|
||||
std::vector<CPUID::Feature> features;
|
||||
|
||||
features.push_back({ "3DNOW", CPUID::_3DNOW() });
|
||||
features.push_back({ "3DNOWEXT", CPUID::_3DNOWEXT() });
|
||||
features.push_back({ "ABM", CPUID::ABM() });
|
||||
features.push_back({ "ADX", CPUID::ADX() });
|
||||
features.push_back({ "AES", CPUID::AES() });
|
||||
features.push_back({ "AVX", CPUID::AVX() });
|
||||
features.push_back({ "AVX2", CPUID::AVX2() });
|
||||
features.push_back({ "AVX512CD", CPUID::AVX512CD() });
|
||||
features.push_back({ "AVX512ER", CPUID::AVX512ER() });
|
||||
features.push_back({ "AVX512F", CPUID::AVX512F() });
|
||||
features.push_back({ "AVX512PF", CPUID::AVX512PF() });
|
||||
features.push_back({ "BMI1", CPUID::BMI1() });
|
||||
features.push_back({ "BMI2", CPUID::BMI2() });
|
||||
features.push_back({ "CLFSH", CPUID::CLFSH() });
|
||||
features.push_back({ "CMPXCHG16B", CPUID::CMPXCHG16B() });
|
||||
features.push_back({ "CX8", CPUID::CX8() });
|
||||
features.push_back({ "ERMS", CPUID::ERMS() });
|
||||
features.push_back({ "F16C", CPUID::F16C() });
|
||||
features.push_back({ "FMA", CPUID::FMA() });
|
||||
features.push_back({ "FSGSBASE", CPUID::FSGSBASE() });
|
||||
features.push_back({ "FXSR", CPUID::FXSR() });
|
||||
features.push_back({ "HLE", CPUID::HLE() });
|
||||
features.push_back({ "INVPCID", CPUID::INVPCID() });
|
||||
features.push_back({ "LAHF", CPUID::LAHF() });
|
||||
features.push_back({ "LZCNT", CPUID::LZCNT() });
|
||||
features.push_back({ "MMX", CPUID::MMX() });
|
||||
features.push_back({ "MMXEXT", CPUID::MMXEXT() });
|
||||
features.push_back({ "MONITOR", CPUID::MONITOR() });
|
||||
features.push_back({ "MOVBE", CPUID::MOVBE() });
|
||||
features.push_back({ "MSR", CPUID::MSR() });
|
||||
features.push_back({ "OSXSAVE", CPUID::OSXSAVE() });
|
||||
features.push_back({ "PCLMULQDQ", CPUID::PCLMULQDQ() });
|
||||
features.push_back({ "POPCNT", CPUID::POPCNT() });
|
||||
features.push_back({ "PREFETCHWT1", CPUID::PREFETCHWT1() });
|
||||
features.push_back({ "RDRAND", CPUID::RDRAND() });
|
||||
features.push_back({ "RDSEED", CPUID::RDSEED() });
|
||||
features.push_back({ "RDTSCP", CPUID::RDTSCP() });
|
||||
features.push_back({ "RTM", CPUID::RTM() });
|
||||
features.push_back({ "SEP", CPUID::SEP() });
|
||||
features.push_back({ "SHA", CPUID::SHA() });
|
||||
features.push_back({ "SSE", CPUID::SSE() });
|
||||
features.push_back({ "SSE2", CPUID::SSE2() });
|
||||
features.push_back({ "SSE3", CPUID::SSE3() });
|
||||
features.push_back({ "SSE4.1", CPUID::SSE41() });
|
||||
features.push_back({ "SSE4.2", CPUID::SSE42() });
|
||||
features.push_back({ "SSE4a", CPUID::SSE4a() });
|
||||
features.push_back({ "SSSE3", CPUID::SSSE3() });
|
||||
features.push_back({ "SYSCALL", CPUID::SYSCALL() });
|
||||
features.push_back({ "TBM", CPUID::TBM() });
|
||||
features.push_back({ "XOP", CPUID::XOP() });
|
||||
features.push_back({ "XSAVE", CPUID::XSAVE() });
|
||||
|
||||
return features;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -35,7 +35,13 @@ class CPUID
|
|||
class CPUID_Internal;
|
||||
|
||||
public:
|
||||
// getters
|
||||
struct Feature {
|
||||
std::string name;
|
||||
bool supported;
|
||||
};
|
||||
|
||||
static std::vector<Feature> getAllFeatures();
|
||||
|
||||
static std::string Vendor(void) { return CPU_Rep.vendor_; }
|
||||
static std::string Brand(void) { return CPU_Rep.brand_; }
|
||||
|
||||
|
@ -198,6 +204,7 @@ private:
|
|||
std::vector<std::array<int, 4>> data_;
|
||||
std::vector<std::array<int, 4>> extdata_;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -765,6 +765,10 @@ void printSystemInformation() {
|
|||
qDebug() << "\tCPU Vendor: " << CPUID::Vendor().c_str();
|
||||
qDebug() << "\tCPU Brand: " << CPUID::Brand().c_str();
|
||||
|
||||
for (auto& feature : CPUID::getAllFeatures()) {
|
||||
qDebug().nospace().noquote() << "\t[" << (feature.supported ? "x" : " ") << "] " << feature.name.c_str();
|
||||
}
|
||||
|
||||
printSupported("3DNOW", CPUID::_3DNOW());
|
||||
printSupported("3DNOWEXT", CPUID::_3DNOWEXT());
|
||||
printSupported("ABM", CPUID::ABM());
|
||||
|
|
Loading…
Reference in a new issue