Merge pull request #5021 from ccawley2011/cpu_detect
common/cpu_detect: Remove unused functionality
This commit is contained in:
		| @@ -3,8 +3,6 @@ | ||||
| // Refer to the license.txt file included. | ||||
|  | ||||
| #include <cstring> | ||||
| #include <string> | ||||
| #include <thread> | ||||
| #include "common/common_types.h" | ||||
| #include "common/x64/cpu_detect.h" | ||||
|  | ||||
| @@ -51,8 +49,6 @@ namespace Common { | ||||
| static CPUCaps Detect() { | ||||
|     CPUCaps caps = {}; | ||||
|  | ||||
|     caps.num_cores = std::thread::hardware_concurrency(); | ||||
|  | ||||
|     // Assumes the CPU supports the CPUID instruction. Those that don't would likely not support | ||||
|     // Citra at all anyway | ||||
|  | ||||
| @@ -70,12 +66,6 @@ static CPUCaps Detect() { | ||||
|     __cpuid(cpu_id, 0x80000000); | ||||
|  | ||||
|     u32 max_ex_fn = cpu_id[0]; | ||||
|     if (!strcmp(caps.brand_string, "GenuineIntel")) | ||||
|         caps.vendor = CPUVendor::INTEL; | ||||
|     else if (!strcmp(caps.brand_string, "AuthenticAMD")) | ||||
|         caps.vendor = CPUVendor::AMD; | ||||
|     else | ||||
|         caps.vendor = CPUVendor::OTHER; | ||||
|  | ||||
|     // Set reasonable default brand string even if brand string not available | ||||
|     strcpy(caps.cpu_string, caps.brand_string); | ||||
| @@ -96,15 +86,9 @@ static CPUCaps Detect() { | ||||
|             caps.sse4_1 = true; | ||||
|         if ((cpu_id[2] >> 20) & 1) | ||||
|             caps.sse4_2 = true; | ||||
|         if ((cpu_id[2] >> 22) & 1) | ||||
|             caps.movbe = true; | ||||
|         if ((cpu_id[2] >> 25) & 1) | ||||
|             caps.aes = true; | ||||
|  | ||||
|         if ((cpu_id[3] >> 24) & 1) { | ||||
|             caps.fxsave_fxrstor = true; | ||||
|         } | ||||
|  | ||||
|         // AVX support requires 3 separate checks: | ||||
|         //  - Is the AVX bit set in CPUID? | ||||
|         //  - Is the XSAVE bit set in CPUID? | ||||
| @@ -129,8 +113,6 @@ static CPUCaps Detect() { | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     caps.flush_to_zero = caps.sse; | ||||
|  | ||||
|     if (max_ex_fn >= 0x80000004) { | ||||
|         // Extract CPU model string | ||||
|         __cpuid(cpu_id, 0x80000002); | ||||
| @@ -144,14 +126,8 @@ static CPUCaps Detect() { | ||||
|     if (max_ex_fn >= 0x80000001) { | ||||
|         // Check for more features | ||||
|         __cpuid(cpu_id, 0x80000001); | ||||
|         if (cpu_id[2] & 1) | ||||
|             caps.lahf_sahf_64 = true; | ||||
|         if ((cpu_id[2] >> 5) & 1) | ||||
|             caps.lzcnt = true; | ||||
|         if ((cpu_id[2] >> 16) & 1) | ||||
|             caps.fma4 = true; | ||||
|         if ((cpu_id[3] >> 29) & 1) | ||||
|             caps.long_mode = true; | ||||
|     } | ||||
|  | ||||
|     return caps; | ||||
| @@ -162,48 +138,4 @@ const CPUCaps& GetCPUCaps() { | ||||
|     return caps; | ||||
| } | ||||
|  | ||||
| std::string GetCPUCapsString() { | ||||
|     auto caps = GetCPUCaps(); | ||||
|  | ||||
|     std::string sum(caps.cpu_string); | ||||
|     sum += " ("; | ||||
|     sum += caps.brand_string; | ||||
|     sum += ")"; | ||||
|  | ||||
|     if (caps.sse) | ||||
|         sum += ", SSE"; | ||||
|     if (caps.sse2) { | ||||
|         sum += ", SSE2"; | ||||
|         if (!caps.flush_to_zero) | ||||
|             sum += " (without DAZ)"; | ||||
|     } | ||||
|  | ||||
|     if (caps.sse3) | ||||
|         sum += ", SSE3"; | ||||
|     if (caps.ssse3) | ||||
|         sum += ", SSSE3"; | ||||
|     if (caps.sse4_1) | ||||
|         sum += ", SSE4.1"; | ||||
|     if (caps.sse4_2) | ||||
|         sum += ", SSE4.2"; | ||||
|     if (caps.avx) | ||||
|         sum += ", AVX"; | ||||
|     if (caps.avx2) | ||||
|         sum += ", AVX2"; | ||||
|     if (caps.bmi1) | ||||
|         sum += ", BMI1"; | ||||
|     if (caps.bmi2) | ||||
|         sum += ", BMI2"; | ||||
|     if (caps.fma) | ||||
|         sum += ", FMA"; | ||||
|     if (caps.aes) | ||||
|         sum += ", AES"; | ||||
|     if (caps.movbe) | ||||
|         sum += ", MOVBE"; | ||||
|     if (caps.long_mode) | ||||
|         sum += ", 64-bit support"; | ||||
|  | ||||
|     return sum; | ||||
| } | ||||
|  | ||||
| } // namespace Common | ||||
|   | ||||
| @@ -4,30 +4,18 @@ | ||||
|  | ||||
| #pragma once | ||||
|  | ||||
| #include <string> | ||||
|  | ||||
| namespace Common { | ||||
|  | ||||
| /// x86/x64 CPU vendors that may be detected by this module | ||||
| enum class CPUVendor { | ||||
|     INTEL, | ||||
|     AMD, | ||||
|     OTHER, | ||||
| }; | ||||
|  | ||||
| /// x86/x64 CPU capabilities that may be detected by this module | ||||
| struct CPUCaps { | ||||
|     CPUVendor vendor; | ||||
|     char cpu_string[0x21]; | ||||
|     char brand_string[0x41]; | ||||
|     int num_cores; | ||||
|     bool sse; | ||||
|     bool sse2; | ||||
|     bool sse3; | ||||
|     bool ssse3; | ||||
|     bool sse4_1; | ||||
|     bool sse4_2; | ||||
|     bool lzcnt; | ||||
|     bool avx; | ||||
|     bool avx2; | ||||
|     bool bmi1; | ||||
| @@ -35,20 +23,6 @@ struct CPUCaps { | ||||
|     bool fma; | ||||
|     bool fma4; | ||||
|     bool aes; | ||||
|  | ||||
|     // Support for the FXSAVE and FXRSTOR instructions | ||||
|     bool fxsave_fxrstor; | ||||
|  | ||||
|     bool movbe; | ||||
|  | ||||
|     // This flag indicates that the hardware supports some mode in which denormal inputs and outputs | ||||
|     // are automatically set to (signed) zero. | ||||
|     bool flush_to_zero; | ||||
|  | ||||
|     // Support for LAHF and SAHF instructions in 64-bit mode | ||||
|     bool lahf_sahf_64; | ||||
|  | ||||
|     bool long_mode; | ||||
| }; | ||||
|  | ||||
| /** | ||||
| @@ -57,10 +31,4 @@ struct CPUCaps { | ||||
|  */ | ||||
| const CPUCaps& GetCPUCaps(); | ||||
|  | ||||
| /** | ||||
|  * Gets a string summary of the name and supported capabilities of the host CPU | ||||
|  * @return String summary | ||||
|  */ | ||||
| std::string GetCPUCapsString(); | ||||
|  | ||||
| } // namespace Common | ||||
|   | ||||
| @@ -23,20 +23,6 @@ | ||||
|  | ||||
| namespace Core { | ||||
|  | ||||
| #ifdef ARCHITECTURE_x86_64 | ||||
| static const char* CpuVendorToStr(Common::CPUVendor vendor) { | ||||
|     switch (vendor) { | ||||
|     case Common::CPUVendor::INTEL: | ||||
|         return "Intel"; | ||||
|     case Common::CPUVendor::AMD: | ||||
|         return "Amd"; | ||||
|     case Common::CPUVendor::OTHER: | ||||
|         return "Other"; | ||||
|     } | ||||
|     UNREACHABLE(); | ||||
| } | ||||
| #endif | ||||
|  | ||||
| static u64 GenerateTelemetryId() { | ||||
|     u64 telemetry_id{}; | ||||
|     CryptoPP::AutoSeededRandomPool rng; | ||||
| @@ -143,8 +129,6 @@ void TelemetrySession::AddInitialInfo(Loader::AppLoader& app_loader) { | ||||
|     AddField(Telemetry::FieldType::UserSystem, "CPU_Model", Common::GetCPUCaps().cpu_string); | ||||
|     AddField(Telemetry::FieldType::UserSystem, "CPU_BrandString", | ||||
|              Common::GetCPUCaps().brand_string); | ||||
|     AddField(Telemetry::FieldType::UserSystem, "CPU_Vendor", | ||||
|              CpuVendorToStr(Common::GetCPUCaps().vendor)); | ||||
|     AddField(Telemetry::FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes); | ||||
|     AddField(Telemetry::FieldType::UserSystem, "CPU_Extension_x64_AVX", Common::GetCPUCaps().avx); | ||||
|     AddField(Telemetry::FieldType::UserSystem, "CPU_Extension_x64_AVX2", Common::GetCPUCaps().avx2); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 James Rowe
					James Rowe