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
parent
commit
d5aa10d572
No known key found for this signature in database GPG Key ID: 425ACD2D4830EBC6
  1. 4
      src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp
  2. 4
      src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp
  3. 4
      src/dynarmic/src/dynarmic/backend/x64/abi.cpp
  4. 4
      src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
  5. 6
      src/dynarmic/src/dynarmic/backend/x64/block_of_code.h
  6. 4
      src/dynarmic/src/dynarmic/backend/x64/callback.h
  7. 4
      src/dynarmic/src/dynarmic/backend/x64/constant_pool.h
  8. 3
      src/dynarmic/src/dynarmic/backend/x64/emit_x64.h
  9. 4
      src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp
  10. 2
      src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.h
  11. 2
      src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp
  12. 4
      src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp
  13. 4
      src/dynarmic/src/dynarmic/backend/x64/hostloc.h
  14. 4
      src/dynarmic/src/dynarmic/backend/x64/oparg.h
  15. 4
      src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp
  16. 4
      src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h
  17. 14
      src/dynarmic/src/dynarmic/backend/x64/xbyak.h
  18. 4
      src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp
  19. 4
      src/dynarmic/src/dynarmic/common/spin_lock_x64.h

4
src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp

@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp

@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/abi.cpp

@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp

@ -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"

6
src/dynarmic/src/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.
@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/callback.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 {

4
src/dynarmic/src/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.
@ -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 {

3
src/dynarmic/src/dynarmic/backend/x64/emit_x64.h

@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp

@ -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"

2
src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.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"

2
src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp

@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp

@ -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"

4
src/dynarmic/src/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.
@ -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 {

4
src/dynarmic/src/dynarmic/backend/x64/oparg.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 @@
#pragma once
#include "dynarmic/common/assert.h"
#include <xbyak/xbyak.h>
#include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic::Backend::X64 {

4
src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp

@ -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"

4
src/dynarmic/src/dynarmic/backend/x64/reg_alloc.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>

14
src/dynarmic/src/dynarmic/backend/x64/xbyak.h

@ -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>

4
src/dynarmic/src/dynarmic/common/spin_lock_x64.cpp

@ -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"

4
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.
@ -8,7 +8,7 @@
#pragma once
#include <xbyak/xbyak.h>
#include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic {

Loading…
Cancel
Save