summaryrefslogtreecommitdiffstats
path: root/src/common/x64/cpu_detect.h
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2015-08-12 06:19:20 +0200
committerbunnei <bunneidev@gmail.com>2015-08-16 00:03:26 +0200
commita1942238f5046811833e9636c64f991905960732 (patch)
tree47de97e98aa464cee8e9297f419ac99c289a2293 /src/common/x64/cpu_detect.h
parentx64: Refactor to remove fake interfaces and general cleanups. (diff)
downloadyuzu-a1942238f5046811833e9636c64f991905960732.tar
yuzu-a1942238f5046811833e9636c64f991905960732.tar.gz
yuzu-a1942238f5046811833e9636c64f991905960732.tar.bz2
yuzu-a1942238f5046811833e9636c64f991905960732.tar.lz
yuzu-a1942238f5046811833e9636c64f991905960732.tar.xz
yuzu-a1942238f5046811833e9636c64f991905960732.tar.zst
yuzu-a1942238f5046811833e9636c64f991905960732.zip
Diffstat (limited to 'src/common/x64/cpu_detect.h')
-rw-r--r--src/common/x64/cpu_detect.h81
1 files changed, 81 insertions, 0 deletions
diff --git a/src/common/x64/cpu_detect.h b/src/common/x64/cpu_detect.h
new file mode 100644
index 000000000..19a2c25d6
--- /dev/null
+++ b/src/common/x64/cpu_detect.h
@@ -0,0 +1,81 @@
+// Copyright 2013 Dolphin Emulator Project / 2014 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+
+// Detect the CPU, so we'll know which optimizations to use
+#pragma once
+
+#include <string>
+
+namespace Common {
+
+enum CPUVendor
+{
+ VENDOR_INTEL = 0,
+ VENDOR_AMD = 1,
+ VENDOR_ARM = 2,
+ VENDOR_OTHER = 3,
+};
+
+struct CPUInfo
+{
+ CPUVendor vendor;
+
+ char cpu_string[0x21];
+ char brand_string[0x41];
+ bool OS64bit;
+ bool CPU64bit;
+ bool Mode64bit;
+
+ bool HTT;
+ int num_cores;
+ int logical_cpu_count;
+
+ bool bSSE;
+ bool bSSE2;
+ bool bSSE3;
+ bool bSSSE3;
+ bool bPOPCNT;
+ bool bSSE4_1;
+ bool bSSE4_2;
+ bool bLZCNT;
+ bool bSSE4A;
+ bool bAVX;
+ bool bAVX2;
+ bool bBMI1;
+ bool bBMI2;
+ bool bFMA;
+ bool bFMA4;
+ bool bAES;
+ // FXSAVE/FXRSTOR
+ bool bFXSR;
+ bool bMOVBE;
+ // This flag indicates that the hardware supports some mode
+ // in which denormal inputs _and_ outputs are automatically set to (signed) zero.
+ bool bFlushToZero;
+ bool bLAHFSAHF64;
+ bool bLongMode;
+ bool bAtom;
+
+ // ARMv8 specific
+ bool bFP;
+ bool bASIMD;
+ bool bCRC32;
+ bool bSHA1;
+ bool bSHA2;
+
+ // Call Detect()
+ explicit CPUInfo();
+
+ // Turn the cpu info into a string we can show
+ std::string Summarize();
+
+private:
+ // Detects the various cpu features
+ void Detect();
+};
+
+extern CPUInfo cpu_info;
+
+} // namespace Common