Browse Source
Merge pull request #3948 from Morph1984/log-cpu-instructions
main/common: Log/append AVX/FMA to the Host CPU string if available and add AVX512 detection
pull/15/merge
bunnei
6 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with
21 additions and
1 deletions
-
src/common/telemetry.cpp
-
src/common/x64/cpu_detect.cpp
-
src/common/x64/cpu_detect.h
-
src/yuzu/main.cpp
|
|
|
@ -60,6 +60,7 @@ void AppendCPUInfo(FieldCollection& fc) { |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AES", Common::GetCPUCaps().aes); |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX", Common::GetCPUCaps().avx); |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX2", Common::GetCPUCaps().avx2); |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_AVX512", Common::GetCPUCaps().avx512); |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI1", Common::GetCPUCaps().bmi1); |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_BMI2", Common::GetCPUCaps().bmi2); |
|
|
|
fc.AddField(FieldType::UserSystem, "CPU_Extension_x64_FMA", Common::GetCPUCaps().fma); |
|
|
|
|
|
|
|
@ -110,6 +110,11 @@ static CPUCaps Detect() { |
|
|
|
caps.bmi1 = true; |
|
|
|
if ((cpu_id[1] >> 8) & 1) |
|
|
|
caps.bmi2 = true; |
|
|
|
// Checks for AVX512F, AVX512CD, AVX512VL, AVX512DQ, AVX512BW (Intel Skylake-X/SP)
|
|
|
|
if ((cpu_id[1] >> 16) & 1 && (cpu_id[1] >> 28) & 1 && (cpu_id[1] >> 31) & 1 && |
|
|
|
(cpu_id[1] >> 17) & 1 && (cpu_id[1] >> 30) & 1) { |
|
|
|
caps.avx512 = caps.avx2; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -19,6 +19,7 @@ struct CPUCaps { |
|
|
|
bool lzcnt; |
|
|
|
bool avx; |
|
|
|
bool avx2; |
|
|
|
bool avx512; |
|
|
|
bool bmi1; |
|
|
|
bool bmi2; |
|
|
|
bool fma; |
|
|
|
|
|
|
|
@ -217,7 +217,20 @@ GMainWindow::GMainWindow() |
|
|
|
LOG_INFO(Frontend, "yuzu Version: {} | {}-{}", yuzu_build_version, Common::g_scm_branch, |
|
|
|
Common::g_scm_desc); |
|
|
|
#ifdef ARCHITECTURE_x86_64
|
|
|
|
LOG_INFO(Frontend, "Host CPU: {}", Common::GetCPUCaps().cpu_string); |
|
|
|
const auto& caps = Common::GetCPUCaps(); |
|
|
|
std::string cpu_string = caps.cpu_string; |
|
|
|
if (caps.avx || caps.avx2 || caps.avx512) { |
|
|
|
cpu_string += " | AVX"; |
|
|
|
if (caps.avx512) { |
|
|
|
cpu_string += "512"; |
|
|
|
} else if (caps.avx2) { |
|
|
|
cpu_string += '2'; |
|
|
|
} |
|
|
|
if (caps.fma || caps.fma4) { |
|
|
|
cpu_string += " | FMA"; |
|
|
|
} |
|
|
|
} |
|
|
|
LOG_INFO(Frontend, "Host CPU: {}", cpu_string); |
|
|
|
#endif
|
|
|
|
LOG_INFO(Frontend, "Host OS: {}", QSysInfo::prettyProductName().toStdString()); |
|
|
|
LOG_INFO(Frontend, "Host RAM: {:.2f} GB", |
|
|
|
|