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
This commit is contained in:
		| @@ -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", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei