Browse Source
[dynarmic] make Xbyak::CodeGen use Ankerl for backing unordered maps (#3438 )
standard std::unordered_map and std::unordered_set sucks, hadn't found drop-in replacement for multimap, but this change should bring a nice perf boost for x86_64 :)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3438
Reviewed-by: DraVee <dravee@eden-emu.dev>
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: crueter <crueter@eden-emu.dev>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
revert-xbyak
lizzie
2 days ago
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
19 changed files with
47 additions and
36 deletions
src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp
src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp
src/dynarmic/src/dynarmic/backend/x64/abi.cpp
src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
src/dynarmic/src/dynarmic/backend/x64/block_of_code.h
src/dynarmic/src/dynarmic/backend/x64/callback.h
src/dynarmic/src/dynarmic/backend/x64/constant_pool.h
src/dynarmic/src/dynarmic/backend/x64/emit_x64.h
src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp
src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.h
src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp
src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp
src/dynarmic/src/dynarmic/backend/x64/hostloc.h
src/dynarmic/src/dynarmic/backend/x64/oparg.h
src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp
src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h
src/dynarmic/src/dynarmic/backend/x64/xbyak.h
src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp
src/dynarmic/src/dynarmic/common/spin_lock_x64.h
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -14,7 +14,7 @@
# include <fmt/format.h>
# include <fmt/ostream.h>
# include <mcl/type_traits/integer_of_size.hpp>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/a32_emit_x64.h"
# include "dynarmic/backend/x64/abi.h"
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -14,7 +14,7 @@
# include <fmt/format.h>
# include <fmt/ostream.h>
# include <mcl/type_traits/integer_of_size.hpp>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/a64_emit_x64.h"
# include "dynarmic/backend/x64/abi.h"
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,7 +11,7 @@
# include <algorithm>
# include "dynarmic/common/common_types.h"
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/block_of_code.h"
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -26,7 +26,7 @@
# include "dynarmic/common/assert.h"
# include <mcl/bit/bit_field.hpp>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/a32_jitstate.h"
# include "dynarmic/backend/x64/abi.h"
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -15,9 +15,7 @@
# include <mcl/bit/bit_field.hpp>
# include "dynarmic/common/common_types.h"
# include <xbyak/xbyak.h>
# include <xbyak/xbyak_util.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/abi.h"
# include "dynarmic/backend/x64/callback.h"
# include "dynarmic/backend/x64/constant_pool.h"
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -12,7 +12,7 @@
# include <vector>
# include "dynarmic/common/common_types.h"
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic : : Backend : : X64 {
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -15,7 +15,7 @@
# include "dynarmic/common/common_types.h"
# include <ankerl/unordered_dense.h>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic : : Backend : : X64 {
@ -18,8 +18,7 @@
# include <mcl/bitsizeof.hpp>
# include <ankerl/unordered_dense.h>
# include <xbyak/xbyak.h>
# include <xbyak/xbyak_util.h>
# include "dynarmic/backend/x64/xbyak.h"
# include <boost/container/small_vector.hpp>
# include "dynarmic/backend/exception_handler.h"
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -19,7 +19,7 @@
# include <mcl/mp/typelist/lower_to_tuple.hpp>
# include "dynarmic/common/common_types.h"
# include <mcl/type_traits/integer_of_size.hpp>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/abi.h"
# include "dynarmic/backend/x64/block_of_code.h"
@ -7,7 +7,7 @@
*/
# include <bit>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/a32_emit_x64.h"
# include "dynarmic/backend/x64/a64_emit_x64.h"
@ -18,7 +18,7 @@
# include <mcl/bitsizeof.hpp>
# include "dynarmic/common/common_types.h"
# include <mcl/type_traits/function_info.hpp>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/abi.h"
# include "dynarmic/backend/x64/block_of_code.h"
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -21,7 +21,7 @@
# include <mcl/mp/typelist/lower_to_tuple.hpp>
# include <mcl/type_traits/function_info.hpp>
# include <mcl/type_traits/integer_of_size.hpp>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/abi.h"
# include "dynarmic/backend/x64/block_of_code.h"
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -9,7 +9,7 @@
# include "dynarmic/common/assert.h"
# include "dynarmic/common/common_types.h"
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic : : Backend : : X64 {
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -9,7 +9,7 @@
# pragma once
# include "dynarmic/common/assert.h"
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic : : Backend : : X64 {
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -16,7 +16,7 @@
# include <fmt/ostream.h>
# include "dynarmic/common/assert.h"
# include <bit>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/abi.h"
# include "dynarmic/backend/x64/stack_layout.h"
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -14,7 +14,7 @@
# include "boost/container/small_vector.hpp"
# include "dynarmic/common/common_types.h"
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include <boost/container/static_vector.hpp>
# include <boost/container/flat_set.hpp>
# include <boost/pool/pool_alloc.hpp>
@ -0,0 +1,14 @@
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
# pragma once
# define XBYAK_STD_UNORDERED_SET ankerl::unordered_dense::set
# define XBYAK_STD_UNORDERED_MAP ankerl::unordered_dense::map
# define XBYAK_STD_UNORDERED_MULTIMAP boost::unordered_multimap
# include <boost/unordered_map.hpp>
# include <ankerl/unordered_dense.h>
# include <xbyak/xbyak.h>
# include <xbyak/xbyak_util.h>
@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -8,7 +8,7 @@
# include <mutex>
# include <optional>
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
# include "dynarmic/backend/x64/abi.h"
# include "dynarmic/backend/x64/hostloc.h"
@ -1,4 +1,4 @@
/ / SPDX - FileCopyrightText : Copyright 2025 Eden Emulator Project
/ / SPDX - FileCopyrightText : Copyright 2026 Eden Emulator Project
/ / SPDX - License - Identifier : GPL - 3.0 - or - later
/* This file is part of the dynarmic project.
@ -8,7 +8,7 @@
# pragma once
# include <xbyak/xbyak.h>
# include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic {