mirror of
https://git.eden-emu.dev/eden-emu/eden
synced 2026-05-21 20:27:05 +02:00
[common/cpu_detect] Remove SSE/SSE2/FMA4/AVX_VNNI detection (#3979)
Removes Eden's own feature detection for SSE, SSE2, FMA4 and AVX_VNNI, in order to clean up code and make the function slightly lighter. They are all unused and I have specific reasons for their removal: - SSE/SSE2 are always true for x64 - FMA4 is a deprecated AMD exclusive extension, replaced by the regular FMA and was logged here as "FMA" for no reason - AVX_VNNI simply does not seem applicable for Eden (but can still be checked for through Xbyak's feature detection if necessary) Co-authored-by: RedBlackAka <140876408+RedBlackAka@users.noreply.github.com> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3979 Reviewed-by: Lizzie <lizzie@eden-emu.dev> Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
parent
feb8c5f88e
commit
2a66b40267
4 changed files with 5 additions and 12 deletions
|
|
@ -106,8 +106,6 @@ static CPUCaps Detect() {
|
||||||
// Detect family and other miscellaneous features
|
// Detect family and other miscellaneous features
|
||||||
if (max_std_fn >= 1) {
|
if (max_std_fn >= 1) {
|
||||||
__cpuid(cpu_id, 0x00000001);
|
__cpuid(cpu_id, 0x00000001);
|
||||||
caps.sse = Common::Bit<25>(cpu_id[3]);
|
|
||||||
caps.sse2 = Common::Bit<26>(cpu_id[3]);
|
|
||||||
caps.sse3 = Common::Bit<0>(cpu_id[2]);
|
caps.sse3 = Common::Bit<0>(cpu_id[2]);
|
||||||
caps.pclmulqdq = Common::Bit<1>(cpu_id[2]);
|
caps.pclmulqdq = Common::Bit<1>(cpu_id[2]);
|
||||||
caps.ssse3 = Common::Bit<9>(cpu_id[2]);
|
caps.ssse3 = Common::Bit<9>(cpu_id[2]);
|
||||||
|
|
@ -150,9 +148,6 @@ static CPUCaps Detect() {
|
||||||
|
|
||||||
caps.waitpkg = Common::Bit<5>(cpu_id[2]);
|
caps.waitpkg = Common::Bit<5>(cpu_id[2]);
|
||||||
caps.gfni = Common::Bit<8>(cpu_id[2]);
|
caps.gfni = Common::Bit<8>(cpu_id[2]);
|
||||||
|
|
||||||
__cpuidex(cpu_id, 0x00000007, 0x00000001);
|
|
||||||
caps.avx_vnni = caps.avx && Common::Bit<4>(cpu_id[0]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -170,7 +165,6 @@ static CPUCaps Detect() {
|
||||||
// Check for more features
|
// Check for more features
|
||||||
__cpuid(cpu_id, 0x80000001);
|
__cpuid(cpu_id, 0x80000001);
|
||||||
caps.lzcnt = Common::Bit<5>(cpu_id[2]);
|
caps.lzcnt = Common::Bit<5>(cpu_id[2]);
|
||||||
caps.fma4 = Common::Bit<16>(cpu_id[2]);
|
|
||||||
caps.monitorx = Common::Bit<29>(cpu_id[2]);
|
caps.monitorx = Common::Bit<29>(cpu_id[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,6 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||||
// SPDX-FileCopyrightText: Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project
|
// SPDX-FileCopyrightText: Copyright 2013 Dolphin Emulator Project / 2015 Citra Emulator Project
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
@ -36,15 +39,12 @@ struct CPUCaps {
|
||||||
u32 crystal_frequency;
|
u32 crystal_frequency;
|
||||||
u64 tsc_frequency; // Derived from the above three values
|
u64 tsc_frequency; // Derived from the above three values
|
||||||
|
|
||||||
bool sse : 1;
|
|
||||||
bool sse2 : 1;
|
|
||||||
bool sse3 : 1;
|
bool sse3 : 1;
|
||||||
bool ssse3 : 1;
|
bool ssse3 : 1;
|
||||||
bool sse4_1 : 1;
|
bool sse4_1 : 1;
|
||||||
bool sse4_2 : 1;
|
bool sse4_2 : 1;
|
||||||
|
|
||||||
bool avx : 1;
|
bool avx : 1;
|
||||||
bool avx_vnni : 1;
|
|
||||||
bool avx2 : 1;
|
bool avx2 : 1;
|
||||||
bool avx512f : 1;
|
bool avx512f : 1;
|
||||||
bool avx512dq : 1;
|
bool avx512dq : 1;
|
||||||
|
|
@ -59,7 +59,6 @@ struct CPUCaps {
|
||||||
bool bmi2 : 1;
|
bool bmi2 : 1;
|
||||||
bool f16c : 1;
|
bool f16c : 1;
|
||||||
bool fma : 1;
|
bool fma : 1;
|
||||||
bool fma4 : 1;
|
|
||||||
bool gfni : 1;
|
bool gfni : 1;
|
||||||
bool invariant_tsc : 1;
|
bool invariant_tsc : 1;
|
||||||
bool lzcnt : 1;
|
bool lzcnt : 1;
|
||||||
|
|
|
||||||
|
|
@ -223,7 +223,7 @@ void Init(QWidget* root) {
|
||||||
} else if (caps.avx2) {
|
} else if (caps.avx2) {
|
||||||
cpu_string += '2';
|
cpu_string += '2';
|
||||||
}
|
}
|
||||||
if (caps.fma || caps.fma4) {
|
if (caps.fma) {
|
||||||
cpu_string += " | FMA";
|
cpu_string += " | FMA";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3120,7 +3120,7 @@ void MainWindow::OnMenuReportCompatibility() {
|
||||||
|
|
||||||
// #if defined(ARCHITECTURE_x86_64) && !defined(__APPLE__)
|
// #if defined(ARCHITECTURE_x86_64) && !defined(__APPLE__)
|
||||||
// const auto& caps = Common::GetCPUCaps();
|
// const auto& caps = Common::GetCPUCaps();
|
||||||
// const bool has_fma = caps.fma || caps.fma4;
|
// const bool has_fma = caps.fma;
|
||||||
// const auto processor_count = std::thread::hardware_concurrency();
|
// const auto processor_count = std::thread::hardware_concurrency();
|
||||||
// const bool has_4threads = processor_count == 0 || processor_count >= 4;
|
// const bool has_4threads = processor_count == 0 || processor_count >= 4;
|
||||||
// const bool has_8gb_ram = Common::GetMemInfo().TotalPhysicalMemory >= 8_GiB;
|
// const bool has_8gb_ram = Common::GetMemInfo().TotalPhysicalMemory >= 8_GiB;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue