Compare commits

..

49 commits

Author SHA1 Message Date
crueter
96c42effca
Build fixes
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-27 16:57:26 -04:00
lizzie
29180936a1 add basic ios shit 2026-03-26 17:18:30 +00:00
crueter
d93b598ab6
Revert stbi
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-26 12:46:07 -04:00
crueter
c83bddd4fb
fix libs
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-26 03:02:28 -04:00
crueter
49565c4090
Fix most build errors
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-26 03:01:46 -04:00
crueter
e04ed9806b
Update CPMUtil, and fix script
Signed-off-by: crueter <crueter@eden-emu.dev>
2026-03-26 03:01:46 -04:00
lizzie
5d54b70ab9
DISABLE BY DEFAULT ON IOS FFS 2026-03-26 03:01:46 -04:00
lizzie
4769a32fc5
fix life 2026-03-26 03:01:45 -04:00
lizzie
a8fcc8c113
fix sirit i think, add ios-aarch64 2026-03-26 03:01:45 -04:00
lizzie
fbfb37d48c
changes? 2026-03-26 03:01:45 -04:00
lizzie
9bd0b79dc1
fix shit? 2026-03-26 03:01:45 -04:00
lizzie
d095976819
fix #include "common/logging.h" 2026-03-26 03:01:45 -04:00
lizzie
58f62cc5b2
fix IOS again fucking objc bridge 2026-03-26 03:01:45 -04:00
lizzie
2098995a13
fix? 2026-03-26 03:01:45 -04:00
lizzie
19d81b0896
properly use bridging header, fix headers 2026-03-26 03:01:45 -04:00
lizzie
0ba35c6c61
fix swift driver I HOPE 2026-03-26 03:01:45 -04:00
lizzie
e309fae19b
license 2026-03-26 03:01:45 -04:00
lizzie
15b71b44eb
[temporary c++ shit] 2026-03-26 03:01:45 -04:00
lizzie
63dd618d7a
bit of cmake fuckery 2026-03-26 03:01:45 -04:00
lizzie
045eb525b1
use language generator exprs 2026-03-26 03:01:45 -04:00
lizzie
3e9f9c7456
$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=missing-declarations> 2026-03-26 03:01:45 -04:00
lizzie
cee7c58ef9
proper linkings?! 2026-03-26 03:01:44 -04:00
lizzie
843b2724ae
bridge changes/fixes 2026-03-26 03:01:33 -04:00
lizzie
ff093596bd
fix license 2026-03-26 03:01:33 -04:00
lizzie
b08daccd94
fix xcode 2? 2026-03-26 03:01:33 -04:00
lizzie
e8760cd406
fix xcode paths? 2026-03-26 03:01:33 -04:00
lizzie
faf046a41c
fx 2026-03-26 03:01:33 -04:00
lizzie
80ce5a2350
fx 2026-03-26 03:01:33 -04:00
lizzie
5c18a6d82c
fix boost 2026-03-26 03:01:33 -04:00
lizzie
335ba1c344
fx 2026-03-26 03:01:32 -04:00
lizzie
7f04da7027
fix stuff 2026-03-26 03:01:32 -04:00
lizzie
2238f024c6
stupid macos 2026-03-26 03:01:32 -04:00
lizzie
50eb346218
fix1 2026-03-26 03:01:32 -04:00
lizzie
e21d1983df
fx 2026-03-26 03:01:32 -04:00
lizzie
637294aee9
fix spirv-tools 2026-03-26 03:01:32 -04:00
lizzie
19b8ad3fb2
fixes for ios spirv tools 2026-03-26 03:01:32 -04:00
lizzie
9dbf55ef3d
fix license 2026-03-26 03:01:32 -04:00
lizzie
f1d02e0886
fix ffmpeg 2026-03-26 03:01:31 -04:00
lizzie
238446af9d
fx 2026-03-26 03:00:21 -04:00
lizzie
96d09fcca8
fx 2026-03-26 03:00:21 -04:00
lizzie
7b17b68737
license 2026-03-26 03:00:21 -04:00
lizzie
d9f6686604
ios toolchain cmake 2026-03-26 03:00:20 -04:00
lizzie
1f993cd65c
license 2026-03-26 03:00:20 -04:00
lizzie
ee09dcc1b9
license headers 2026-03-26 03:00:20 -04:00
lizzie
01ff5cfc38
flatten + cmake 2026-03-26 03:00:20 -04:00
lizzie
1a01f04ce6
flatten 2026-03-26 03:00:20 -04:00
lizzie
9ea9a682b2
loicense 2026-03-26 03:00:20 -04:00
lizzie
b19dd4524c
modernize #1 2026-03-26 03:00:20 -04:00
lizzie
eed658dbd9
sudachi ios stuff 2026-03-26 03:00:20 -04:00
128 changed files with 558 additions and 1313 deletions

View file

@ -0,0 +1,55 @@
diff --git a/include/mcl/assert.hpp b/include/mcl/assert.hpp
index f77dbe7..9ec0b9c 100644
--- a/include/mcl/assert.hpp
+++ b/include/mcl/assert.hpp
@@ -23,8 +23,11 @@ template<typename... Ts>
} // namespace mcl::detail
+#ifndef UNREACHABLE
#define UNREACHABLE() ASSERT_FALSE("Unreachable code!")
+#endif
+#ifndef ASSERT
#define ASSERT(expr) \
[&] { \
if (std::is_constant_evaluated()) { \
@@ -37,7 +40,9 @@ template<typename... Ts>
} \
} \
}()
+#endif
+#ifndef ASSERT_MSG
#define ASSERT_MSG(expr, ...) \
[&] { \
if (std::is_constant_evaluated()) { \
@@ -50,13 +55,24 @@ template<typename... Ts>
} \
} \
}()
+#endif
+#ifndef ASSERT_FALSE
#define ASSERT_FALSE(...) ::mcl::detail::assert_terminate("false", __VA_ARGS__)
+#endif
#if defined(NDEBUG) || defined(MCL_IGNORE_ASSERTS)
-# define DEBUG_ASSERT(expr) ASSUME(expr)
-# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr)
+# ifndef DEBUG_ASSERT
+# define DEBUG_ASSERT(expr) ASSUME(expr)
+# endif
+# ifndef DEBUG_ASSERT_MSG
+# define DEBUG_ASSERT_MSG(expr, ...) ASSUME(expr)
+# endif
#else
-# define DEBUG_ASSERT(expr) ASSERT(expr)
-# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__)
+# ifndef DEBUG_ASSERT
+# define DEBUG_ASSERT(expr) ASSERT(expr)
+# endif
+# ifndef DEBUG_ASSERT_MSG
+# define DEBUG_ASSERT_MSG(expr, ...) ASSERT_MSG(expr, __VA_ARGS__)
+# endif
#endif

View file

@ -565,6 +565,7 @@ if (NOT YUZU_STATIC_ROOM)
find_package(SPIRV-Tools)
find_package(sirit)
find_package(gamemode)
find_package(mcl)
find_package(frozen)
if (ARCHITECTURE_riscv64)

View file

@ -76,6 +76,7 @@ Certain other dependencies will be fetched by CPM regardless. System packages *c
* This package is known to be broken on the AUR.
* [cpp-jwt](https://github.com/arun11299/cpp-jwt) 1.4+ - if `ENABLE_WEB_SERVICE` is on
* [unordered-dense](https://github.com/martinus/unordered_dense)
* [mcl](https://github.com/azahar-emu/mcl) - subject to removal
On amd64:

View file

@ -76,6 +76,9 @@ if (ARCHITECTURE_riscv64)
AddJsonPackage(biscuit)
endif()
# mcl
AddJsonPackage(mcl)
# Vulkan stuff
AddDependentPackages(vulkan-headers vulkan-utility-libraries)

View file

@ -210,6 +210,18 @@
"version": "0.9.1",
"git_version": "0.19.0"
},
"mcl": {
"version": "0.1.12",
"repo": "azahar-emu/mcl",
"sha": "7b08d83418",
"hash": "9c6ba624cb22ef622f78046a82abb99bf5026284ba17dfacaf46ac842cbd3b0f515f5ba45a1598c7671318a78a2e648db72ce8d10e7537f34e39800bdcb57694",
"options": [
"MCL_INSTALL OFF"
],
"patches": [
"0001-assert-macro.patch"
]
},
"libusb": {
"repo": "libusb/libusb",
"tag": "v%VERSION%",

View file

@ -133,11 +133,8 @@ class GamePropertiesFragment : Fragment() {
}
override fun onDestroy() {
val isChangingConfigurations = activity?.isChangingConfigurations == true
super.onDestroy()
if (!isChangingConfigurations) {
gamesViewModel.reloadGames(true)
}
gamesViewModel.reloadGames(true)
}
private fun getPlayTime() {

View file

@ -34,8 +34,6 @@
#endif
#include <mach/vm_map.h>
#include <mach/mach.h>
#elif defined(__FreeBSD__)
#include <sys/shm.h>
#endif
// FreeBSD
@ -509,7 +507,8 @@ public:
fd = shm_open_anon(O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW, 0600);
#elif defined(__OpenBSD__)
fd = shm_open_anon(O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW, 0600);
#elif defined(__FreeBSD__)
#elif defined(__FreeBSD__) && __FreeBSD__ < 13
// XXX Drop after FreeBSD 12.* reaches EOL on 2024-06-30
fd = shm_open(SHM_ANON, O_RDWR, 0600);
#elif defined(__APPLE__)
// macOS doesn't have memfd_create, use anonymous temporary file
@ -576,9 +575,9 @@ public:
if (True(perms & MemoryPermission::Execute))
prot_flags |= PROT_EXEC;
#endif
int flags = (fd >= 0 ? MAP_SHARED : MAP_PRIVATE) | MAP_FIXED;
int flags = (fd > 0 ? MAP_SHARED : MAP_PRIVATE) | MAP_FIXED;
void* ret = mmap(virtual_base + virtual_offset, length, prot_flags, flags, fd, host_offset);
ASSERT_MSG(ret != MAP_FAILED, "mmap: {} {}", strerror(errno), fd);
ASSERT_MSG(ret != MAP_FAILED, "mmap: {}", strerror(errno));
}
void Unmap(size_t virtual_offset, size_t length) {
@ -592,8 +591,9 @@ public:
auto [merged_pointer, merged_size] =
free_manager.FreeBlock(virtual_base + virtual_offset, length);
void* ret = mmap(merged_pointer, merged_size, PROT_NONE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
ASSERT_MSG(ret != MAP_FAILED, "mmap: {}", strerror(errno));
void* ret = mmap(merged_pointer, merged_size, PROT_NONE,
MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
ASSERT_MSG(ret != MAP_FAILED, "mmap failed: {}", strerror(errno));
}
void Protect(size_t virtual_offset, size_t length, bool read, bool write, bool execute) {

View file

@ -186,7 +186,7 @@ bool IsFastmemEnabled() {
// Only 4kb systems support host MMU right now
// TODO: Support this
return getpagesize() == 4096;
#elif !defined(__APPLE__) && !defined(__ANDROID__) && !defined(_WIN32) && !defined(__linux__) && !defined(__FreeBSD__)
#elif !defined(__APPLE__) && !defined(__ANDROID__) && !defined(_WIN32) && !defined(__linux__)
return false;
#else
return true;

View file

@ -186,7 +186,7 @@ void ArmDynarmic32::MakeJit(Common::PageTable* page_table) {
config.only_detect_misalignment_via_page_table_on_page_boundary = true;
config.fastmem_pointer = page_table->fastmem_arena ?
std::optional<uintptr_t>{uintptr_t(page_table->fastmem_arena)} :
std::optional<uintptr_t>{reinterpret_cast<uintptr_t>(page_table->fastmem_arena)} :
std::nullopt;
config.fastmem_exclusive_access = config.fastmem_pointer != std::nullopt;
@ -286,6 +286,10 @@ void ArmDynarmic32::MakeJit(Common::PageTable* page_table) {
// Curated optimizations
case Settings::CpuAccuracy::Auto:
config.unsafe_optimizations = true;
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun__) || defined(__HAIKU__) || defined(__DragonFly__) || defined(__NetBSD__)
config.fastmem_pointer = std::nullopt;
config.fastmem_exclusive_access = false;
#endif
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_UnfuseFMA;
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreStandardFPCRValue;
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_InaccurateNaN;
@ -300,10 +304,6 @@ void ArmDynarmic32::MakeJit(Common::PageTable* page_table) {
default:
break;
}
if (!Settings::IsFastmemEnabled()) {
config.fastmem_pointer = std::nullopt;
config.fastmem_exclusive_access = false;
}
m_jit.emplace(config);
}

View file

@ -338,6 +338,10 @@ void ArmDynarmic64::MakeJit(Common::PageTable* page_table, std::size_t address_s
// Safe optimisations
case Settings::CpuAccuracy::Auto:
config.unsafe_optimizations = true;
#if !defined(__APPLE__) && !defined(__linux__) && !defined(__ANDROID__) && !defined(_WIN32)
config.fastmem_pointer = std::nullopt;
config.fastmem_exclusive_access = false;
#endif
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_UnfuseFMA;
config.fastmem_address_space_bits = 64;
config.optimizations |= Dynarmic::OptimizationFlag::Unsafe_IgnoreGlobalMonitor;
@ -351,10 +355,6 @@ void ArmDynarmic64::MakeJit(Common::PageTable* page_table, std::size_t address_s
default:
break;
}
if (!Settings::IsFastmemEnabled()) {
config.fastmem_pointer = std::nullopt;
config.fastmem_exclusive_access = false;
}
m_jit.emplace(config);
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project
@ -373,8 +373,6 @@ Result SharedBufferManager::PresentSharedFrameBuffer(android::Fence fence,
android::Status::NoError,
VI::ResultOperationFailed);
(void)m_container.SetLayerZIndex(layer_id, 100000);
// We succeeded.
R_SUCCEED();
}

View file

@ -78,9 +78,7 @@ if (MSVC)
/Zc:throwingNew # Assumes new (without std::nothrow) never returns null.
/volatile:iso # Use strict standard-abiding volatile semantics
/bigobj # Increase number of sections in .obj files
/DNOMINMAX
/GR-
)
/DNOMINMAX)
if (CXX_CLANG)
list(APPEND DYNARMIC_CXX_FLAGS
@ -93,10 +91,8 @@ else()
-Wextra
-Wcast-qual
-pedantic
-Wno-missing-braces
-fno-rtti
#-fno-exceptions
)
-Wno-missing-braces)
if (CXX_GCC)
# GCC produces bogus -Warray-bounds warnings from xbyak headers for code paths that are not
# actually reachable. Specifically, it happens in cases where some code casts an Operand&
@ -106,6 +102,7 @@ else()
list(APPEND DYNARMIC_CXX_FLAGS -Wno-array-bounds)
list(APPEND DYNARMIC_CXX_FLAGS -Wstack-usage=4096)
endif()
if (CXX_CLANG)
# Bracket depth determines maximum size of a fold expression in Clang since 9c9974c3ccb6.
# And this in turns limits the size of a std::array.
@ -120,6 +117,7 @@ if (NOT Boost_FOUND)
endif()
find_package(fmt 8 CONFIG)
find_package(mcl 0.1.12 REQUIRED)
find_package(unordered_dense REQUIRED)
if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS)

View file

@ -1,6 +1,3 @@
# SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
# SPDX-License-Identifier: GPL-3.0-or-later
string(TOUPPER "${arch}" arch)
file(READ "${input_file}" f_contents)
file(WRITE "${output_file}" "#if defined(ARCHITECTURE_${arch})\n${f_contents}\n#endif\n")
file(WRITE "${output_file}" "#include <mcl/macro/architecture.hpp>\n#if defined(MCL_ARCHITECTURE_${arch})\n${f_contents}\n#endif\n")

View file

@ -3,12 +3,6 @@
include(TargetArchitectureSpecificSources)
add_library(dynarmic STATIC
mcl/bit.hpp
mcl/function_info.hpp
mcl/integer_of_size.hpp
mcl/intrusive_list.hpp
mcl/is_instance_of_template.hpp
backend/block_range_information.cpp
backend/block_range_information.h
backend/exception_handler.h
@ -359,7 +353,7 @@ set_target_properties(dynarmic PROPERTIES
target_compile_options(dynarmic PRIVATE ${DYNARMIC_CXX_FLAGS})
target_link_libraries(dynarmic PRIVATE unordered_dense::unordered_dense)
target_link_libraries(dynarmic PUBLIC fmt::fmt)
target_link_libraries(dynarmic PUBLIC fmt::fmt merry::mcl)
if (BOOST_NO_HEADERS)
target_link_libraries(dynarmic PRIVATE Boost::variant Boost::icl Boost::pool)

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,6 +11,7 @@
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/a32_address_space.h"
@ -35,9 +36,14 @@ struct Jit::Impl final {
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&halt_reason)));
jit_interface->is_executing = true;
SCOPE_EXIT {
jit_interface->is_executing = false;
};
HaltReason hr = core.Run(current_address_space, current_state, &halt_reason);
PerformRequestedCacheInvalidation(hr);
jit_interface->is_executing = false;
return hr;
}
@ -46,9 +52,14 @@ struct Jit::Impl final {
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&halt_reason)));
jit_interface->is_executing = true;
SCOPE_EXIT {
jit_interface->is_executing = false;
};
HaltReason hr = core.Step(current_address_space, current_state, &halt_reason);
PerformRequestedCacheInvalidation(hr);
jit_interface->is_executing = false;
return hr;
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -8,7 +8,7 @@
#include "dynarmic/backend/arm64/a32_jitstate.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
namespace Dynarmic::Backend::Arm64 {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,6 +11,7 @@
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/a64_address_space.h"
@ -33,20 +34,32 @@ struct Jit::Impl final {
HaltReason Run() {
ASSERT(!is_executing);
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&halt_reason)));
is_executing = true;
SCOPE_EXIT {
is_executing = false;
};
HaltReason hr = core.Run(current_address_space, current_state, &halt_reason);
PerformRequestedCacheInvalidation(hr);
is_executing = false;
return hr;
}
HaltReason Step() {
ASSERT(!is_executing);
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&halt_reason)));
is_executing = true;
SCOPE_EXIT {
is_executing = false;
};
HaltReason hr = core.Step(current_address_space, current_state, &halt_reason);
PerformRequestedCacheInvalidation(hr);
is_executing = false;
return hr;
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,7 @@
#include <vector>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include <oaknut/oaknut.hpp>

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -12,6 +12,7 @@
#include <stdexcept>
#include <type_traits>
#include <mcl/mp/metavalue/lift_value.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/assert.h"
#include <oaknut/oaknut.hpp>
@ -36,7 +37,7 @@ constexpr auto Rscratch0() {
} else if constexpr (bitsize == 64) {
return Xscratch0;
} else {
return Xscratch0; //UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<bitsize>>);
}
}
@ -47,7 +48,7 @@ constexpr auto Rscratch1() {
} else if constexpr (bitsize == 64) {
return Xscratch1;
} else {
return Xscratch1; //UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<bitsize>>);
}
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,7 @@
#include <bit>
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"
#include <mcl/type_traits/function_info.hpp>
namespace Dynarmic::Backend::Arm64 {

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <oaknut/oaknut.hpp>
#include "dynarmic/backend/arm64/a32_jitstate.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -6,6 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include <mcl/mp/metavalue/lift_value.hpp>
#include <oaknut/oaknut.hpp>
#include "dynarmic/backend/arm64/a32_jitstate.h"
@ -45,7 +46,7 @@ static void EmitTwoOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR:
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qoperand->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -68,7 +69,7 @@ static void EmitTwoOpArrangedWiden(oaknut::CodeGenerator& code, EmitContext& ctx
} else if constexpr (size == 32) {
emit(Qresult->D2(), Qoperand->toD().S2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -83,7 +84,7 @@ static void EmitTwoOpArrangedNarrow(oaknut::CodeGenerator& code, EmitContext& ct
} else if constexpr (size == 64) {
emit(Qresult->toD().S2(), Qoperand->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -106,7 +107,7 @@ static void EmitTwoOpArrangedPairWiden(oaknut::CodeGenerator& code, EmitContext&
} else if constexpr (size == 32) {
emit(Qresult->D2(), Qoperand->S4());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -121,7 +122,7 @@ static void EmitTwoOpArrangedLower(oaknut::CodeGenerator& code, EmitContext& ctx
} else if constexpr (size == 32) {
emit(Qresult->toD().S2(), Qoperand->toD().S2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -149,7 +150,7 @@ static void EmitThreeOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, I
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qa->D2(), Qb->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -174,7 +175,7 @@ static void EmitThreeOpArrangedWiden(oaknut::CodeGenerator& code, EmitContext& c
} else if constexpr (size == 64) {
emit(Qresult->Q1(), Qa->toD().D1(), Qb->toD().D1());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -197,7 +198,7 @@ static void EmitThreeOpArrangedLower(oaknut::CodeGenerator& code, EmitContext& c
} else if constexpr (size == 32) {
emit(Qresult->toD().S2(), Qa->toD().S2(), Qb->toD().S2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -219,7 +220,7 @@ static void EmitSaturatedAccumulate(oaknut::CodeGenerator&, EmitContext& ctx, IR
} else if constexpr (size == 64) {
emit(Qaccumulator->D2(), Qoperand->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
}
@ -240,7 +241,7 @@ static void EmitImmShift(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* ins
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qoperand->D2(), shift_amount);
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
}
@ -268,7 +269,7 @@ static void EmitReduce(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst,
} else if constexpr (size == 64) {
emit(Vresult, Qoperand->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
}

View file

@ -7,8 +7,14 @@
*/
#include <bit>
#include "dynarmic/mcl/function_info.hpp"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/mp/metavalue/lift_value.hpp>
#include <mcl/mp/typelist/cartesian_product.hpp>
#include <mcl/mp/typelist/get.hpp>
#include <mcl/mp/typelist/lift_sequence.hpp>
#include <mcl/mp/typelist/list.hpp>
#include <mcl/mp/typelist/lower_to_tuple.hpp>
#include <mcl/type_traits/function_info.hpp>
#include <mcl/type_traits/integer_of_size.hpp>
#include <oaknut/oaknut.hpp>
#include "dynarmic/backend/arm64/a32_jitstate.h"
@ -32,6 +38,8 @@
namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
namespace mp = mcl::mp;
using A64FullVectorWidth = std::integral_constant<size_t, 128>;
// Array alias that always sizes itself according to the given type T
@ -75,7 +83,7 @@ static void EmitTwoOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR:
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qa->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -103,7 +111,7 @@ static void EmitThreeOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, I
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qa->D2(), Qb->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -126,7 +134,7 @@ static void EmitFMA(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* ins
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qm->D2(), Qn->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -148,7 +156,7 @@ static void EmitFromFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Ins
} else if constexpr (size == 64) {
emit(Qto->D2(), Qfrom->D2(), fbits);
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
});
}
@ -170,7 +178,7 @@ void EmitToFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst)
} else if constexpr (fsize == 64) {
return Qto->D2();
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<fsize>>);
}
}();
auto Vfrom = [&] {
@ -179,7 +187,7 @@ void EmitToFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst)
} else if constexpr (fsize == 64) {
return Qfrom->D2();
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<fsize>>);
}
}();

View file

@ -1,11 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2022 MerryMage
* SPDX-License-Identifier: 0BSD
*/
#include <mcl/mp/metavalue/lift_value.hpp>
#include <oaknut/oaknut.hpp>
#include "dynarmic/backend/arm64/a32_jitstate.h"
@ -41,7 +39,7 @@ static void Emit(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitF
} else if constexpr (size == 64) {
emit(Qresult->D2(), Qa->D2(), Qb->D2());
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<size>>);
}
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,10 +10,11 @@
#include <cstddef>
#include <tuple>
#include <mcl/hash/xmrx.hpp>
#include "dynarmic/common/common_types.h"
#include <ankerl/unordered_dense.h>
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/exception_handler.h"
#include "dynarmic/ir/location_descriptor.h"
@ -21,16 +22,9 @@ namespace Dynarmic::Backend::Arm64 {
using DoNotFastmemMarker = std::tuple<IR::LocationDescriptor, unsigned>;
constexpr size_t xmrx(size_t x) noexcept {
x ^= x >> 32;
x *= 0xff51afd7ed558ccd;
x ^= mcl::bit::rotate_right(x, 47) ^ mcl::bit::rotate_right(x, 23);
return x;
}
struct DoNotFastmemMarkerHash {
[[nodiscard]] constexpr size_t operator()(const DoNotFastmemMarker& value) const noexcept {
return xmrx(std::get<0>(value).Value() ^ u64(std::get<1>(value)));
size_t operator()(const DoNotFastmemMarker& value) const {
return mcl::hash::xmrx(std::get<0>(value).Value() ^ static_cast<u64>(std::get<1>(value)));
}
};

View file

@ -13,8 +13,9 @@
#include <iterator>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <bit>
#include <mcl/mp/metavalue/lift_value.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/arm64/abi.h"
@ -298,7 +299,7 @@ int RegAlloc::GenerateImmediate(const IR::Value& value) {
return 0;
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<kind>>);
}
}
@ -365,7 +366,7 @@ int RegAlloc::RealizeReadImpl(const IR::Value& value) {
} else if constexpr (required_kind == HostLoc::Kind::Flags) {
UNREACHABLE(); //A simple read from flags is likely a logic error
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<required_kind>>);
}
}
@ -389,7 +390,7 @@ int RegAlloc::RealizeWriteImpl(const IR::Inst* value) {
flags.SetupLocation(value);
return 0;
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<kind>>);
}
}
@ -409,7 +410,7 @@ int RegAlloc::RealizeReadWriteImpl(const IR::Value& read_value, const IR::Inst*
} else if constexpr (kind == HostLoc::Kind::Flags) {
ASSERT(false && "Incorrect function for ReadWrite of flags");
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<kind>>);
}
}

View file

@ -16,7 +16,7 @@
#include "dynarmic/common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/is_instance_of_template.hpp"
#include <mcl/type_traits/is_instance_of_template.hpp>
#include <oaknut/oaknut.hpp>
#include <ankerl/unordered_dense.h>

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -12,6 +12,7 @@
#include <memory>
#include <optional>
#include <mcl/macro/architecture.hpp>
#include "dynarmic/common/common_types.h"
#if defined(ARCHITECTURE_x86_64)

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -16,10 +16,11 @@
#include <optional>
#include <thread>
#include <vector>
#include <bit>
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include <bit>
#include <mcl/macro/architecture.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/exception_handler.h"

View file

@ -3,6 +3,8 @@
* SPDX-License-Identifier: 0BSD
*/
#include <mcl/macro/architecture.hpp>
#if defined(ARCHITECTURE_x86_64)
# include "dynarmic/backend/x64/mig/mach_exc_server.c"
#elif defined(ARCHITECTURE_arm64)

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -6,6 +6,8 @@
* SPDX-License-Identifier: 0BSD
*/
#include <mcl/macro/architecture.hpp>
#if defined(ARCHITECTURE_x86_64)
# include "dynarmic/backend/x64/exception_handler_windows.cpp"
#elif defined(ARCHITECTURE_arm64)

View file

@ -99,7 +99,7 @@ void A32AddressSpace::SetCursorPtr(CodePtr ptr) {
}
size_t A32AddressSpace::GetRemainingSize() {
return conf.code_cache_size - (GetCursorPtr<std::intptr_t>() - GetMemPtr<std::intptr_t>());
return conf.code_cache_size - (GetCursorPtr<sptr>() - GetMemPtr<sptr>());
}
EmittedBlockInfo A32AddressSpace::Emit(IR::Block block) {

View file

@ -41,25 +41,25 @@ private:
template<typename T>
T GetMemPtr() {
static_assert(std::is_pointer_v<T> || std::is_same_v<T, std::uintptr_t> || std::is_same_v<T, std::intptr_t>);
static_assert(std::is_pointer_v<T> || std::is_same_v<T, uptr> || std::is_same_v<T, sptr>);
return reinterpret_cast<T>(as.GetBufferPointer(0));
}
template<typename T>
T GetMemPtr() const {
static_assert(std::is_pointer_v<T> || std::is_same_v<T, std::uintptr_t> || std::is_same_v<T, std::intptr_t>);
static_assert(std::is_pointer_v<T> || std::is_same_v<T, uptr> || std::is_same_v<T, sptr>);
return reinterpret_cast<const T>(as.GetBufferPointer(0));
}
template<typename T>
T GetCursorPtr() {
static_assert(std::is_pointer_v<T> || std::is_same_v<T, std::uintptr_t> || std::is_same_v<T, std::intptr_t>);
static_assert(std::is_pointer_v<T> || std::is_same_v<T, uptr> || std::is_same_v<T, sptr>);
return reinterpret_cast<T>(as.GetCursorPointer());
}
template<typename T>
T GetCursorPtr() const {
static_assert(std::is_pointer_v<T> || std::is_same_v<T, std::uintptr_t> || std::is_same_v<T, std::intptr_t>);
static_assert(std::is_pointer_v<T> || std::is_same_v<T, uptr> || std::is_same_v<T, sptr>);
return reinterpret_cast<const T>(as.GetCursorPointer());
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,6 +11,7 @@
#include <boost/icl/interval_set.hpp>
#include "dynarmic/common/assert.h"
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/riscv64/a32_address_space.h"
@ -33,18 +34,28 @@ struct Jit::Impl final {
HaltReason Run() {
ASSERT(!jit_interface->is_executing);
jit_interface->is_executing = true;
SCOPE_EXIT {
jit_interface->is_executing = false;
};
HaltReason hr = core.Run(current_address_space, current_state, &halt_reason);
RequestCacheInvalidation();
jit_interface->is_executing = false;
return hr;
}
HaltReason Step() {
ASSERT(!jit_interface->is_executing);
jit_interface->is_executing = true;
SCOPE_EXIT {
jit_interface->is_executing = false;
};
UNIMPLEMENTED();
RequestCacheInvalidation();
jit_interface->is_executing = false;
return HaltReason{};
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -8,7 +8,7 @@
#include "dynarmic/backend/riscv64/a32_jitstate.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
namespace Dynarmic::Backend::RV64 {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -30,7 +30,7 @@ public:
template<typename T>
T ptr() const noexcept {
static_assert(std::is_pointer_v<T> || std::is_same_v<T, std::uintptr_t> || std::is_same_v<T, std::intptr_t>);
static_assert(std::is_pointer_v<T> || std::is_same_v<T, uptr> || std::is_same_v<T, sptr>);
return reinterpret_cast<T>(mem);
}

View file

@ -12,7 +12,7 @@
#include <biscuit/assembler.hpp>
#include <fmt/ostream.h>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/backend/riscv64/a32_jitstate.h"
#include "dynarmic/backend/riscv64/abi.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -12,6 +12,7 @@
#include <array>
#include "dynarmic/common/assert.h"
#include <mcl/mp/metavalue/lift_value.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/always_false.h"
@ -163,8 +164,9 @@ u32 RegAlloc::GenerateImmediate(const IR::Value& value) {
} else if constexpr (kind == HostLoc::Kind::Fpr) {
UNIMPLEMENTED();
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<kind>>);
}
return 0;
}
@ -223,7 +225,7 @@ u32 RegAlloc::RealizeReadImpl(const IR::Value& value) {
fprs[new_location_index].realized = true;
return new_location_index;
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<required_kind>>);
}
}
@ -250,7 +252,7 @@ u32 RegAlloc::RealizeWriteImpl(const IR::Inst* value) {
setup_location(fprs[new_location_index]);
return new_location_index;
} else {
UNREACHABLE();
static_assert(Common::always_false_v<mcl::mp::lift_value<required_kind>>);
}
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -18,7 +18,7 @@
#include <biscuit/registers.hpp>
#include "dynarmic/common/assert.h"
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/is_instance_of_template.hpp"
#include <mcl/type_traits/is_instance_of_template.hpp>
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/riscv64/stack_layout.h"

View file

@ -15,7 +15,8 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include <boost/container/static_vector.hpp>

View file

@ -13,7 +13,7 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/type_traits/integer_of_size.hpp>
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/a32_emit_x64.h"

View file

@ -14,6 +14,7 @@
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include <bit>
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/llvm_disassemble.h"
@ -76,7 +77,12 @@ struct Jit::Impl {
HaltReason Run() {
ASSERT(!jit_interface->is_executing);
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&jit_state.halt_reason)));
jit_interface->is_executing = true;
SCOPE_EXIT {
jit_interface->is_executing = false;
};
const CodePtr current_codeptr = [this] {
// RSB optimization
const u32 new_rsb_ptr = (jit_state.rsb_ptr - 1) & A32JitState::RSBPtrMask;
@ -87,19 +93,27 @@ struct Jit::Impl {
return GetCurrentBlock();
}();
const HaltReason hr = block_of_code.RunCode(&jit_state, current_codeptr);
PerformRequestedCacheInvalidation(hr);
jit_interface->is_executing = false;
return hr;
}
HaltReason Step() {
ASSERT(!jit_interface->is_executing);
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&jit_state.halt_reason)));
jit_interface->is_executing = true;
SCOPE_EXIT {
jit_interface->is_executing = false;
};
const HaltReason hr = block_of_code.StepCode(&jit_state, GetCurrentSingleStep());
PerformRequestedCacheInvalidation(hr);
jit_interface->is_executing = false;
return hr;
}

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 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/backend/x64/a32_jitstate.h"
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/x64/block_of_code.h"

View file

@ -11,8 +11,9 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
#include "dynarmic/common/assert.h"
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/type_traits/integer_of_size.hpp>
#include <boost/container/static_vector.hpp>
#include "dynarmic/backend/x64/a64_jitstate.h"

View file

@ -13,7 +13,7 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/type_traits/integer_of_size.hpp>
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/a64_emit_x64.h"

View file

@ -15,6 +15,7 @@
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/llvm_disassemble.h"
#include <bit>
#include <mcl/scope_exit.hpp>
#include "dynarmic/backend/x64/a64_emit_x64.h"
#include "dynarmic/backend/x64/a64_jitstate.h"
@ -74,8 +75,14 @@ public:
HaltReason Run() {
ASSERT(!is_executing);
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&jit_state.halt_reason)));
is_executing = true;
SCOPE_EXIT {
this->is_executing = false;
};
// TODO: Check code alignment
const CodePtr current_code_ptr = [this] {
// RSB optimization
const u32 new_rsb_ptr = (jit_state.rsb_ptr - 1) & A64JitState::RSBPtrMask;
@ -85,19 +92,27 @@ public:
}
return CodePtr((uintptr_t(GetCurrentBlock()) + 15) & ~uintptr_t(15));
}();
const HaltReason hr = block_of_code.RunCode(&jit_state, current_code_ptr);
PerformRequestedCacheInvalidation(hr);
is_executing = false;
return hr;
}
HaltReason Step() {
ASSERT(!is_executing);
PerformRequestedCacheInvalidation(static_cast<HaltReason>(Atomic::Load(&jit_state.halt_reason)));
is_executing = true;
SCOPE_EXIT {
this->is_executing = false;
};
const HaltReason hr = block_of_code.StepCode(&jit_state, GetCurrentSingleStep());
PerformRequestedCacheInvalidation(hr);
is_executing = false;
return hr;
}

View file

@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* SPDX-License-Identifier: 0BSD
@ -8,7 +5,7 @@
#include "dynarmic/backend/x64/a64_jitstate.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A64/a64_location_descriptor.h"

View file

@ -25,7 +25,7 @@
#include <cstring>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/a32_jitstate.h"

View file

@ -13,7 +13,7 @@
#include <memory>
#include <type_traits>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/abi.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,7 @@
#include <optional>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/rounding_mode.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -13,7 +13,7 @@
#include <bit>
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"
#include <mcl/type_traits/function_info.hpp>
#include "dynarmic/backend/x64/callback.h"

View file

@ -12,7 +12,8 @@
#include "dynarmic/common/assert.h"
#include <boost/variant/detail/apply_visitor_binary.hpp>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/scope_exit.hpp>
#include "dynarmic/common/common_types.h"
#include <ankerl/unordered_dense.h>

View file

@ -16,7 +16,7 @@
#include <type_traits>
#include <vector>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bitsizeof.hpp>
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/x64/xbyak.h"
#include <boost/container/small_vector.hpp>

View file

@ -11,8 +11,14 @@
#include <utility>
#include "dynarmic/common/assert.h"
#include <mcl/mp/metavalue/lift_value.hpp>
#include <mcl/mp/typelist/cartesian_product.hpp>
#include <mcl/mp/typelist/get.hpp>
#include <mcl/mp/typelist/lift_sequence.hpp>
#include <mcl/mp/typelist/list.hpp>
#include <mcl/mp/typelist/lower_to_tuple.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/type_traits/integer_of_size.hpp>
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/abi.h"
@ -35,6 +41,7 @@
namespace Dynarmic::Backend::X64 {
using namespace Xbyak::util;
namespace mp = mcl::mp;
namespace {

View file

@ -3,8 +3,7 @@
* SPDX-License-Identifier: 0BSD
*/
#define CONCATENATE_TOKENS(x, y) CONCATENATE_TOKENS_IMPL(x, y)
#define CONCATENATE_TOKENS_IMPL(x, y) x##y
#include <mcl/macro/concatenate_tokens.hpp>
#define AxxEmitX64 CONCATENATE_TOKENS(Axx, EmitX64)
#define AxxEmitContext CONCATENATE_TOKENS(Axx, EmitContext)

View file

@ -9,9 +9,9 @@
#include <limits>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/type_traits/integer_of_size.hpp>
#include "dynarmic/backend/x64/block_of_code.h"
#include "dynarmic/backend/x64/emit_x64.h"

View file

@ -13,9 +13,11 @@
#include <type_traits>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include <mcl/bit/bit_field.hpp>
#include <mcl/bitsizeof.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"
#include <mcl/type_traits/function_info.hpp>
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/abi.h"

View file

@ -13,8 +13,14 @@
#include <utility>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/function_info.hpp"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <mcl/mp/metavalue/lift_value.hpp>
#include <mcl/mp/typelist/cartesian_product.hpp>
#include <mcl/mp/typelist/get.hpp>
#include <mcl/mp/typelist/lift_sequence.hpp>
#include <mcl/mp/typelist/list.hpp>
#include <mcl/mp/typelist/lower_to_tuple.hpp>
#include <mcl/type_traits/function_info.hpp>
#include <mcl/type_traits/integer_of_size.hpp>
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/abi.h"
@ -35,6 +41,7 @@
namespace Dynarmic::Backend::X64 {
using namespace Xbyak::util;
namespace mp = mcl::mp;
namespace {
@ -1993,7 +2000,6 @@ void EmitX64::EmitFPVectorToHalf32(EmitContext& ctx, IR::Inst* inst) {
}
}
// Assembly thunk; just remember not to specialise too much otherwise i-cache death!
// template<typename FPT, size_t fbits, FP::RoundingMode rounding_mode>
// static void EmitFPVectorToFixedThunk(VectorArray<FPT>& output, const VectorArray<FPT>& input, FP::FPCR fpcr, FP::FPSR& fpsr) {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -6,16 +6,17 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/backend/x64/perf_map.h"
#include <cstddef>
#include <string>
#include <fmt/format.h>
#include "dynarmic/backend/x64/perf_map.h"
#include "dynarmic/common/common_types.h"
#if defined(__linux__) && !defined(__ANDROID__)
# include <cstdio>
# include <cstdlib>
# include <mutex>
# include <fmt/format.h>
# include <mcl/stdint.hpp>
# include <sys/types.h>
# include <unistd.h>

View file

@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2018 MerryMage
* SPDX-License-Identifier: 0BSD
@ -8,7 +5,7 @@
#pragma once
#include "dynarmic/mcl/function_info.hpp"
#include <mcl/type_traits/function_info.hpp>
namespace Dynarmic::Common {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,7 +11,7 @@
#include <optional>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/rounding_mode.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 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 "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
namespace Dynarmic::FP {

View file

@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2018 MerryMage
* SPDX-License-Identifier: 0BSD
@ -8,7 +5,7 @@
#include "dynarmic/common/fp/fused.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/common/fp/unpacked.h"
#include "dynarmic/common/u128.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 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 "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/common/common_types.h"
namespace Dynarmic::FP {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -8,7 +8,8 @@
#pragma once
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/bitsizeof.hpp>
#include "dynarmic/common/common_types.h"
namespace Dynarmic::FP {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -8,7 +8,8 @@
#include "dynarmic/common/fp/op/FPConvert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/bitsizeof.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -8,7 +8,7 @@
#include "dynarmic/common/fp/op/FPRecipExponent.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 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/fp/op/FPRoundInt.h"
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,8 @@
#include <fmt/format.h>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,7 +11,7 @@
#include <optional>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"

View file

@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2018 MerryMage
* SPDX-License-Identifier: 0BSD
@ -10,7 +7,8 @@
#include <algorithm>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/fp/fpsr.h"
#include "dynarmic/common/fp/info.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,7 @@
#include <tuple>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,7 @@
#include <type_traits>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bitsizeof.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/u128.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -11,7 +11,8 @@
#include <tuple>
#include <type_traits>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/bitsizeof.hpp>
#include "dynarmic/common/common_types.h"
namespace Dynarmic {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -10,7 +10,7 @@
#include <optional>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/rounding_mode.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 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 "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/ir/cond.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 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 "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/A32/ITState.h"

View file

@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* SPDX-License-Identifier: 0BSD
@ -11,7 +8,7 @@
#include <array>
#include <ostream>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
namespace Dynarmic::A32 {

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -15,7 +15,7 @@
#include <optional>
#include <vector>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -15,7 +15,7 @@
#include <vector>
#include <iterator>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"

View file

@ -32,7 +32,8 @@ bool CondCanContinue(const ConditionalState cond_state, const A32::IREmitter& ir
}
bool IsConditionPassed(TranslatorVisitor& v, IR::Cond cond) {
ASSERT(v.cond_state != ConditionalState::Break && "This should never happen. We requested a break but that wasn't honored.");
ASSERT_MSG(v.cond_state != ConditionalState::Break,
"This should never happen. We requested a break but that wasn't honored.");
if (cond == IR::Cond::NV) {
// NV conditional is obsolete

View file

@ -1,12 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -9,7 +9,8 @@
#pragma once
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/bit/rotate.hpp>
#include "dynarmic/frontend/A32/a32_ir_emitter.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -9,7 +9,7 @@
#include <optional>
#include <tuple>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -9,7 +9,8 @@
#include <vector>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -7,7 +7,7 @@
*/
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -1,12 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2020 MerryMage
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/frontend/A32/translate/impl/common.h"

View file

@ -1,6 +1,3 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2020 MerryMage
* SPDX-License-Identifier: 0BSD
@ -8,7 +5,7 @@
#include <array>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/frontend/A32/translate/impl/common.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -9,7 +9,7 @@
#include <utility>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -7,7 +7,8 @@
*/
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -6,7 +6,8 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -1,12 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2016 MerryMage
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bitsizeof.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/interface/A32/config.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -7,7 +7,7 @@
*/
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bitsizeof.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/frontend/A32/translate/impl/common.h"

View file

@ -1,12 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2021 MerryMage
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/frontend/A32/translate/impl/common.h"

View file

@ -1,12 +1,9 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
* Copyright (c) 2021 MerryMage
* SPDX-License-Identifier: 0BSD
*/
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
#include "dynarmic/frontend/A32/translate/impl/common.h"

View file

@ -9,7 +9,8 @@
#include <tuple>
#include "dynarmic/common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include <mcl/bit/swap.hpp>
#include "dynarmic/frontend/A32/a32_ir_emitter.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"

View file

@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
/* This file is part of the dynarmic project.
@ -13,7 +13,7 @@
#include <tuple>
#include <fmt/format.h>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_field.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"

View file

@ -15,7 +15,7 @@
#include <string>
#include <vector>
#include "dynarmic/mcl/bit.hpp"
#include <mcl/bit/bit_count.hpp>
#include "dynarmic/common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"

Some files were not shown because too many files have changed in this diff Show more