Compare commits

..

8 Commits

Author SHA1 Message Date
lizzie f8ccdb00f2 fix 2026-08-31 03:42:51 +00:00
lizzie 050af0bc51 Revert "[dynarmic] fix windows perf regression due to reordered CPR"
This reverts commit 403cc0ab66.
2026-08-31 03:35:08 +00:00
lizzie e322e34148 Revert "goto older xbyak"
This reverts commit 2e9d97aa82.
2026-08-31 03:35:01 +00:00
lizzie 804c1dcfaf Revert "stateless allocator?"
This reverts commit d918efbea5.
2026-08-31 03:34:51 +00:00
lizzie 5edb9d37ef cpu features stored in static oncemore 2026-08-31 03:34:46 +00:00
lizzie d918efbea5 stateless allocator? 2026-08-31 03:27:12 +00:00
lizzie 2e9d97aa82 goto older xbyak 2026-08-31 03:01:39 +00:00
lizzie 403cc0ab66 [dynarmic] fix windows perf regression due to reordered CPR
Signed-off-by: lizzie <lizzie@eden-emu.dev>
2026-08-31 02:42:30 +00:00
5 changed files with 60 additions and 60 deletions
+13
View File
@@ -0,0 +1,13 @@
diff --git a/libs/cobalt/include/boost/cobalt/concepts.hpp b/libs/cobalt/include/boost/cobalt/concepts.hpp
index d49f2ec..a9bdb80 100644
--- a/libs/cobalt/include/boost/cobalt/concepts.hpp
+++ b/libs/cobalt/include/boost/cobalt/concepts.hpp
@@ -62,7 +62,7 @@ struct enable_awaitables
template <typename T>
concept with_get_executor = requires (T& t)
{
- {t.get_executor()} -> asio::execution::executor;
+ t.get_executor();
};
+7 -3
View File
@@ -414,9 +414,12 @@ AddJsonPackage(boost)
set(BOOST_NO_HEADERS ${Boost_ADDED})
if (Boost_ADDED)
add_compile_definitions(YUZU_BOOST_v1)
if (MSVC OR ANDROID)
add_compile_definitions(YUZU_BOOST_v1)
endif()
if (NOT MSVC OR CXX_CLANG)
# solaris sucks
# boost sucks
if (SOLARIS)
add_compile_options($<$<COMPILE_LANGUAGE:C,CXX>:-pthreads>)
endif()
@@ -425,7 +428,8 @@ if (Boost_ADDED)
target_compile_options(boost_icl INTERFACE $<$<COMPILE_LANGUAGE:C,CXX>:-Wno-shadow>)
target_compile_options(boost_asio INTERFACE
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-conversion>
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-fallthrough>)
$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-implicit-fallthrough>
)
endif()
endif()
+9 -6
View File
@@ -6,19 +6,22 @@
"version": "v0.19.0"
},
"boost": {
"artifact": "boost-%VERSION%.tar.zst",
"artifact": "%VERSION%-cmake.tar.xz",
"find_args": "CONFIG OPTIONAL_COMPONENTS headers context system fiber filesystem",
"hash": "077ad58b3d336041c05ad5f2b1de7db9fe1d35af3da85cd99496c35ddeca080ecd0ae5c8058319077bda892361b38624d89f70bc9bfec6713aae2aabc17f2a43",
"hash": "6ae6e94664fe7f2fb01976b59b276ac5df8085c7503fa829d810fbfe495960cfec44fa2c36e2cb23480bc19c956ed199d4952b02639a00a6c07625d4e7130c2d",
"min_version": "1.57",
"package": "Boost",
"repo": "eden-emulator/ext-boost",
"version": "1.91.0-1"
"patches": [
"0001-clang-cl.patch"
],
"repo": "boostorg/boost",
"version": "boost-1.90.0"
},
"boost_headers": {
"bundled": true,
"hash": "c5fa2cd72f6e6666b7963b97bc359c75284b8fb540c30f3629a028b85270c9bc66c8a051383964f2bd4c1e005a4691593d15696e7ef39ea87cf6cff9e5691fb2",
"hash": "4ef845775e2277a8104ded6ddf749aa262ce52cf8438042869a048f9a0156dd772fbbcfa74efa1378fecef339b7286f6fe4b4feb5c45d49966b35d08e3e83507",
"repo": "boostorg/headers",
"version": "boost-1.91.0"
"version": "boost-1.90.0"
},
"catch2": {
"hash": "7eea385d79d88a5690cde131fe7ccda97d5c54ea09d6f515000d7bf07c828809d61c1ac99912c1ee507cf933f61c1c47ecdcc45df7850ffa82714034b0fccf35",
@@ -76,57 +76,34 @@ void ProtectMemory(const void* base, size_t size, bool is_executable) {
}
#endif
HostFeature GetHostFeatures() {
HostFeature features = {};
static const HostFeature features = []() {
HostFeature f{};
#ifdef DYNARMIC_ENABLE_CPU_FEATURE_DETECTION
using Cpu = Xbyak::util::Cpu;
Xbyak::util::Cpu cpu_info{};
if (cpu_info.has(Cpu::tSSSE3))
features |= HostFeature::SSSE3;
if (cpu_info.has(Cpu::tSSE41))
features |= HostFeature::SSE41;
if (cpu_info.has(Cpu::tSSE42))
features |= HostFeature::SSE42;
if (cpu_info.has(Cpu::tAVX))
features |= HostFeature::AVX;
if (cpu_info.has(Cpu::tAVX2))
features |= HostFeature::AVX2;
if (cpu_info.has(Cpu::tAVX512F))
features |= HostFeature::AVX512F;
if (cpu_info.has(Cpu::tAVX512CD))
features |= HostFeature::AVX512CD;
if (cpu_info.has(Cpu::tAVX512VL))
features |= HostFeature::AVX512VL;
if (cpu_info.has(Cpu::tAVX512BW))
features |= HostFeature::AVX512BW;
if (cpu_info.has(Cpu::tAVX512DQ))
features |= HostFeature::AVX512DQ;
if (cpu_info.has(Cpu::tAVX512_BITALG))
features |= HostFeature::AVX512BITALG;
if (cpu_info.has(Cpu::tAVX512VBMI))
features |= HostFeature::AVX512VBMI;
if (cpu_info.has(Cpu::tPCLMULQDQ))
features |= HostFeature::PCLMULQDQ;
if (cpu_info.has(Cpu::tF16C))
features |= HostFeature::F16C;
if (cpu_info.has(Cpu::tFMA))
features |= HostFeature::FMA;
if (cpu_info.has(Cpu::tAESNI))
features |= HostFeature::AES;
if (cpu_info.has(Cpu::tSHA))
features |= HostFeature::SHA;
if (cpu_info.has(Cpu::tPOPCNT))
features |= HostFeature::POPCNT;
if (cpu_info.has(Cpu::tBMI1))
features |= HostFeature::BMI1;
if (cpu_info.has(Cpu::tBMI2))
features |= HostFeature::BMI2;
if (cpu_info.has(Cpu::tLZCNT))
features |= HostFeature::LZCNT;
if (cpu_info.has(Cpu::tGFNI))
features |= HostFeature::GFNI;
if (cpu_info.has(Cpu::tWAITPKG))
features |= HostFeature::WAITPKG;
if (cpu_info.has(Cpu::tSSSE3)) f |= HostFeature::SSSE3;
if (cpu_info.has(Cpu::tSSE41)) f |= HostFeature::SSE41;
if (cpu_info.has(Cpu::tSSE42)) f |= HostFeature::SSE42;
if (cpu_info.has(Cpu::tAVX)) f |= HostFeature::AVX;
if (cpu_info.has(Cpu::tAVX2)) f |= HostFeature::AVX2;
if (cpu_info.has(Cpu::tAVX512F)) f |= HostFeature::AVX512F;
if (cpu_info.has(Cpu::tAVX512CD)) f |= HostFeature::AVX512CD;
if (cpu_info.has(Cpu::tAVX512VL)) f |= HostFeature::AVX512VL;
if (cpu_info.has(Cpu::tAVX512BW)) f |= HostFeature::AVX512BW;
if (cpu_info.has(Cpu::tAVX512DQ)) f |= HostFeature::AVX512DQ;
if (cpu_info.has(Cpu::tAVX512_BITALG)) f |= HostFeature::AVX512BITALG;
if (cpu_info.has(Cpu::tAVX512VBMI)) f |= HostFeature::AVX512VBMI;
if (cpu_info.has(Cpu::tPCLMULQDQ)) f |= HostFeature::PCLMULQDQ;
if (cpu_info.has(Cpu::tF16C)) f |= HostFeature::F16C;
if (cpu_info.has(Cpu::tFMA)) f |= HostFeature::FMA;
if (cpu_info.has(Cpu::tAESNI)) f |= HostFeature::AES;
if (cpu_info.has(Cpu::tSHA)) f |= HostFeature::SHA;
if (cpu_info.has(Cpu::tPOPCNT)) f |= HostFeature::POPCNT;
if (cpu_info.has(Cpu::tBMI1)) f |= HostFeature::BMI1;
if (cpu_info.has(Cpu::tBMI2)) f |= HostFeature::BMI2;
if (cpu_info.has(Cpu::tLZCNT)) f |= HostFeature::LZCNT;
if (cpu_info.has(Cpu::tGFNI)) f |= HostFeature::GFNI;
if (cpu_info.has(Cpu::tWAITPKG)) f |= HostFeature::WAITPKG;
if (cpu_info.has(Cpu::tBMI2)) {
// BMI2 instructions such as pdep and pext have been very slow up until Zen 3.
// Check for Zen 3 or newer by its family (0x19).
@@ -138,12 +115,15 @@ HostFeature GetHostFeatures() {
const u32 family_extended = mcl::bit::get_bits<20, 27>(data[0]);
const u32 family = family_base + family_extended;
if (family >= 0x19)
features |= HostFeature::FastBMI2;
f |= HostFeature::FastBMI2;
} else {
features |= HostFeature::FastBMI2;
f |= HostFeature::FastBMI2;
}
}
return f;
#endif
}();
HostFeature GetHostFeatures() {
return features;
}
+1 -1
View File
@@ -65,7 +65,7 @@ else()
endif()
# update cached cpmfile content
string(JSON cpmfile SET "${cpmfile}" "${KEY}" "${new_object}")
string(JSON cpmfile SET "${cpmfile}" "${key}" "${new_object}")
# write cached cpmfile
get_cpmfile_path(file)