aboutsummaryrefslogtreecommitdiff
path: root/src/dynarmic
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-04-06 19:11:47 +0200
committercrueter <crueter@eden-emu.dev>2026-04-06 19:11:47 +0200
commit5e927199c5801e212fae58974c4c3a0f1ee59fa4 (patch)
tree36bcfeb3eec0dc032db98562d125905f3d7a4e42 /src/dynarmic
parentac99ea96da608e687c3593a1110d0324f87913f3 (diff)
[dynarmic, cmake] Assorted RISC-V build fixes (#3797)
Signed-off-by: lizzie <lizzie@eden-emu.dev> Co-authored-by: crueter <crueter@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3797 Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/dynarmic')
-rw-r--r--src/dynarmic/CMakeLists.txt2
-rw-r--r--src/dynarmic/src/dynarmic/CMakeLists.txt13
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a32_address_space.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a64_address_space.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/abi.cpp30
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/abi.h15
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/address_space.cpp6
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/address_space.h8
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/devirtualize.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.h18
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_a32_coprocessor.cpp16
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_cryptography.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_data_processing.cpp17
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_floating_point.cpp24
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.cpp54
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.h12
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_saturation.cpp6
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector.cpp58
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp18
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_saturation.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/exclusive_monitor.cpp8
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/fastmem.h6
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.cpp5
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h8
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.cpp24
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.h26
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/stack_layout.h8
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.cpp5
-rw-r--r--src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.h6
-rw-r--r--src/dynarmic/src/dynarmic/backend/block_range_information.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/exception_handler.h3
-rw-r--r--src/dynarmic/src/dynarmic/backend/exception_handler_macos.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp17
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/a32_address_space.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/a32_interface.cpp14
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/a64_interface.cpp295
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/code_block.h3
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp16
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32.cpp56
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_coprocessor.cpp17
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_memory.cpp37
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64.cpp75
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64_memory.cpp45
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_cryptography.cpp35
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_data_processing.cpp164
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_floating_point.cpp179
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_packed.cpp71
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_saturation.cpp47
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector.cpp553
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_floating_point.cpp137
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_saturation.cpp35
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/exclusive_monitor.cpp54
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.cpp6
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/riscv64/stack_layout.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a32_interface.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.h9
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a64_interface.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/a64_jitstate.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/abi.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/abi.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/block_of_code.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/callback.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/constant_pool.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/constant_pool.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/constants.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/devirtualize.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_aes.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_saturation.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/exception_handler_windows.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/exclusive_monitor.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/host_feature.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/hostloc.h4
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/nzcv_util.h15
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/oparg.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/perf_map.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h2
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/stack_layout.h5
-rw-r--r--src/dynarmic/src/dynarmic/backend/x64/verbose_debugging_output.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/assert.cpp13
-rw-r--r--src/dynarmic/src/dynarmic/common/assert.h27
-rw-r--r--src/dynarmic/src/dynarmic/common/atomic.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/common_types.h26
-rw-r--r--src/dynarmic/src/dynarmic/common/context.h146
-rw-r--r--src/dynarmic/src/dynarmic/common/crypto/aes.cpp12
-rw-r--r--src/dynarmic/src/dynarmic/common/crypto/aes.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/crypto/crc32.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/common/crypto/crc32.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/fpcr.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/fpsr.h2
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/info.h2
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/mantissa_util.h2
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPConvert.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPMulAdd.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPRSqrtEstimate.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPRecipEstimate.cpp6
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPRecipExponent.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.h6
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/process_exception.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/process_nan.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/common/fp/unpacked.h2
-rw-r--r--src/dynarmic/src/dynarmic/common/llvm_disassemble.cpp6
-rw-r--r--src/dynarmic/src/dynarmic/common/llvm_disassemble.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/math_util.h4
-rw-r--r--src/dynarmic/src/dynarmic/common/safe_ops.h2
-rw-r--r--src/dynarmic/src/dynarmic/common/spin_lock_riscv64.cpp16
-rw-r--r--src/dynarmic/src/dynarmic/common/u128.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/common/u128.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/FPSCR.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/ITState.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/PSR.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.h4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/a32_location_descriptor.h4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/a32_types.h6
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/decoder/arm.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/decoder/asimd.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb16.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb32.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/decoder/vfp.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/a32_translate.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.h4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_misc.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_one_reg_modified_immediate.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_scalar.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_shift.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/impl/thumb32_data_processing_plain_binary_immediate.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/translate_arm.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A32/translate/translate_thumb.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.h6
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A64/a64_location_descriptor.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A64/a64_types.h6
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A64/decoder/a64.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A64/translate/a64_translate.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/A64/translate/impl/simd_vector_x_indexed_element.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/decoder/decoder_detail.h2
-rw-r--r--src/dynarmic/src/dynarmic/frontend/decoder/matcher.h4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/imm.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/frontend/imm.h4
-rw-r--r--src/dynarmic/src/dynarmic/ir/basic_block.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/ir/basic_block.h2
-rw-r--r--src/dynarmic/src/dynarmic/ir/ir_emitter.h4
-rw-r--r--src/dynarmic/src/dynarmic/ir/location_descriptor.h4
-rw-r--r--src/dynarmic/src/dynarmic/ir/microinstruction.cpp4
-rw-r--r--src/dynarmic/src/dynarmic/ir/microinstruction.h2
-rw-r--r--src/dynarmic/src/dynarmic/ir/opcodes.h2
-rw-r--r--src/dynarmic/src/dynarmic/ir/terminal.h2
-rw-r--r--src/dynarmic/src/dynarmic/ir/type.h4
-rw-r--r--src/dynarmic/src/dynarmic/ir/value.cpp2
-rw-r--r--src/dynarmic/src/dynarmic/ir/value.h6
-rw-r--r--src/dynarmic/src/dynarmic/mcl/bit.hpp4
-rw-r--r--src/dynarmic/src/dynarmic/mcl/integer_of_size.hpp2
-rw-r--r--src/dynarmic/src/dynarmic/mcl/intrusive_list.hpp2
-rw-r--r--src/dynarmic/tests/A32/fuzz_arm.cpp2
-rw-r--r--src/dynarmic/tests/A32/fuzz_thumb.cpp2
-rw-r--r--src/dynarmic/tests/A32/test_thumb_instructions.cpp2
-rw-r--r--src/dynarmic/tests/A32/testenv.h4
-rw-r--r--src/dynarmic/tests/A64/fibonacci.cpp2
-rw-r--r--src/dynarmic/tests/A64/fp_min_max.cpp2
-rw-r--r--src/dynarmic/tests/A64/fuzz_with_unicorn.cpp2
-rw-r--r--src/dynarmic/tests/A64/testenv.h4
-rw-r--r--src/dynarmic/tests/decoder_tests.cpp6
-rw-r--r--src/dynarmic/tests/fp/FPToFixed.cpp2
-rw-r--r--src/dynarmic/tests/fp/mantissa_util_tests.cpp2
-rw-r--r--src/dynarmic/tests/fp/unpacked_tests.cpp2
-rw-r--r--src/dynarmic/tests/fuzz_util.cpp2
-rw-r--r--src/dynarmic/tests/fuzz_util.h4
-rw-r--r--src/dynarmic/tests/print_info.cpp8
-rw-r--r--src/dynarmic/tests/rsqrt_test.cpp4
-rw-r--r--src/dynarmic/tests/test_generator.cpp2
-rw-r--r--src/dynarmic/tests/test_reader.cpp4
-rw-r--r--src/dynarmic/tests/unicorn_emu/a32_unicorn.cpp2
-rw-r--r--src/dynarmic/tests/unicorn_emu/a32_unicorn.h2
-rw-r--r--src/dynarmic/tests/unicorn_emu/a64_unicorn.cpp2
-rw-r--r--src/dynarmic/tests/unicorn_emu/a64_unicorn.h2
201 files changed, 1703 insertions, 1270 deletions
diff --git a/src/dynarmic/CMakeLists.txt b/src/dynarmic/CMakeLists.txt
index dd1def5273..4c4bf86d3e 100644
--- a/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/CMakeLists.txt
@@ -126,7 +126,7 @@ if ("arm64" IN_LIST ARCHITECTURE OR DYNARMIC_TESTS)
find_package(oaknut 2.0.1 CONFIG)
endif()
-if ("riscv" IN_LIST ARCHITECTURE)
+if ("riscv64" IN_LIST ARCHITECTURE)
find_package(biscuit 0.9.1 REQUIRED)
endif()
diff --git a/src/dynarmic/src/dynarmic/CMakeLists.txt b/src/dynarmic/src/dynarmic/CMakeLists.txt
index f79d18c15a..c51a660c03 100644
--- a/src/dynarmic/src/dynarmic/CMakeLists.txt
+++ b/src/dynarmic/src/dynarmic/CMakeLists.txt
@@ -13,10 +13,7 @@ add_library(dynarmic STATIC
backend/block_range_information.h
backend/exception_handler.h
common/always_false.h
- common/assert.cpp
- common/assert.h
common/cast_util.h
- common/common_types.h
common/crypto/aes.cpp
common/crypto/aes.h
common/crypto/crc32.cpp
@@ -258,7 +255,7 @@ if ("arm64" IN_LIST ARCHITECTURE)
)
endif()
-if ("riscv" IN_LIST ARCHITECTURE)
+if ("riscv64" IN_LIST ARCHITECTURE)
target_link_libraries(dynarmic PRIVATE biscuit::biscuit)
target_sources(dynarmic PRIVATE
@@ -281,6 +278,7 @@ if ("riscv" IN_LIST ARCHITECTURE)
backend/riscv64/emit_riscv64_vector.cpp
backend/riscv64/emit_riscv64.cpp
backend/riscv64/emit_riscv64.h
+ backend/riscv64/exclusive_monitor.cpp
backend/riscv64/reg_alloc.cpp
backend/riscv64/reg_alloc.h
backend/riscv64/stack_layout.h
@@ -289,9 +287,12 @@ if ("riscv" IN_LIST ARCHITECTURE)
backend/riscv64/a32_address_space.h
backend/riscv64/a32_core.h
backend/riscv64/a32_interface.cpp
+ backend/riscv64/a64_interface.cpp
backend/riscv64/code_block.h
+
+ common/spin_lock_riscv64.cpp
)
- message(FATAL_ERROR "TODO: Unimplemented frontend for this host architecture")
+ message(WARNING "TODO: Incomplete frontend for this host architecture")
endif()
if (WIN32)
@@ -359,7 +360,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 common)
if (BOOST_NO_HEADERS)
target_link_libraries(dynarmic PRIVATE Boost::variant Boost::icl Boost::pool)
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a32_address_space.cpp b/src/dynarmic/src/dynarmic/backend/arm64/a32_address_space.cpp
index 274e553cd8..da51220e9c 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a32_address_space.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a32_address_space.cpp
@@ -227,7 +227,7 @@ void A32AddressSpace::EmitPrelude() {
if (conf.HasOptimization(OptimizationFlag::ReturnStackBuffer)) {
code.LDR(Xscratch0, l_return_to_dispatcher);
- for (size_t i = 0; i < RSBCount; i++) {
+ for (std::size_t i = 0; i < RSBCount; i++) {
code.STR(Xscratch0, SP, offsetof(StackLayout, rsb) + offsetof(RSBEntry, code_ptr) + i * sizeof(RSBEntry));
}
}
@@ -266,7 +266,7 @@ void A32AddressSpace::EmitPrelude() {
if (conf.HasOptimization(OptimizationFlag::ReturnStackBuffer)) {
code.LDR(Xscratch0, l_return_to_dispatcher);
- for (size_t i = 0; i < RSBCount; i++) {
+ for (std::size_t i = 0; i < RSBCount; i++) {
code.STR(Xscratch0, SP, offsetof(StackLayout, rsb) + offsetof(RSBEntry, code_ptr) + i * sizeof(RSBEntry));
}
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp b/src/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
index d16a34275b..904806c719 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
@@ -10,8 +10,8 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/backend/arm64/a32_address_space.h"
#include "dynarmic/backend/arm64/a32_core.h"
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp b/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp
index 0ce51d0e17..dd8a561ccb 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.cpp
@@ -9,7 +9,7 @@
#include "dynarmic/backend/arm64/a32_jitstate.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::Arm64 {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h b/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h
index b4fee9a4d0..26513133e3 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a32_jitstate.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
#include "dynarmic/ir/location_descriptor.h"
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a64_address_space.cpp b/src/dynarmic/src/dynarmic/backend/arm64/a64_address_space.cpp
index a5a8306a6d..2c71ffe282 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a64_address_space.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a64_address_space.cpp
@@ -403,7 +403,7 @@ void A64AddressSpace::EmitPrelude() {
if (conf.HasOptimization(OptimizationFlag::ReturnStackBuffer)) {
code.LDR(Xscratch0, l_return_to_dispatcher);
- for (size_t i = 0; i < RSBCount; i++) {
+ for (std::size_t i = 0; i < RSBCount; i++) {
code.STR(Xscratch0, SP, offsetof(StackLayout, rsb) + offsetof(RSBEntry, code_ptr) + i * sizeof(RSBEntry));
}
}
@@ -441,7 +441,7 @@ void A64AddressSpace::EmitPrelude() {
if (conf.HasOptimization(OptimizationFlag::ReturnStackBuffer)) {
code.LDR(Xscratch0, l_return_to_dispatcher);
- for (size_t i = 0; i < RSBCount; i++) {
+ for (std::size_t i = 0; i < RSBCount; i++) {
code.STR(Xscratch0, SP, offsetof(StackLayout, rsb) + offsetof(RSBEntry, code_ptr) + i * sizeof(RSBEntry));
}
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp b/src/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
index b230f455c5..c1c589162c 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
@@ -10,8 +10,8 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/backend/arm64/a64_address_space.h"
#include "dynarmic/backend/arm64/a64_core.h"
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h b/src/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h
index 3dd422b6d4..29bc001f2c 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/a64_jitstate.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A64/a64_location_descriptor.h"
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/abi.cpp b/src/dynarmic/src/dynarmic/backend/arm64/abi.cpp
index acff6a89f0..3e47c4bf1c 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/abi.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/abi.cpp
@@ -11,22 +11,22 @@
#include <vector>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <oaknut/oaknut.hpp>
namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-static constexpr size_t gpr_size = 8;
-static constexpr size_t fpr_size = 16;
+static constexpr std::size_t gpr_size = 8;
+static constexpr std::size_t fpr_size = 16;
struct FrameInfo {
std::vector<int> gprs;
std::vector<int> fprs;
- size_t frame_size;
- size_t gprs_size;
- size_t fprs_size;
+ std::size_t frame_size;
+ std::size_t gprs_size;
+ std::size_t fprs_size;
};
static std::vector<int> ListToIndexes(u32 list) {
@@ -39,15 +39,15 @@ static std::vector<int> ListToIndexes(u32 list) {
return indexes;
}
-static FrameInfo CalculateFrameInfo(RegisterList rl, size_t frame_size) {
+static FrameInfo CalculateFrameInfo(RegisterList rl, std::size_t frame_size) {
const auto gprs = ListToIndexes(static_cast<u32>(rl));
const auto fprs = ListToIndexes(static_cast<u32>(rl >> 32));
- const size_t num_gprs = gprs.size();
- const size_t num_fprs = fprs.size();
+ const std::size_t num_gprs = gprs.size();
+ const std::size_t num_fprs = fprs.size();
- const size_t gprs_size = (num_gprs + 1) / 2 * 16;
- const size_t fprs_size = num_fprs * 16;
+ const std::size_t gprs_size = (num_gprs + 1) / 2 * 16;
+ const std::size_t fprs_size = num_fprs * 16;
return {
gprs,
@@ -60,16 +60,16 @@ static FrameInfo CalculateFrameInfo(RegisterList rl, size_t frame_size) {
#define DO_IT(TYPE, REG_TYPE, PAIR_OP, SINGLE_OP, OFFSET) \
if (frame_info.TYPE##s.size() > 0) { \
- for (size_t i = 0; i < frame_info.TYPE##s.size() - 1; i += 2) { \
+ for (std::size_t i = 0; i < frame_info.TYPE##s.size() - 1; i += 2) { \
code.PAIR_OP(oaknut::REG_TYPE{frame_info.TYPE##s[i]}, oaknut::REG_TYPE{frame_info.TYPE##s[i + 1]}, SP, (OFFSET) + i * TYPE##_size); \
} \
if (frame_info.TYPE##s.size() % 2 == 1) { \
- const size_t i = frame_info.TYPE##s.size() - 1; \
+ const std::size_t i = frame_info.TYPE##s.size() - 1; \
code.SINGLE_OP(oaknut::REG_TYPE{frame_info.TYPE##s[i]}, SP, (OFFSET) + i * TYPE##_size); \
} \
}
-void ABI_PushRegisters(oaknut::CodeGenerator& code, RegisterList rl, size_t frame_size) {
+void ABI_PushRegisters(oaknut::CodeGenerator& code, RegisterList rl, std::size_t frame_size) {
const FrameInfo frame_info = CalculateFrameInfo(rl, frame_size);
code.SUB(SP, SP, frame_info.gprs_size + frame_info.fprs_size);
@@ -80,7 +80,7 @@ void ABI_PushRegisters(oaknut::CodeGenerator& code, RegisterList rl, size_t fram
code.SUB(SP, SP, frame_info.frame_size);
}
-void ABI_PopRegisters(oaknut::CodeGenerator& code, RegisterList rl, size_t frame_size) {
+void ABI_PopRegisters(oaknut::CodeGenerator& code, RegisterList rl, std::size_t frame_size) {
const FrameInfo frame_info = CalculateFrameInfo(rl, frame_size);
code.ADD(SP, SP, frame_info.frame_size);
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/abi.h b/src/dynarmic/src/dynarmic/backend/arm64/abi.h
index b2e29d49e0..e22d7be346 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/abi.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/abi.h
@@ -9,14 +9,11 @@
#pragma once
#include <initializer_list>
-#include <stdexcept>
-#include <type_traits>
-#include "dynarmic/common/common_types.h"
-#include "dynarmic/common/assert.h"
+#include "common/common_types.h"
+#include "common/assert.h"
#include <oaknut/oaknut.hpp>
-#include "dynarmic/common/always_false.h"
namespace Dynarmic::Backend::Arm64 {
@@ -29,7 +26,7 @@ constexpr oaknut::XReg Xpagetable{24};
constexpr oaknut::XReg Xscratch0{16}, Xscratch1{17}, Xscratch2{30};
constexpr oaknut::WReg Wscratch0{16}, Wscratch1{17}, Wscratch2{30};
-template<size_t bitsize>
+template<std::size_t bitsize>
constexpr auto Rscratch0() {
if constexpr (bitsize == 32) {
return Wscratch0;
@@ -40,7 +37,7 @@ constexpr auto Rscratch0() {
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
constexpr auto Rscratch1() {
if constexpr (bitsize == 32) {
return Wscratch1;
@@ -70,7 +67,7 @@ constexpr RegisterList ToRegList(oaknut::Reg reg) {
constexpr RegisterList ABI_CALLEE_SAVE = 0x0000ff00'7ff80000;
constexpr RegisterList ABI_CALLER_SAVE = 0xffffffff'4000ffff;
-void ABI_PushRegisters(oaknut::CodeGenerator& code, RegisterList rl, size_t stack_space);
-void ABI_PopRegisters(oaknut::CodeGenerator& code, RegisterList rl, size_t stack_space);
+void ABI_PushRegisters(oaknut::CodeGenerator& code, RegisterList rl, std::size_t stack_space);
+void ABI_PopRegisters(oaknut::CodeGenerator& code, RegisterList rl, std::size_t stack_space);
} // namespace Dynarmic::Backend::Arm64
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/address_space.cpp b/src/dynarmic/src/dynarmic/backend/arm64/address_space.cpp
index 6b59871b0a..aa36119830 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/address_space.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/address_space.cpp
@@ -24,7 +24,7 @@
namespace Dynarmic::Backend::Arm64 {
-AddressSpace::AddressSpace(size_t code_cache_size)
+AddressSpace::AddressSpace(std::size_t code_cache_size)
: ir_block{IR::LocationDescriptor{0}}
, code_cache_size(code_cache_size)
, mem(code_cache_size)
@@ -102,8 +102,8 @@ void AddressSpace::ClearCache() {
code.set_offset(prelude_info.end_of_prelude);
}
-size_t AddressSpace::GetRemainingSize() {
- return code_cache_size - static_cast<size_t>(code.offset());
+std::size_t AddressSpace::GetRemainingSize() {
+ return code_cache_size - static_cast<std::size_t>(code.offset());
}
EmittedBlockInfo AddressSpace::Emit(IR::Block block) {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/address_space.h b/src/dynarmic/src/dynarmic/backend/arm64/address_space.h
index 9fe9595c65..fba199aefb 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/address_space.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/address_space.h
@@ -11,7 +11,7 @@
#include <map>
#include <optional>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <oaknut/code_block.hpp>
#include <oaknut/oaknut.hpp>
#include <ankerl/unordered_dense.h>
@@ -26,7 +26,7 @@ namespace Dynarmic::Backend::Arm64 {
class AddressSpace {
public:
- explicit AddressSpace(size_t code_cache_size);
+ explicit AddressSpace(std::size_t code_cache_size);
virtual ~AddressSpace();
virtual void GenerateIR(IR::Block& ir_block, IR::LocationDescriptor) const = 0;
@@ -60,7 +60,7 @@ protected:
#endif
}
- size_t GetRemainingSize();
+ std::size_t GetRemainingSize();
EmittedBlockInfo Emit(IR::Block ir_block);
void Link(EmittedBlockInfo& block);
void LinkBlockLinks(const CodePtr entry_point, const CodePtr target_ptr, const std::vector<BlockRelocation>& block_relocations_list);
@@ -69,7 +69,7 @@ protected:
FakeCall FastmemCallback(u64 host_pc);
IR::Block ir_block;
- const size_t code_cache_size;
+ const std::size_t code_cache_size;
oaknut::CodeBlock mem;
oaknut::CodeGenerator code;
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/devirtualize.h b/src/dynarmic/src/dynarmic/backend/arm64/devirtualize.h
index 737a6572e3..e1fd66b8f1 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/devirtualize.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/devirtualize.h
@@ -9,7 +9,7 @@
#pragma once
#include <bit>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"
namespace Dynarmic::Backend::Arm64 {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
index 104d0a452c..0330a9890c 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.cpp
@@ -176,7 +176,7 @@ void EmitIR<IR::Opcode::NZCVFromPackedFlags>(oaknut::CodeGenerator&, EmitContext
ctx.reg_alloc.DefineAsExisting(inst, args[0]);
}
-static void EmitAddCycles(oaknut::CodeGenerator& code, EmitContext& ctx, size_t cycles_to_add) {
+static void EmitAddCycles(oaknut::CodeGenerator& code, EmitContext& ctx, std::size_t cycles_to_add) {
if (!ctx.conf.enable_cycle_counting) {
return;
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.h b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.h
index e58f93c4e5..fefbcd8f5a 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64.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.
@@ -13,7 +13,7 @@
#include <memory>
#include <vector>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/arm64/fastmem.h"
@@ -103,7 +103,7 @@ struct BlockRelocation {
struct EmittedBlockInfo {
CodePtr entry_point;
- size_t size;
+ std::size_t size;
std::vector<Relocation> relocations;
ankerl::unordered_dense::map<IR::LocationDescriptor, std::vector<BlockRelocation>> block_relocations;
ankerl::unordered_dense::map<std::ptrdiff_t, FastmemPatchInfo> fastmem_patch_info;
@@ -127,9 +127,9 @@ struct EmitConfig {
// Page table
u64 page_table_pointer;
- size_t page_table_address_space_bits;
+ std::size_t page_table_address_space_bits;
int page_table_pointer_mask_bits;
- size_t page_table_log2_stride;
+ std::size_t page_table_log2_stride;
bool silently_mirror_page_table;
bool absolute_offset_page_table;
u8 detect_misaligned_access_via_page_table;
@@ -138,7 +138,7 @@ struct EmitConfig {
// Fastmem
std::optional<u64> fastmem_pointer;
bool recompile_on_fastmem_failure;
- size_t fastmem_address_space_bits;
+ std::size_t fastmem_address_space_bits;
bool silently_mirror_fastmem;
// Timing
@@ -156,9 +156,9 @@ struct EmitConfig {
void (*emit_check_memory_abort)(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, oaknut::Label& end);
// State offsets
- size_t state_nzcv_offset;
- size_t state_fpsr_offset;
- size_t state_exclusive_state_offset;
+ std::size_t state_nzcv_offset;
+ std::size_t state_fpsr_offset;
+ std::size_t state_exclusive_state_offset;
// A32 specific
std::array<std::shared_ptr<A32::Coprocessor>, 16> coprocessors{};
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_a32_coprocessor.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_a32_coprocessor.cpp
index 259e161479..8979ce34f0 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_a32_coprocessor.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_a32_coprocessor.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.
@@ -45,7 +45,7 @@ static void CallCoprocCallback(oaknut::CodeGenerator& code, EmitContext& ctx, A3
template<>
void EmitIR<IR::Opcode::A32CoprocInternalOperation>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const auto opc1 = static_cast<unsigned>(coproc_info[2]);
const auto CRd = static_cast<A32::CoprocReg>(coproc_info[3]);
@@ -72,7 +72,7 @@ template<>
void EmitIR<IR::Opcode::A32CoprocSendOneWord>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const auto opc1 = static_cast<unsigned>(coproc_info[2]);
const auto CRn = static_cast<A32::CoprocReg>(coproc_info[3]);
@@ -115,7 +115,7 @@ void EmitIR<IR::Opcode::A32CoprocSendTwoWords>(oaknut::CodeGenerator& code, Emit
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const auto opc = static_cast<unsigned>(coproc_info[2]);
const auto CRm = static_cast<A32::CoprocReg>(coproc_info[3]);
@@ -158,7 +158,7 @@ template<>
void EmitIR<IR::Opcode::A32CoprocGetOneWord>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const auto opc1 = static_cast<unsigned>(coproc_info[2]);
const auto CRn = static_cast<A32::CoprocReg>(coproc_info[3]);
@@ -199,7 +199,7 @@ void EmitIR<IR::Opcode::A32CoprocGetOneWord>(oaknut::CodeGenerator& code, EmitCo
template<>
void EmitIR<IR::Opcode::A32CoprocGetTwoWords>(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const unsigned opc = coproc_info[2];
const auto CRm = static_cast<A32::CoprocReg>(coproc_info[3]);
@@ -243,7 +243,7 @@ void EmitIR<IR::Opcode::A32CoprocLoadWords>(oaknut::CodeGenerator& code, EmitCon
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const bool long_transfer = coproc_info[2] != 0;
const auto CRd = static_cast<A32::CoprocReg>(coproc_info[3]);
@@ -274,7 +274,7 @@ void EmitIR<IR::Opcode::A32CoprocStoreWords>(oaknut::CodeGenerator& code, EmitCo
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
const auto coproc_info = inst->GetArg(0).GetCoprocInfo();
- const size_t coproc_num = coproc_info[0];
+ const std::size_t coproc_num = coproc_info[0];
const bool two = coproc_info[1] != 0;
const bool long_transfer = coproc_info[2] != 0;
const auto CRd = static_cast<A32::CoprocReg>(coproc_info[3]);
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_cryptography.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_cryptography.cpp
index 5366a250c9..212e273984 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_cryptography.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_cryptography.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 @@ namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void EmitCRC(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit_fn) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_data_processing.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_data_processing.cpp
index 6e4ce06eb6..98faf60716 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_data_processing.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_data_processing.cpp
@@ -11,7 +11,6 @@
#include <fmt/ostream.h>
#include <oaknut/oaknut.hpp>
-#include "dynarmic/backend/arm64/a32_jitstate.h"
#include "dynarmic/backend/arm64/abi.h"
#include "dynarmic/backend/arm64/emit_arm64.h"
#include "dynarmic/backend/arm64/emit_context.h"
@@ -24,7 +23,7 @@ namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void EmitTwoOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
@@ -35,7 +34,7 @@ static void EmitTwoOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst,
emit(Rresult, Roperand);
}
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void EmitThreeOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
@@ -868,7 +867,7 @@ void EmitIR<IR::Opcode::RotateRightMasked64>(oaknut::CodeGenerator& code, EmitCo
[&](auto& Xresult, auto& Xoperand, auto& Xshift) { code.ROR(Xresult, Xoperand, Xshift); });
}
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void MaybeAddSubImm(oaknut::CodeGenerator& code, u64 imm, EmitFn emit_fn) {
static_assert(bitsize == 32 || bitsize == 64);
if constexpr (bitsize == 32) {
@@ -882,7 +881,7 @@ static void MaybeAddSubImm(oaknut::CodeGenerator& code, u64 imm, EmitFn emit_fn)
}
}
-template<size_t bitsize, bool sub>
+template<std::size_t bitsize, bool sub>
static void EmitAddSub(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
const auto nzcv_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetNZCVFromOp);
const auto overflow_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetOverflowFromOp);
@@ -1102,7 +1101,7 @@ void EmitIR<IR::Opcode::SignedDiv64>(oaknut::CodeGenerator& code, EmitContext& c
[&](auto& Xresult, auto& Xa, auto& Xb) { code.SDIV(Xresult, Xa, Xb); });
}
-template<size_t bitsize>
+template<std::size_t bitsize>
static bool IsValidBitImm(u64 imm) {
static_assert(bitsize == 32 || bitsize == 64);
if constexpr (bitsize == 32) {
@@ -1112,7 +1111,7 @@ static bool IsValidBitImm(u64 imm) {
}
}
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void MaybeBitImm(oaknut::CodeGenerator& code, u64 imm, EmitFn emit_fn) {
static_assert(bitsize == 32 || bitsize == 64);
if constexpr (bitsize == 32) {
@@ -1126,7 +1125,7 @@ static void MaybeBitImm(oaknut::CodeGenerator& code, u64 imm, EmitFn emit_fn) {
}
}
-template<size_t bitsize, typename EmitFn1, typename EmitFn2 = std::nullptr_t>
+template<std::size_t bitsize, typename EmitFn1, typename EmitFn2 = std::nullptr_t>
static void EmitBitOp(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn1 emit_without_flags, EmitFn2 emit_with_flags = nullptr) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Rresult = ctx.reg_alloc.WriteReg<bitsize>(inst);
@@ -1168,7 +1167,7 @@ static void EmitBitOp(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* i
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
static void EmitAndNot(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
const auto nz_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetNZFromOp);
const auto nzcv_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetNZCVFromOp);
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_floating_point.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_floating_point.cpp
index 0efb6ce787..76a83ede93 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_floating_point.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_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.
@@ -23,7 +23,7 @@ namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void EmitTwoOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Vresult = ctx.reg_alloc.WriteVec<bitsize>(inst);
@@ -34,7 +34,7 @@ static void EmitTwoOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst,
emit(Vresult, Voperand);
}
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void EmitThreeOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Vresult = ctx.reg_alloc.WriteVec<bitsize>(inst);
@@ -46,7 +46,7 @@ static void EmitThreeOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst
emit(Vresult, Va, Vb);
}
-template<size_t bitsize, typename EmitFn>
+template<std::size_t bitsize, typename EmitFn>
static void EmitFourOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Vresult = ctx.reg_alloc.WriteVec<bitsize>(inst);
@@ -59,7 +59,7 @@ static void EmitFourOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst,
emit(Vresult, Va, Vb, Vc);
}
-template<size_t bitsize_from, size_t bitsize_to, typename EmitFn>
+template<std::size_t bitsize_from, std::size_t bitsize_to, typename EmitFn>
static void EmitConvert(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Vto = ctx.reg_alloc.WriteVec<bitsize_to>(inst);
@@ -73,12 +73,12 @@ static void EmitConvert(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst
emit(Vto, Vfrom);
}
-template<size_t bitsize_from, size_t bitsize_to, bool is_signed>
+template<std::size_t bitsize_from, std::size_t bitsize_to, bool is_signed>
static void EmitToFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
- auto Rto = ctx.reg_alloc.WriteReg<std::max<size_t>(bitsize_to, 32)>(inst);
+ auto Rto = ctx.reg_alloc.WriteReg<std::max<std::size_t>(bitsize_to, 32)>(inst);
auto Vfrom = ctx.reg_alloc.ReadVec<bitsize_from>(args[0]);
- const size_t fbits = args[1].GetImmediateU8();
+ const std::size_t fbits = args[1].GetImmediateU8();
const auto rounding_mode = static_cast<FP::RoundingMode>(args[2].GetImmediateU8());
RegAlloc::Realize(Rto, Vfrom);
ctx.fpsr.Load();
@@ -158,12 +158,12 @@ static void EmitToFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst*
}
}
-template<size_t bitsize_from, size_t bitsize_to, typename EmitFn>
+template<std::size_t bitsize_from, std::size_t bitsize_to, typename EmitFn>
static void EmitFromFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Vto = ctx.reg_alloc.WriteVec<bitsize_to>(inst);
- auto Rfrom = ctx.reg_alloc.ReadReg<std::max<size_t>(bitsize_from, 32)>(args[0]);
- const size_t fbits = args[1].GetImmediateU8();
+ auto Rfrom = ctx.reg_alloc.ReadReg<std::max<std::size_t>(bitsize_from, 32)>(args[0]);
+ const std::size_t fbits = args[1].GetImmediateU8();
const auto rounding_mode = static_cast<FP::RoundingMode>(args[2].GetImmediateU8());
RegAlloc::Realize(Vto, Rfrom);
ctx.fpsr.Load();
@@ -212,7 +212,7 @@ void EmitIR<IR::Opcode::FPAdd64>(oaknut::CodeGenerator& code, EmitContext& ctx,
EmitThreeOp<64>(code, ctx, inst, [&](auto& Dresult, auto& Da, auto& Db) { code.FADD(Dresult, Da, Db); });
}
-template<size_t size>
+template<std::size_t size>
void EmitCompare(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto flags = ctx.reg_alloc.WriteFlags(inst);
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.cpp
index b7ea792a38..143244d60b 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.cpp
@@ -10,6 +10,7 @@
#include <optional>
#include <utility>
+#include <cstddef>
#include <bit>
#include <oaknut/oaknut.hpp>
@@ -23,7 +24,6 @@
#include "dynarmic/ir/acc_type.h"
#include "dynarmic/ir/basic_block.h"
#include "dynarmic/ir/microinstruction.h"
-#include "dynarmic/ir/opcodes.h"
namespace Dynarmic::Backend::Arm64 {
@@ -35,7 +35,7 @@ bool IsOrdered(IR::AccType acctype) {
return acctype == IR::AccType::ORDERED || acctype == IR::AccType::ORDEREDRW || acctype == IR::AccType::LIMITEDORDERED;
}
-LinkTarget ReadMemoryLinkTarget(size_t bitsize) {
+LinkTarget ReadMemoryLinkTarget(std::size_t bitsize) {
switch (bitsize) {
case 8:
return LinkTarget::ReadMemory8;
@@ -51,7 +51,7 @@ LinkTarget ReadMemoryLinkTarget(size_t bitsize) {
UNREACHABLE();
}
-LinkTarget WriteMemoryLinkTarget(size_t bitsize) {
+LinkTarget WriteMemoryLinkTarget(std::size_t bitsize) {
switch (bitsize) {
case 8:
return LinkTarget::WriteMemory8;
@@ -67,7 +67,7 @@ LinkTarget WriteMemoryLinkTarget(size_t bitsize) {
UNREACHABLE();
}
-LinkTarget WrappedReadMemoryLinkTarget(size_t bitsize) {
+LinkTarget WrappedReadMemoryLinkTarget(std::size_t bitsize) {
switch (bitsize) {
case 8:
return LinkTarget::WrappedReadMemory8;
@@ -83,7 +83,7 @@ LinkTarget WrappedReadMemoryLinkTarget(size_t bitsize) {
UNREACHABLE();
}
-LinkTarget WrappedWriteMemoryLinkTarget(size_t bitsize) {
+LinkTarget WrappedWriteMemoryLinkTarget(std::size_t bitsize) {
switch (bitsize) {
case 8:
return LinkTarget::WrappedWriteMemory8;
@@ -99,7 +99,7 @@ LinkTarget WrappedWriteMemoryLinkTarget(size_t bitsize) {
UNREACHABLE();
}
-LinkTarget ExclusiveReadMemoryLinkTarget(size_t bitsize) {
+LinkTarget ExclusiveReadMemoryLinkTarget(std::size_t bitsize) {
switch (bitsize) {
case 8:
return LinkTarget::ExclusiveReadMemory8;
@@ -115,7 +115,7 @@ LinkTarget ExclusiveReadMemoryLinkTarget(size_t bitsize) {
UNREACHABLE();
}
-LinkTarget ExclusiveWriteMemoryLinkTarget(size_t bitsize) {
+LinkTarget ExclusiveWriteMemoryLinkTarget(std::size_t bitsize) {
switch (bitsize) {
case 8:
return LinkTarget::ExclusiveWriteMemory8;
@@ -131,7 +131,7 @@ LinkTarget ExclusiveWriteMemoryLinkTarget(size_t bitsize) {
UNREACHABLE();
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void CallbackOnlyEmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
ctx.reg_alloc.PrepareForCall({}, args[1]);
@@ -150,7 +150,7 @@ void CallbackOnlyEmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, I
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void CallbackOnlyEmitExclusiveReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
ctx.reg_alloc.PrepareForCall({}, args[1]);
@@ -171,7 +171,7 @@ void CallbackOnlyEmitExclusiveReadMemory(oaknut::CodeGenerator& code, EmitContex
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void CallbackOnlyEmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
ctx.reg_alloc.PrepareForCall({}, args[1], args[2]);
@@ -186,7 +186,7 @@ void CallbackOnlyEmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx,
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void CallbackOnlyEmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
ctx.reg_alloc.PrepareForCall({}, args[1], args[2]);
@@ -209,13 +209,13 @@ void CallbackOnlyEmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitConte
ctx.reg_alloc.DefineAsRegister(inst, X0);
}
-constexpr size_t page_table_const_bits = 12;
-constexpr size_t page_table_const_size = 1 << page_table_const_bits;
-constexpr size_t page_table_const_mask = (1 << page_table_const_bits) - 1;
+constexpr std::size_t page_table_const_bits = 12;
+constexpr std::size_t page_table_const_size = 1 << page_table_const_bits;
+constexpr std::size_t page_table_const_mask = (1 << page_table_const_bits) - 1;
// This function may use Xscratch0 as a scratch register
// Trashes NZCV
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitDetectMisalignedVAddr(oaknut::CodeGenerator& code, EmitContext& ctx, oaknut::XReg Xaddr, const SharedLabel& fallback) {
static_assert(bitsize == 8 || bitsize == 16 || bitsize == 32 || bitsize == 64 || bitsize == 128);
@@ -253,10 +253,10 @@ void EmitDetectMisalignedVAddr(oaknut::CodeGenerator& code, EmitContext& ctx, oa
// May use Xscratch1 as scratch register
// Address to read/write = [ret0 + ret1], ret0 is always Xscratch0 and ret1 is either Xaddr or Xscratch1
// Trashes NZCV
-template<size_t bitsize>
+template<std::size_t bitsize>
std::pair<oaknut::XReg, oaknut::XReg> InlinePageTableEmitVAddrLookup(oaknut::CodeGenerator& code, EmitContext& ctx, oaknut::XReg Xaddr, const SharedLabel& fallback) {
- const size_t valid_page_index_bits = ctx.conf.page_table_address_space_bits - page_table_const_bits;
- const size_t unused_top_bits = 64 - ctx.conf.page_table_address_space_bits;
+ const std::size_t valid_page_index_bits = ctx.conf.page_table_address_space_bits - page_table_const_bits;
+ const std::size_t unused_top_bits = 64 - ctx.conf.page_table_address_space_bits;
EmitDetectMisalignedVAddr<bitsize>(code, ctx, Xaddr, fallback);
@@ -408,7 +408,7 @@ CodePtr EmitMemoryStr(oaknut::CodeGenerator& code, int value_idx, oaknut::XReg X
return fastmem_location;
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void InlinePageTableEmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Xaddr = ctx.reg_alloc.ReadX(args[1]);
@@ -448,7 +448,7 @@ void InlinePageTableEmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx
code.l(*end);
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void InlinePageTableEmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Xaddr = ctx.reg_alloc.ReadX(args[1]);
@@ -511,7 +511,7 @@ inline bool ShouldExt32(EmitContext& ctx) {
// May use Xscratch0 as scratch register
// Address to read/write = [ret0 + ret1], ret0 is always Xfastmem and ret1 is either Xaddr or Xscratch0
// Trashes NZCV
-template<size_t bitsize>
+template<std::size_t bitsize>
std::pair<oaknut::XReg, oaknut::XReg> FastmemEmitVAddrLookup(oaknut::CodeGenerator& code, EmitContext& ctx, oaknut::XReg Xaddr, const SharedLabel& fallback) {
if (ctx.conf.fastmem_address_space_bits == 64 || ShouldExt32(ctx)) {
return std::make_pair(Xfastmem, Xaddr);
@@ -527,7 +527,7 @@ std::pair<oaknut::XReg, oaknut::XReg> FastmemEmitVAddrLookup(oaknut::CodeGenerat
return std::make_pair(Xfastmem, Xaddr);
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void FastmemEmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, DoNotFastmemMarker marker) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Xaddr = ctx.reg_alloc.ReadX(args[1]);
@@ -577,7 +577,7 @@ void FastmemEmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::In
code.l(*end);
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void FastmemEmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, DoNotFastmemMarker marker) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Xaddr = ctx.reg_alloc.ReadX(args[1]);
@@ -633,7 +633,7 @@ void FastmemEmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::I
} // namespace
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
if (const auto marker = ShouldFastmem(ctx, inst)) {
FastmemEmitReadMemory<bitsize>(code, ctx, inst, *marker);
@@ -644,12 +644,12 @@ void EmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* ins
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitExclusiveReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
CallbackOnlyEmitExclusiveReadMemory<bitsize>(code, ctx, inst);
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
if (const auto marker = ShouldFastmem(ctx, inst)) {
FastmemEmitWriteMemory<bitsize>(code, ctx, inst, *marker);
@@ -660,7 +660,7 @@ void EmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* in
}
}
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
CallbackOnlyEmitExclusiveWriteMemory<bitsize>(code, ctx, inst);
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.h b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.h
index 3c50194689..25608dbfe3 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.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.
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/common_types.h"
+#include <cstddef>
namespace oaknut {
struct CodeGenerator;
@@ -23,13 +23,13 @@ namespace Dynarmic::Backend::Arm64 {
struct EmitContext;
enum class LinkTarget;
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst);
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitExclusiveReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst);
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst);
-template<size_t bitsize>
+template<std::size_t bitsize>
void EmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst);
} // namespace Dynarmic::Backend::Arm64
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_saturation.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_saturation.cpp
index f9d1e5d619..93bafbf884 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_saturation.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_saturation.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.
@@ -66,7 +66,7 @@ void EmitIR<IR::Opcode::SignedSaturation>(oaknut::CodeGenerator& code, EmitConte
const auto overflow_inst = inst->GetAssociatedPseudoOperation(IR::Opcode::GetOverflowFromOp);
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
- const size_t N = args[1].GetImmediateU8();
+ const std::size_t N = args[1].GetImmediateU8();
ASSERT(N >= 1 && N <= 32);
if (N == 32) {
@@ -112,7 +112,7 @@ void EmitIR<IR::Opcode::UnsignedSaturation>(oaknut::CodeGenerator& code, EmitCon
RegAlloc::Realize(Wresult, Woperand);
ctx.reg_alloc.SpillFlags();
- const size_t N = args[1].GetImmediateU8();
+ const std::size_t N = args[1].GetImmediateU8();
ASSERT(N <= 31);
const u32 saturated_value = (1u << N) - 1;
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector.cpp
index c773d5a339..6ac8531bfc 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector.cpp
@@ -33,7 +33,7 @@ static void EmitTwoOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst,
emit(Qresult, Qoperand);
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOp(code, ctx, inst, [&](auto& Qresult, auto& Qoperand) {
if constexpr (size == 8) {
@@ -50,7 +50,7 @@ static void EmitTwoOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR:
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArrangedSaturated(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOpArranged<size>(code, ctx, inst, [&](auto Vresult, auto Voperand) {
ctx.fpsr.Load();
@@ -58,7 +58,7 @@ static void EmitTwoOpArrangedSaturated(oaknut::CodeGenerator& code, EmitContext&
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArrangedWiden(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOp(code, ctx, inst, [&](auto& Qresult, auto& Qoperand) {
if constexpr (size == 8) {
@@ -73,7 +73,7 @@ static void EmitTwoOpArrangedWiden(oaknut::CodeGenerator& code, EmitContext& ctx
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArrangedNarrow(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOp(code, ctx, inst, [&](auto& Qresult, auto& Qoperand) {
if constexpr (size == 16) {
@@ -88,7 +88,7 @@ static void EmitTwoOpArrangedNarrow(oaknut::CodeGenerator& code, EmitContext& ct
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArrangedSaturatedNarrow(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOpArrangedNarrow<size>(code, ctx, inst, [&](auto Vresult, auto Voperand) {
ctx.fpsr.Load();
@@ -96,7 +96,7 @@ static void EmitTwoOpArrangedSaturatedNarrow(oaknut::CodeGenerator& code, EmitCo
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArrangedPairWiden(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOp(code, ctx, inst, [&](auto& Qresult, auto& Qoperand) {
if constexpr (size == 8) {
@@ -111,7 +111,7 @@ static void EmitTwoOpArrangedPairWiden(oaknut::CodeGenerator& code, EmitContext&
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArrangedLower(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOp(code, ctx, inst, [&](auto& Qresult, auto& Qoperand) {
if constexpr (size == 8) {
@@ -137,7 +137,7 @@ static void EmitThreeOp(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst
emit(Qresult, Qa, Qb);
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitThreeOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
if constexpr (size == 8) {
@@ -154,7 +154,7 @@ static void EmitThreeOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, I
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitThreeOpArrangedSaturated(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitThreeOpArranged<size>(code, ctx, inst, [&](auto Vresult, auto Va, auto Vb) {
ctx.fpsr.Load();
@@ -162,7 +162,7 @@ static void EmitThreeOpArrangedSaturated(oaknut::CodeGenerator& code, EmitContex
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitThreeOpArrangedWiden(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
if constexpr (size == 8) {
@@ -179,7 +179,7 @@ static void EmitThreeOpArrangedWiden(oaknut::CodeGenerator& code, EmitContext& c
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitThreeOpArrangedSaturatedWiden(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitThreeOpArrangedWiden<size>(code, ctx, inst, [&](auto Vresult, auto Va, auto Vb) {
ctx.fpsr.Load();
@@ -187,7 +187,7 @@ static void EmitThreeOpArrangedSaturatedWiden(oaknut::CodeGenerator& code, EmitC
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitThreeOpArrangedLower(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
if constexpr (size == 8) {
@@ -202,7 +202,7 @@ static void EmitThreeOpArrangedLower(oaknut::CodeGenerator& code, EmitContext& c
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitSaturatedAccumulate(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qaccumulator = ctx.reg_alloc.ReadWriteQ(args[1], inst); // NB: Swapped
@@ -223,7 +223,7 @@ static void EmitSaturatedAccumulate(oaknut::CodeGenerator&, EmitContext& ctx, IR
}
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitImmShift(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qresult = ctx.reg_alloc.WriteQ(inst);
@@ -244,7 +244,7 @@ static void EmitImmShift(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* ins
}
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitImmShiftSaturated(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitImmShift<size>(code, ctx, inst, [&](auto Vresult, auto Voperand, u8 shift_amount) {
ctx.fpsr.Load();
@@ -252,7 +252,7 @@ static void EmitImmShiftSaturated(oaknut::CodeGenerator& code, EmitContext& ctx,
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitReduce(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Vresult = ctx.reg_alloc.WriteVec<size>(inst);
@@ -272,13 +272,13 @@ static void EmitReduce(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst,
}
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitGetElement(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
ASSERT(args[1].IsImmediate());
const u8 index = args[1].GetImmediateU8();
- auto Rresult = ctx.reg_alloc.WriteReg<std::max<size_t>(32, size)>(inst);
+ auto Rresult = ctx.reg_alloc.WriteReg<std::max<std::size_t>(32, size)>(inst);
auto Qvalue = ctx.reg_alloc.ReadQ(args[0]);
RegAlloc::Realize(Rresult, Qvalue);
@@ -307,14 +307,14 @@ void EmitIR<IR::Opcode::VectorGetElement64>(oaknut::CodeGenerator& code, EmitCon
EmitGetElement<64>(code, ctx, inst, [&](auto& Xresult, auto& Qvalue, u8 index) { code.UMOV(Xresult, Qvalue->Delem()[index]); });
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitSetElement(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
ASSERT(args[1].IsImmediate());
const u8 index = args[1].GetImmediateU8();
auto Qvector = ctx.reg_alloc.ReadWriteQ(args[0], inst);
- auto Rvalue = ctx.reg_alloc.ReadReg<std::max<size_t>(32, size)>(args[2]);
+ auto Rvalue = ctx.reg_alloc.ReadReg<std::max<std::size_t>(32, size)>(args[2]);
RegAlloc::Realize(Qvector, Rvalue);
// TODO: fpr source
@@ -432,11 +432,11 @@ void EmitIR<IR::Opcode::VectorArithmeticVShift64>(oaknut::CodeGenerator& code, E
EmitThreeOpArranged<64>(code, ctx, inst, [&](auto Vresult, auto Va, auto Vb) { code.SSHL(Vresult, Va, Vb); });
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitBroadcast(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qvector = ctx.reg_alloc.WriteQ(inst);
- auto Rvalue = ctx.reg_alloc.ReadReg<std::max<size_t>(32, size)>(args[0]);
+ auto Rvalue = ctx.reg_alloc.ReadReg<std::max<std::size_t>(32, size)>(args[0]);
RegAlloc::Realize(Qvector, Rvalue);
// TODO: fpr source
@@ -479,7 +479,7 @@ void EmitIR<IR::Opcode::VectorBroadcast64>(oaknut::CodeGenerator& code, EmitCont
EmitBroadcast<64>(code, ctx, inst, [&](auto& Qvector, auto& Xvalue) { code.DUP(Qvector->D2(), Xvalue); });
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitBroadcastElement(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qvector = ctx.reg_alloc.WriteQ(inst);
@@ -1612,17 +1612,17 @@ void EmitIR<IR::Opcode::VectorTableLookup64>(oaknut::CodeGenerator& code, EmitCo
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto table = ctx.reg_alloc.GetArgumentInfo(inst->GetArg(1).GetInst());
- const size_t table_size = std::count_if(table.begin(), table.end(), [](const auto& elem) { return !elem.IsVoid(); });
+ const std::size_t table_size = std::count_if(table.begin(), table.end(), [](const auto& elem) { return !elem.IsVoid(); });
const bool is_defaults_zero = inst->GetArg(0).IsZero();
auto Dresult = is_defaults_zero ? ctx.reg_alloc.WriteD(inst) : ctx.reg_alloc.ReadWriteD(args[0], inst);
auto Dindices = ctx.reg_alloc.ReadD(args[2]);
std::vector<RAReg<oaknut::DReg>> Dtable;
- for (size_t i = 0; i < table_size; i++) {
+ for (std::size_t i = 0; i < table_size; i++) {
Dtable.emplace_back(ctx.reg_alloc.ReadD(table[i]));
}
RegAlloc::Realize(Dresult, Dindices);
- for (size_t i = 0; i < table_size; i++) {
+ for (std::size_t i = 0; i < table_size; i++) {
RegAlloc::Realize(Dtable[i]);
}
@@ -1679,17 +1679,17 @@ void EmitIR<IR::Opcode::VectorTableLookup128>(oaknut::CodeGenerator& code, EmitC
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto table = ctx.reg_alloc.GetArgumentInfo(inst->GetArg(1).GetInst());
- const size_t table_size = std::count_if(table.begin(), table.end(), [](const auto& elem) { return !elem.IsVoid(); });
+ const std::size_t table_size = std::count_if(table.begin(), table.end(), [](const auto& elem) { return !elem.IsVoid(); });
const bool is_defaults_zero = inst->GetArg(0).IsZero();
auto Qresult = is_defaults_zero ? ctx.reg_alloc.WriteQ(inst) : ctx.reg_alloc.ReadWriteQ(args[0], inst);
auto Qindices = ctx.reg_alloc.ReadQ(args[2]);
std::vector<RAReg<oaknut::QReg>> Qtable;
- for (size_t i = 0; i < table_size; i++) {
+ for (std::size_t i = 0; i < table_size; i++) {
Qtable.emplace_back(ctx.reg_alloc.ReadQ(table[i]));
}
RegAlloc::Realize(Qresult, Qindices);
- for (size_t i = 0; i < table_size; i++) {
+ for (std::size_t i = 0; i < table_size; i++) {
RegAlloc::Realize(Qtable[i]);
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp
index 557d6284ed..cdc64d996e 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_floating_point.cpp
@@ -32,7 +32,7 @@
namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-using A64FullVectorWidth = std::integral_constant<size_t, 128>;
+using A64FullVectorWidth = std::integral_constant<std::size_t, 128>;
// Array alias that always sizes itself according to the given type T
// relative to the size of a vector register. e.g. T = u32 would result
@@ -65,7 +65,7 @@ static void EmitTwoOp(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* i
MaybeStandardFPSCRValue(code, ctx, fpcr_controlled, [&] { emit(Qresult, Qa); });
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitTwoOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitTwoOp(code, ctx, inst, [&](auto& Qresult, auto& Qa) {
if constexpr (size == 16) {
@@ -93,7 +93,7 @@ static void EmitThreeOp(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst*
MaybeStandardFPSCRValue(code, ctx, fpcr_controlled, [&] { emit(Qresult, Qa, Qb); });
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitThreeOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
EmitThreeOp(code, ctx, inst, [&](auto& Qresult, auto& Qa, auto& Qb) {
if constexpr (size == 16) {
@@ -108,7 +108,7 @@ static void EmitThreeOpArranged(oaknut::CodeGenerator& code, EmitContext& ctx, I
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitFMA(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qresult = ctx.reg_alloc.ReadWriteQ(args[0], inst);
@@ -131,7 +131,7 @@ static void EmitFMA(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* ins
});
}
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void EmitFromFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qto = ctx.reg_alloc.WriteQ(inst);
@@ -153,12 +153,12 @@ static void EmitFromFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Ins
});
}
-template<size_t fsize, bool is_signed>
+template<std::size_t fsize, bool is_signed>
void EmitToFixed(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qto = ctx.reg_alloc.WriteQ(inst);
auto Qfrom = ctx.reg_alloc.ReadQ(args[0]);
- const size_t fbits = args[1].GetImmediateU8();
+ const std::size_t fbits = args[1].GetImmediateU8();
const auto rounding_mode = static_cast<FP::RoundingMode>(args[2].GetImmediateU8());
const bool fpcr_controlled = inst->GetArg(3).GetU1();
RegAlloc::Realize(Qto, Qfrom);
@@ -272,7 +272,7 @@ static void EmitTwoOpFallbackWithoutRegAlloc(oaknut::CodeGenerator& code, EmitCo
ABI_PopRegisters(code, ABI_CALLER_SAVE & ~(1ull << Qresult.index()), stack_size);
}
-template<size_t fpcr_controlled_arg_index = 1, typename Lambda>
+template<std::size_t fpcr_controlled_arg_index = 1, typename Lambda>
static void EmitTwoOpFallback(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst, Lambda lambda) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qarg1 = ctx.reg_alloc.ReadQ(args[0]);
@@ -562,7 +562,7 @@ void EmitIR<IR::Opcode::FPVectorRecipStepFused64>(oaknut::CodeGenerator& code, E
/// TODO: we have space for a 5th parameter? :)
template<typename FPT, FP::RoundingMode rounding_mode, bool exact>
static void EmitIRVectorRoundInt16Thunk(VectorArray<FPT>& output, const VectorArray<FPT>& input, FP::FPCR fpcr, FP::FPSR& fpsr) {
- for (size_t i = 0; i < output.size(); ++i)
+ for (std::size_t i = 0; i < output.size(); ++i)
output[i] = FPT(FP::FPRoundInt<FPT>(input[i], fpcr, rounding_mode, exact, fpsr));
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_saturation.cpp b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_saturation.cpp
index d63c1d92d0..6137885fe2 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_saturation.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_vector_saturation.cpp
@@ -23,7 +23,7 @@ namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-template<size_t size, typename EmitFn>
+template<std::size_t size, typename EmitFn>
static void Emit(oaknut::CodeGenerator&, EmitContext& ctx, IR::Inst* inst, EmitFn emit) {
auto args = ctx.reg_alloc.GetArgumentInfo(inst);
auto Qresult = ctx.reg_alloc.WriteQ(inst);
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/exclusive_monitor.cpp b/src/dynarmic/src/dynarmic/backend/arm64/exclusive_monitor.cpp
index b47167bf6f..d9bc9b2395 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/exclusive_monitor.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/exclusive_monitor.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.
@@ -10,7 +10,7 @@
#include <algorithm>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
namespace Dynarmic {
@@ -29,7 +29,7 @@ void ExclusiveMonitor::Unlock() {
lock.Unlock();
}
-bool ExclusiveMonitor::CheckAndClear(size_t processor_id, VAddr address) {
+bool ExclusiveMonitor::CheckAndClear(std::size_t processor_id, VAddr address) {
const VAddr masked_address = address & RESERVATION_GRANULE_MASK;
Lock();
@@ -52,7 +52,7 @@ void ExclusiveMonitor::Clear() {
Unlock();
}
-void ExclusiveMonitor::ClearProcessor(size_t processor_id) {
+void ExclusiveMonitor::ClearProcessor(std::size_t processor_id) {
Lock();
exclusive_addresses[processor_id] = INVALID_EXCLUSIVE_ADDRESS;
Unlock();
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/fastmem.h b/src/dynarmic/src/dynarmic/backend/arm64/fastmem.h
index 8e40e81569..2eae740f20 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/fastmem.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/fastmem.h
@@ -13,7 +13,7 @@
#include <ankerl/unordered_dense.h>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/exception_handler.h"
#include "dynarmic/ir/location_descriptor.h"
@@ -21,7 +21,7 @@ namespace Dynarmic::Backend::Arm64 {
using DoNotFastmemMarker = std::tuple<IR::LocationDescriptor, unsigned>;
-constexpr size_t xmrx(size_t x) noexcept {
+constexpr std::size_t xmrx(std::size_t x) noexcept {
x ^= x >> 32;
x *= 0xff51afd7ed558ccd;
x ^= mcl::bit::rotate_right(x, 47) ^ mcl::bit::rotate_right(x, 23);
@@ -29,7 +29,7 @@ constexpr size_t xmrx(size_t x) noexcept {
}
struct DoNotFastmemMarkerHash {
- [[nodiscard]] size_t operator()(const DoNotFastmemMarker& value) const noexcept {
+ [[nodiscard]] std::size_t operator()(const DoNotFastmemMarker& value) const noexcept {
return xmrx(std::get<0>(value).Value() ^ u64(std::get<1>(value)));
}
};
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.cpp b/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.cpp
index 1c61474555..41fcb9138e 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.cpp
@@ -1,3 +1,6 @@
+// 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
@@ -13,7 +16,7 @@ namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-FpsrManager::FpsrManager(oaknut::CodeGenerator& code, size_t state_fpsr_offset)
+FpsrManager::FpsrManager(oaknut::CodeGenerator& code, std::size_t state_fpsr_offset)
: code{code}, state_fpsr_offset{state_fpsr_offset} {}
void FpsrManager::Spill() {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h b/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h
index 3bc5683153..c0aca09bab 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.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 "dynarmic/common/common_types.h"
+#include <cstddef>
namespace oaknut {
struct CodeGenerator;
@@ -19,7 +19,7 @@ namespace Dynarmic::Backend::Arm64 {
class FpsrManager {
public:
- explicit FpsrManager(oaknut::CodeGenerator& code, size_t state_fpsr_offset);
+ explicit FpsrManager(oaknut::CodeGenerator& code, std::size_t state_fpsr_offset);
void Spill();
void Load();
@@ -29,7 +29,7 @@ public:
private:
oaknut::CodeGenerator& code;
- size_t state_fpsr_offset;
+ std::size_t state_fpsr_offset;
bool fpsr_loaded = false;
};
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.cpp b/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.cpp
index a92648cd44..b7ab55139b 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.cpp
@@ -12,10 +12,10 @@
#include <array>
#include <iterator>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include <bit>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/arm64/abi.h"
#include "dynarmic/backend/arm64/emit_context.h"
@@ -27,8 +27,8 @@ namespace Dynarmic::Backend::Arm64 {
using namespace oaknut::util;
-constexpr size_t spill_offset = offsetof(StackLayout, spill);
-constexpr size_t spill_slot_size = sizeof(decltype(StackLayout::spill)::value_type);
+constexpr std::size_t spill_offset = offsetof(StackLayout, spill);
+constexpr std::size_t spill_slot_size = sizeof(decltype(StackLayout::spill)::value_type);
static bool IsValuelessType(IR::Type type) {
switch (type) {
@@ -131,7 +131,7 @@ void HostLocInfo::UpdateUses() {
RegAlloc::ArgumentInfo RegAlloc::GetArgumentInfo(IR::Inst* inst) {
ArgumentInfo ret = {Argument{}, Argument{}, Argument{}, Argument{}};
- for (size_t i = 0; i < inst->NumArgs(); i++) {
+ for (std::size_t i = 0; i < inst->NumArgs(); i++) {
const IR::Value arg = inst->GetArg(i);
ret[i].value = arg;
if (!arg.IsImmediate() && !IsValuelessType(arg.GetType())) {
@@ -245,7 +245,7 @@ void RegAlloc::AssertNoMoreUses() const {
void RegAlloc::EmitVerboseDebuggingOutput() {
code.MOV(X19, std::bit_cast<u64>(&PrintVerboseDebuggingOutputLine)); // Non-volatile register
- const auto do_location = [&](HostLocInfo& info, HostLocType type, size_t index) {
+ const auto do_location = [&](HostLocInfo& info, HostLocType type, std::size_t index) {
using namespace oaknut::util;
for (const IR::Inst* value : info.values) {
code.MOV(X0, SP);
@@ -257,14 +257,14 @@ void RegAlloc::EmitVerboseDebuggingOutput() {
}
};
- for (size_t i = 0; i < gprs.size(); i++) {
+ for (std::size_t i = 0; i < gprs.size(); i++) {
do_location(gprs[i], HostLocType::X, i);
}
- for (size_t i = 0; i < fprs.size(); i++) {
+ for (std::size_t i = 0; i < fprs.size(); i++) {
do_location(fprs[i], HostLocType::Q, i);
}
do_location(flags, HostLocType::Nzcv, 0);
- for (size_t i = 0; i < spills.size(); i++) {
+ for (std::size_t i = 0; i < spills.size(); i++) {
do_location(spills[i], HostLocType::Spill, i);
}
}
@@ -576,13 +576,13 @@ std::optional<HostLoc> RegAlloc::ValueLocation(const IR::Inst* value) const {
HostLocInfo& RegAlloc::ValueInfo(HostLoc host_loc) {
switch (host_loc.kind) {
case HostLoc::Kind::Gpr:
- return gprs[static_cast<size_t>(host_loc.index)];
+ return gprs[static_cast<std::size_t>(host_loc.index)];
case HostLoc::Kind::Fpr:
- return fprs[static_cast<size_t>(host_loc.index)];
+ return fprs[static_cast<std::size_t>(host_loc.index)];
case HostLoc::Kind::Flags:
return flags;
case HostLoc::Kind::Spill:
- return spills[static_cast<size_t>(host_loc.index)];
+ return spills[static_cast<std::size_t>(host_loc.index)];
}
UNREACHABLE();
}
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.h b/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.h
index 22ab5af662..af21cfbc25 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/reg_alloc.h
@@ -14,8 +14,8 @@
#include <utility>
#include <vector>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/is_instance_of_template.hpp"
#include <oaknut/oaknut.hpp>
#include <ankerl/unordered_dense.h>
@@ -141,11 +141,11 @@ private:
struct HostLocInfo final {
std::vector<const IR::Inst*> values;
- size_t locked = 0;
+ std::size_t locked = 0;
bool realized = false;
- size_t uses_this_inst = 0;
- size_t accumulated_uses = 0;
- size_t expected_uses = 0;
+ std::size_t uses_this_inst = 0;
+ std::size_t accumulated_uses = 0;
+ std::size_t expected_uses = 0;
bool Contains(const IR::Inst*) const;
void SetupScratchLocation();
@@ -179,7 +179,7 @@ public:
auto ReadH(Argument& arg) { return RAReg<oaknut::HReg>{*this, RWType::Read, arg.value, nullptr}; }
auto ReadB(Argument& arg) { return RAReg<oaknut::BReg>{*this, RWType::Read, arg.value, nullptr}; }
- template<size_t size>
+ template<std::size_t size>
auto ReadReg(Argument& arg) {
if constexpr (size == 64) {
return ReadX(arg);
@@ -190,7 +190,7 @@ public:
}
}
- template<size_t size>
+ template<std::size_t size>
auto ReadVec(Argument& arg) {
if constexpr (size == 128) {
return ReadQ(arg);
@@ -218,7 +218,7 @@ public:
auto WriteFlags(IR::Inst* inst) { return RAReg<FlagsTag>{*this, RWType::Write, {}, inst}; }
- template<size_t size>
+ template<std::size_t size>
auto WriteReg(IR::Inst* inst) {
if constexpr (size == 64) {
return WriteX(inst);
@@ -229,7 +229,7 @@ public:
}
}
- template<size_t size>
+ template<std::size_t size>
auto WriteVec(IR::Inst* inst) {
if constexpr (size == 128) {
return WriteQ(inst);
@@ -255,7 +255,7 @@ public:
auto ReadWriteH(Argument& arg, const IR::Inst* inst) { return RAReg<oaknut::HReg>{*this, RWType::ReadWrite, arg.value, inst}; }
auto ReadWriteB(Argument& arg, const IR::Inst* inst) { return RAReg<oaknut::BReg>{*this, RWType::ReadWrite, arg.value, inst}; }
- template<size_t size>
+ template<std::size_t size>
auto ReadWriteReg(Argument& arg, const IR::Inst* inst) {
if constexpr (size == 64) {
return ReadWriteX(arg, inst);
@@ -266,7 +266,7 @@ public:
}
}
- template<size_t size>
+ template<std::size_t size>
auto ReadWriteVec(Argument& arg, const IR::Inst* inst) {
if constexpr (size == 128) {
return ReadWriteQ(arg, inst);
@@ -335,7 +335,7 @@ private:
HostLocInfo flags;
std::array<HostLocInfo, SpillCount> spills;
- mutable size_t alloc_candidate_index = 0;
+ mutable std::size_t alloc_candidate_index = 0;
ankerl::unordered_dense::set<const IR::Inst*> defined_insts;
};
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/stack_layout.h b/src/dynarmic/src/dynarmic/backend/arm64/stack_layout.h
index 801b07c008..173872069e 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/stack_layout.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::Arm64 {
@@ -19,14 +19,14 @@ namespace Dynarmic::Backend::Arm64 {
# pragma warning(disable : 4324) // Structure was padded due to alignment specifier
#endif
-constexpr size_t SpillCount = 64;
+constexpr std::size_t SpillCount = 64;
struct alignas(16) RSBEntry {
u64 target;
u64 code_ptr;
};
-constexpr size_t RSBCount = 8;
+constexpr std::size_t RSBCount = 8;
constexpr u64 RSBIndexMask = (RSBCount - 1) * sizeof(RSBEntry);
struct alignas(16) StackLayout {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.cpp b/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.cpp
index aec0472f68..a024a212f7 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.cpp
+++ b/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.cpp
@@ -1,3 +1,6 @@
+// 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) 2023 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -51,7 +54,7 @@ void EmitVerboseDebuggingOutput(oaknut::CodeGenerator& code, EmitContext& ctx) {
code.ADD(SP, SP, sizeof(RegisterData));
}
-void PrintVerboseDebuggingOutputLine(RegisterData& reg_data, HostLocType reg_type, size_t reg_index, size_t inst_index, IR::Type inst_type) {
+void PrintVerboseDebuggingOutputLine(RegisterData& reg_data, HostLocType reg_type, std::size_t reg_index, std::size_t inst_index, IR::Type inst_type) {
fmt::print("dynarmic debug: %{:05} = ", inst_index);
Vector value = [&]() -> Vector {
diff --git a/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.h b/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.h
index b5187f6375..3f78c27745 100644
--- a/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.h
+++ b/src/dynarmic/src/dynarmic/backend/arm64/verbose_debugging_output.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/arm64/stack_layout.h"
@@ -54,6 +54,6 @@ struct alignas(16) RegisterData {
#endif
void EmitVerboseDebuggingOutput(oaknut::CodeGenerator& code, EmitContext& ctx);
-void PrintVerboseDebuggingOutputLine(RegisterData& reg_data, HostLocType reg_type, size_t reg_index, size_t inst_index, IR::Type inst_type);
+void PrintVerboseDebuggingOutputLine(RegisterData& reg_data, HostLocType reg_type, std::size_t reg_index, std::size_t inst_index, IR::Type inst_type);
} // namespace Dynarmic::Backend::Arm64
diff --git a/src/dynarmic/src/dynarmic/backend/block_range_information.cpp b/src/dynarmic/src/dynarmic/backend/block_range_information.cpp
index aa951d7708..bd7310194f 100644
--- a/src/dynarmic/src/dynarmic/backend/block_range_information.cpp
+++ b/src/dynarmic/src/dynarmic/backend/block_range_information.cpp
@@ -10,7 +10,7 @@
#include <boost/icl/interval_map.hpp>
#include <boost/icl/interval_set.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <ankerl/unordered_dense.h>
namespace Dynarmic::Backend {
diff --git a/src/dynarmic/src/dynarmic/backend/exception_handler.h b/src/dynarmic/src/dynarmic/backend/exception_handler.h
index ff116c5775..b62bd7ab71 100644
--- a/src/dynarmic/src/dynarmic/backend/exception_handler.h
+++ b/src/dynarmic/src/dynarmic/backend/exception_handler.h
@@ -12,7 +12,7 @@
#include <memory>
#include <optional>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#if defined(ARCHITECTURE_x86_64)
namespace Dynarmic::Backend::X64 {
@@ -43,6 +43,7 @@ struct FakeCall {
};
#elif defined(ARCHITECTURE_riscv64)
struct FakeCall {
+ u64 call_sepc;
};
#else
# error "Invalid architecture"
diff --git a/src/dynarmic/src/dynarmic/backend/exception_handler_macos.cpp b/src/dynarmic/src/dynarmic/backend/exception_handler_macos.cpp
index be44207f0a..fc627f60b2 100644
--- a/src/dynarmic/src/dynarmic/backend/exception_handler_macos.cpp
+++ b/src/dynarmic/src/dynarmic/backend/exception_handler_macos.cpp
@@ -19,8 +19,8 @@
#include <bit>
#include <fmt/format.h>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/backend/exception_handler.h"
diff --git a/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp b/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp
index 9f508f72e5..50d552aa0e 100644
--- a/src/dynarmic/src/dynarmic/backend/exception_handler_posix.cpp
+++ b/src/dynarmic/src/dynarmic/backend/exception_handler_posix.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,6 +8,7 @@
#include <cstring>
#include <functional>
+#include <algorithm>
#include <memory>
#include <mutex>
#include <shared_mutex>
@@ -16,9 +17,9 @@
#include <fmt/format.h>
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/exception_handler.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/common/context.h"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#if defined(ARCHITECTURE_x86_64)
# include "dynarmic/backend/x64/block_of_code.h"
#elif defined(ARCHITECTURE_arm64)
@@ -140,7 +141,15 @@ void SigHandler::SigAction(int sig, siginfo_t* info, void* raw_context) {
}
fmt::print(stderr, "Unhandled {} at pc {:#018x}\n", sig == SIGSEGV ? "SIGSEGV" : "SIGBUS", CTX_PC);
#elif defined(ARCHITECTURE_riscv64)
- UNREACHABLE();
+ {
+ std::shared_lock guard(sig_handler->code_block_infos_mutex);
+ if (const auto iter = sig_handler->FindCodeBlockInfo(CTX_SEPC); iter != sig_handler->code_block_infos.end()) {
+ FakeCall fc = iter->second.cb(CTX_SEPC);
+ CTX_SEPC = fc.call_sepc;
+ return;
+ }
+ }
+ fmt::print(stderr, "Unhandled {} at pc {:#018x}\n", sig == SIGSEGV ? "SIGSEGV" : "SIGBUS", CTX_SEPC);
#else
# error "Invalid architecture"
#endif
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/a32_address_space.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/a32_address_space.cpp
index edb24761f6..490398931c 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/a32_address_space.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/a32_address_space.cpp
@@ -8,7 +8,7 @@
#include "dynarmic/backend/riscv64/a32_address_space.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/backend/riscv64/abi.h"
#include "dynarmic/backend/riscv64/emit_riscv64.h"
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/a32_interface.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/a32_interface.cpp
index 3f395bfafb..ab3ee13f6b 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/a32_interface.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/a32_interface.cpp
@@ -10,8 +10,8 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/backend/riscv64/a32_address_space.h"
#include "dynarmic/backend/riscv64/a32_core.h"
@@ -42,7 +42,7 @@ struct Jit::Impl final {
HaltReason Step() {
ASSERT(!jit_interface->is_executing);
jit_interface->is_executing = true;
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
RequestCacheInvalidation();
jit_interface->is_executing = false;
return HaltReason{};
@@ -108,6 +108,10 @@ struct Jit::Impl final {
current_state.exclusive_state = false;
}
+ std::string Disassemble() const {
+ return {};
+ }
+
private:
void RequestCacheInvalidation() {
// UNREACHABLE();
@@ -198,4 +202,8 @@ void Jit::ClearExclusiveState() {
impl->ClearExclusiveState();
}
+std::string Jit::Disassemble() const {
+ return impl->Disassemble();
+}
+
} // namespace Dynarmic::A32
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.cpp
index 70cd6bf0f1..3e9c8ecca1 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.cpp
@@ -9,7 +9,7 @@
#include "dynarmic/backend/riscv64/a32_jitstate.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::RV64 {
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.h b/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.h
index 2fbb5819d9..ea0bce5fe3 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.h
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/a32_jitstate.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
#include "dynarmic/ir/location_descriptor.h"
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/a64_interface.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/a64_interface.cpp
new file mode 100644
index 0000000000..67c4986109
--- /dev/null
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/a64_interface.cpp
@@ -0,0 +1,295 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include <memory>
+#include <mutex>
+
+#include <boost/icl/interval_set.hpp>
+#include "common/assert.h"
+#include "common/common_types.h"
+
+#include "dynarmic/frontend/A64/a64_location_descriptor.h"
+#include "dynarmic/frontend/A64/translate/a64_translate.h"
+#include "dynarmic/interface/A64/config.h"
+#include "dynarmic/backend/riscv64/a32_core.h"
+#include "dynarmic/common/atomic.h"
+#include "dynarmic/ir/opt_passes.h"
+#include "dynarmic/interface/A64/a64.h"
+
+namespace Dynarmic::A64 {
+
+using namespace Dynarmic::Backend::RV64;
+using CodePtr = std::uint32_t*;
+
+struct Jit::Impl final {
+ Impl(Jit* jit_interface, A64::UserConfig conf)
+ : conf(conf)
+ //, current_address_space(conf)
+ , jit_interface(jit_interface) {}
+
+ HaltReason Run() {
+ ASSERT(false);
+ return HaltReason{};
+ }
+
+ HaltReason Step() {
+ ASSERT(false);
+ return HaltReason{};
+ }
+
+ void ClearCache() {
+ std::unique_lock lock{invalidation_mutex};
+ invalidate_entire_cache = true;
+ HaltExecution(HaltReason::CacheInvalidation);
+ }
+
+ void InvalidateCacheRange(u64 start_address, size_t length) {
+ std::unique_lock lock{invalidation_mutex};
+ const auto end_address = u64(start_address + length - 1);
+ invalid_cache_ranges.add(boost::icl::discrete_interval<u64>::closed(start_address, end_address));
+ HaltExecution(HaltReason::CacheInvalidation);
+ }
+
+ void Reset() {
+ ASSERT(!is_executing);
+ //jit_state = {};
+ }
+
+ void HaltExecution(HaltReason hr) {
+ //Atomic::Or(&jit_state.halt_reason, u32(hr));
+ }
+
+ void ClearHalt(HaltReason hr) {
+ //Atomic::And(&jit_state.halt_reason, ~u32(hr));
+ }
+
+ u64 GetSP() const {
+ return 0;//jit_state.sp;
+ }
+
+ void SetSP(u64 value) {
+ //jit_state.sp = value;
+ }
+
+ u64 GetPC() const {
+ return 0;//jit_state.pc;
+ }
+
+ void SetPC(u64 value) {
+ //jit_state.pc = value;
+ }
+
+ u64 GetRegister(size_t index) const {
+ return 0;//index == 31 ? GetSP() : jit_state.regs.at(index);
+ }
+
+ void SetRegister(size_t index, u64 value) {
+ if (index == 31)
+ return SetSP(value);
+ //jit_state.regs.at(index) = value;
+ }
+
+ std::array<u64, 31> GetRegisters() const {
+ return {};//jit_state.regs;
+ }
+
+ void SetRegisters(const std::array<u64, 31>& value) {
+ //jit_state.regs = value;
+ }
+
+ Vector GetVector(size_t index) const {
+ //return {jit_state.vec.at(index * 2), jit_state.vec.at(index * 2 + 1)};
+ return Vector{};
+ }
+
+ void SetVector(size_t index, Vector value) {
+ //jit_state.vec.at(index * 2) = value[0];
+ //jit_state.vec.at(index * 2 + 1) = value[1];
+ }
+
+ std::array<Vector, 32> GetVectors() const {
+ std::array<Vector, 32> ret;
+ //static_assert(sizeof(ret) == sizeof(jit_state.vec));
+ //std::memcpy(ret.data(), jit_state.vec.data(), sizeof(jit_state.vec));
+ return ret;
+ }
+
+ void SetVectors(const std::array<Vector, 32>& value) {
+ //static_assert(sizeof(value) == sizeof(jit_state.vec));
+ //std::memcpy(jit_state.vec.data(), value.data(), sizeof(jit_state.vec));
+ }
+
+ u32 GetFpcr() const {
+ return 0;//jit_state.fpcr;
+ }
+
+ void SetFpcr(u32 value) {
+ //jit_state.fpcr = value;
+ }
+
+ u32 GetFpsr() const {
+ return 0;//jit_state.fpsr;
+ }
+
+ void SetFpsr(u32 value) {
+ //jit_state.fpsr = value;
+ }
+
+ u32 GetPstate() const {
+ return 0;//jit_state.pstate;
+ }
+
+ void SetPstate(u32 value) {
+ //jit_state.pstate = value;
+ }
+
+ void ClearExclusiveState() {
+ //jit_state.exclusive_state = 0;
+ }
+
+ bool IsExecuting() const {
+ return is_executing;
+ }
+
+ std::string Disassemble() const {
+ // const size_t size = reinterpret_cast<const char*>(block_of_code.getCurr()) - reinterpret_cast<const char*>(block_of_code.GetCodeBegin());
+ // auto const* p = reinterpret_cast<const char*>(block_of_code.GetCodeBegin());
+ // return Common::DisassemblePPC64(p, p + size);
+ return {};
+ }
+
+private:
+ void RequestCacheInvalidation() {
+ // UNREACHABLE();
+ invalidate_entire_cache = false;
+ invalid_cache_ranges.clear();
+ }
+
+ A64::UserConfig conf;
+ //A64JitState jit_state{};
+ //A64AddressSpace current_address_space;
+ Jit* jit_interface;
+ volatile u32 halt_reason = 0;
+ bool is_executing = false;
+
+ boost::icl::interval_set<u64> invalid_cache_ranges;
+ bool invalidate_entire_cache = false;
+ std::mutex invalidation_mutex;
+};
+
+Jit::Jit(UserConfig conf) : impl(std::make_unique<Jit::Impl>(this, conf)) {}
+Jit::~Jit() = default;
+
+HaltReason Jit::Run() {
+ return impl->Run();
+}
+
+HaltReason Jit::Step() {
+ return impl->Step();
+}
+
+void Jit::ClearCache() {
+ impl->ClearCache();
+}
+
+void Jit::InvalidateCacheRange(u64 start_address, size_t length) {
+ impl->InvalidateCacheRange(start_address, length);
+}
+
+void Jit::Reset() {
+ impl->Reset();
+}
+
+void Jit::HaltExecution(HaltReason hr) {
+ impl->HaltExecution(hr);
+}
+
+void Jit::ClearHalt(HaltReason hr) {
+ impl->ClearHalt(hr);
+}
+
+u64 Jit::GetSP() const {
+ return impl->GetSP();
+}
+
+void Jit::SetSP(u64 value) {
+ impl->SetSP(value);
+}
+
+u64 Jit::GetPC() const {
+ return impl->GetPC();
+}
+
+void Jit::SetPC(u64 value) {
+ impl->SetPC(value);
+}
+
+u64 Jit::GetRegister(size_t index) const {
+ return impl->GetRegister(index);
+}
+
+void Jit::SetRegister(size_t index, u64 value) {
+ impl->SetRegister(index, value);
+}
+
+std::array<u64, 31> Jit::GetRegisters() const {
+ return impl->GetRegisters();
+}
+
+void Jit::SetRegisters(const std::array<u64, 31>& value) {
+ impl->SetRegisters(value);
+}
+
+Vector Jit::GetVector(size_t index) const {
+ return impl->GetVector(index);
+}
+
+void Jit::SetVector(size_t index, Vector value) {
+ impl->SetVector(index, value);
+}
+
+std::array<Vector, 32> Jit::GetVectors() const {
+ return impl->GetVectors();
+}
+
+void Jit::SetVectors(const std::array<Vector, 32>& value) {
+ impl->SetVectors(value);
+}
+
+u32 Jit::GetFpcr() const {
+ return impl->GetFpcr();
+}
+
+void Jit::SetFpcr(u32 value) {
+ impl->SetFpcr(value);
+}
+
+u32 Jit::GetFpsr() const {
+ return impl->GetFpsr();
+}
+
+void Jit::SetFpsr(u32 value) {
+ impl->SetFpsr(value);
+}
+
+u32 Jit::GetPstate() const {
+ return impl->GetPstate();
+}
+
+void Jit::SetPstate(u32 value) {
+ impl->SetPstate(value);
+}
+
+void Jit::ClearExclusiveState() {
+ impl->ClearExclusiveState();
+}
+
+bool Jit::IsExecuting() const {
+ return impl->IsExecuting();
+}
+
+std::string Jit::Disassemble() const {
+ return impl->Disassemble();
+}
+
+} // namespace Dynarmic::A64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/code_block.h b/src/dynarmic/src/dynarmic/backend/riscv64/code_block.h
index 02bfa44eec..4917399f10 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/code_block.h
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/code_block.h
@@ -13,6 +13,9 @@
#include <sys/mman.h>
+#include "common/assert.h"
+#include "common/common_types.h"
+
namespace Dynarmic::Backend::RV64 {
class CodeBlock {
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
index 5ce7dee1e1..795ec4ca21 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.cpp
@@ -35,17 +35,17 @@ void EmitIR<IR::Opcode::Identity>(biscuit::Assembler&, EmitContext& ctx, IR::Ins
template<>
void EmitIR<IR::Opcode::Breakpoint>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CallHostFunction>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PushRSB>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -56,12 +56,12 @@ void EmitIR<IR::Opcode::GetCarryFromOp>(biscuit::Assembler&, EmitContext& ctx, I
template<>
void EmitIR<IR::Opcode::GetOverflowFromOp>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::GetGEFromOp>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -87,12 +87,12 @@ void EmitIR<IR::Opcode::GetNZFromOp>(biscuit::Assembler& as, EmitContext& ctx, I
template<>
void EmitIR<IR::Opcode::GetUpperFromOp>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::GetLowerFromOp>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -109,7 +109,7 @@ void EmitIR<IR::Opcode::GetCFlagFromNZCV>(biscuit::Assembler& as, EmitContext& c
template<>
void EmitIR<IR::Opcode::NZCVFromPackedFlags>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
EmittedBlockInfo EmitRV64(biscuit::Assembler& as, IR::Block block, const EmitConfig& emit_conf) {
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.h b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.h
index 68d30d5e15..7c49ce2afa 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.h
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64.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 <vector>
#include <biscuit/label.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace biscuit {
class Assembler;
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32.cpp
index 572f197955..8218ca3489 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32.cpp
@@ -205,7 +205,7 @@ void EmitA32Terminal(biscuit::Assembler& as, EmitContext& ctx) {
template<>
void EmitIR<IR::Opcode::A32SetCheckBit>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -220,17 +220,17 @@ void EmitIR<IR::Opcode::A32GetRegister>(biscuit::Assembler& as, EmitContext& ctx
template<>
void EmitIR<IR::Opcode::A32GetExtendedRegister32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32GetExtendedRegister64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32GetVector>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -249,27 +249,27 @@ void EmitIR<IR::Opcode::A32SetRegister>(biscuit::Assembler& as, EmitContext& ctx
template<>
void EmitIR<IR::Opcode::A32SetExtendedRegister32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetExtendedRegister64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetVector>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32GetCpsr>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetCpsr>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -284,17 +284,17 @@ void EmitIR<IR::Opcode::A32SetCpsrNZCV>(biscuit::Assembler& as, EmitContext& ctx
template<>
void EmitIR<IR::Opcode::A32SetCpsrNZCVRaw>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetCpsrNZCVQ>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetCpsrNZ>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -318,82 +318,82 @@ void EmitIR<IR::Opcode::A32SetCpsrNZC>(biscuit::Assembler& as, EmitContext& ctx,
template<>
void EmitIR<IR::Opcode::A32GetCFlag>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32OrQFlag>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32GetGEFlags>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetGEFlags>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetGEFlagsCompressed>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32BXWritePC>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32UpdateUpperLocationDescriptor>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CallSupervisor>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExceptionRaised>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32DataSynchronizationBarrier>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32DataMemoryBarrier>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32InstructionSynchronizationBarrier>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32GetFpscr>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetFpscr>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32GetFpscrNZCV>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32SetFpscrNZCV>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_coprocessor.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_coprocessor.cpp
index a014d57fc3..b6a41f71b2 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_coprocessor.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_coprocessor.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,37 +22,37 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::A32CoprocInternalOperation>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CoprocSendOneWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CoprocSendTwoWords>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CoprocGetOneWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CoprocGetTwoWords>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CoprocLoadWords>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32CoprocStoreWords>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_memory.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_memory.cpp
index f9a3aabf6b..fa96d52e6e 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_memory.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a32_memory.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,87 +22,87 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::A32ClearExclusive>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ReadMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ReadMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ReadMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ReadMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveReadMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveReadMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveReadMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveReadMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32WriteMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32WriteMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32WriteMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32WriteMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveWriteMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveWriteMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveWriteMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A32ExclusiveWriteMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64.cpp
index 38ea167ff7..eed51547c6 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,182 +22,182 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::A64SetCheckBit>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetCFlag>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetNZCVRaw>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetNZCVRaw>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetNZCV>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetW>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetX>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetS>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetD>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetQ>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetSP>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetFPCR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetFPSR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetW>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetX>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetS>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetD>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetQ>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetSP>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetFPCR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetFPSR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetPC>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64CallSupervisor>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExceptionRaised>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64DataCacheOperationRaised>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64InstructionCacheOperationRaised>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64DataSynchronizationBarrier>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64DataMemoryBarrier>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64InstructionSynchronizationBarrier>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetCNTFRQ>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetCNTPCT>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetCTR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetDCZID>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetTPIDR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64GetTPIDRRO>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64SetTPIDR>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64_memory.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64_memory.cpp
index a5c0c1b8d3..84802837c5 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64_memory.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_a64_memory.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,107 +22,107 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::A64ClearExclusive>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ReadMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ReadMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ReadMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ReadMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ReadMemory128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveReadMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveReadMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveReadMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveReadMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveReadMemory128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64WriteMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64WriteMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64WriteMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64WriteMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64WriteMemory128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveWriteMemory8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveWriteMemory16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveWriteMemory32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveWriteMemory64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::A64ExclusiveWriteMemory128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_cryptography.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_cryptography.cpp
index c1d3fa0e26..44ebc2e3fc 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_cryptography.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_cryptography.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,82 +22,82 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::CRC32Castagnoli8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32Castagnoli16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32Castagnoli32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32Castagnoli64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32ISO8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32ISO16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32ISO32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CRC32ISO64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::AESDecryptSingleRound>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::AESEncryptSingleRound>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::AESInverseMixColumns>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::AESMixColumns>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SM4AccessSubstitutionBox>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SHA256Hash>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SHA256MessageSchedule0>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SHA256MessageSchedule1>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_data_processing.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_data_processing.cpp
index 114147e018..d41433b12b 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_data_processing.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_data_processing.cpp
@@ -22,67 +22,67 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::Pack2x32To1x64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Pack2x64To1x128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LeastSignificantWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LeastSignificantHalf>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LeastSignificantByte>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MostSignificantWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MostSignificantBit>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::IsZero32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::IsZero64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::TestBit>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ConditionalSelect32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ConditionalSelect64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ConditionalSelectNZCV>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -124,7 +124,7 @@ void EmitIR<IR::Opcode::LogicalShiftLeft32>(biscuit::Assembler& as, EmitContext&
template<>
void EmitIR<IR::Opcode::LogicalShiftLeft64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -153,72 +153,72 @@ void EmitIR<IR::Opcode::LogicalShiftRight32>(biscuit::Assembler& as, EmitContext
template<>
void EmitIR<IR::Opcode::LogicalShiftRight64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ArithmeticShiftRight32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ArithmeticShiftRight64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::BitRotateRight32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::BitRotateRight64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::RotateRightExtended>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LogicalShiftLeftMasked32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LogicalShiftLeftMasked64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LogicalShiftRightMasked32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::LogicalShiftRightMasked64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ArithmeticShiftRightMasked32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ArithmeticShiftRightMasked64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::RotateRightMasked32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::RotateRightMasked64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<size_t bitsize>
@@ -264,7 +264,7 @@ static void AddImmWithFlags(biscuit::Assembler& as, biscuit::GPR rd, biscuit::GP
as.SLLI(Xscratch1, Xscratch1, 28);
as.OR(flags, flags, Xscratch1);
} else {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
}
@@ -279,7 +279,7 @@ static void EmitAddSub(biscuit::Assembler& as, EmitContext& ctx, IR::Inst* inst)
auto Xa = ctx.reg_alloc.ReadX(args[0]);
if (overflow_inst) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
} else if (nzcv_inst) {
if (args[1].IsImmediate()) {
const u64 imm = args[1].GetImmediateU64();
@@ -294,17 +294,17 @@ static void EmitAddSub(biscuit::Assembler& as, EmitContext& ctx, IR::Inst* inst)
AddImmWithFlags<bitsize>(as, *Xresult, *Xa, sub ? -imm : imm, *Xflags);
}
} else {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} else {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} else {
if (args[1].IsImmediate()) {
const u64 imm = args[1].GetImmediateU64();
if (args[2].IsImmediate()) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
} else {
auto Xnzcv = ctx.reg_alloc.ReadX(args[2]);
RegAlloc::Realize(Xresult, Xa, Xnzcv);
@@ -317,7 +317,7 @@ static void EmitAddSub(biscuit::Assembler& as, EmitContext& ctx, IR::Inst* inst)
as.ADDW(Xresult, Xa, Xscratch0);
}
} else {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
}
}
@@ -329,7 +329,7 @@ void EmitIR<IR::Opcode::Add32>(biscuit::Assembler& as, EmitContext& ctx, IR::Ins
template<>
void EmitIR<IR::Opcode::Add64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
@@ -339,237 +339,237 @@ void EmitIR<IR::Opcode::Sub32>(biscuit::Assembler& as, EmitContext& ctx, IR::Ins
template<>
void EmitIR<IR::Opcode::Sub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Mul32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Mul64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedMultiplyHigh64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedMultiplyHigh64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedDiv32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedDiv64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedDiv32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedDiv64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::And32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::And64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::AndNot32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::AndNot64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Eor32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Eor64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Or32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Or64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Not32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::Not64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignExtendByteToWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignExtendHalfToWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignExtendByteToLong>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignExtendHalfToLong>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignExtendWordToLong>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroExtendByteToWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroExtendHalfToWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroExtendByteToLong>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroExtendHalfToLong>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroExtendWordToLong>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroExtendLongToQuad>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ByteReverseWord>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ByteReverseHalf>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ByteReverseDual>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CountLeadingZeros32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::CountLeadingZeros64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ExtractRegister32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ExtractRegister64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ReplicateBit32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ReplicateBit64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MaxSigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MaxSigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MaxUnsigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MaxUnsigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MinSigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MinSigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MinUnsigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::MinUnsigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_floating_point.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_floating_point.cpp
index 94fa474e38..0c5d5984bc 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_floating_point.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_floating_point.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,442 +22,442 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::FPAbs16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPAbs32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPAbs64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPCompare32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPCompare64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDiv32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDiv64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMax32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMax64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMaxNumeric32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMaxNumeric64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMin32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMin64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMinNumeric32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMinNumeric64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMul32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMul64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulSub16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulX32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPMulX64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPNeg16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPNeg32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPNeg64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipEstimate16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipEstimate32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipEstimate64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipExponent16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipExponent32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipExponent64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipStepFused16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipStepFused32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRecipStepFused64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRoundInt16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRoundInt32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRoundInt64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRSqrtEstimate16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRSqrtEstimate32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRSqrtEstimate64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRSqrtStepFused16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRSqrtStepFused32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPRSqrtStepFused64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSqrt32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSqrt64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToHalf>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToHalf>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToFixedS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToFixedS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToFixedS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToFixedU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToFixedU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPDoubleToFixedU64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToFixedS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToFixedS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToFixedS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToFixedU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToFixedU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPHalfToFixedU64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToFixedS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToFixedS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToFixedS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToFixedU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToFixedU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPSingleToFixedU64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedU16ToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedS16ToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedU16ToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedS16ToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedU32ToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedS32ToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedU32ToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedS32ToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedU64ToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedU64ToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedS64ToDouble>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPFixedS64ToSingle>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_packed.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_packed.cpp
index 5272dbb114..acd73e86a3 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_packed.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_packed.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,172 +22,172 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::PackedAddU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedAddS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSubU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSubS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSubU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSubS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedAddSubU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedAddSubS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSubAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSubAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingAddU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingAddS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingSubU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingSubS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingSubU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingSubS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingAddSubU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingAddSubS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingSubAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedHalvingSubAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedAddU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedAddS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedSubU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedSubS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedSubU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSaturatedSubS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedAbsDiffSumU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::PackedSelect>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_saturation.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_saturation.cpp
index 3bceeb080d..9fae6cda77 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_saturation.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_saturation.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,112 +22,112 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::SignedSaturatedAddWithFlag32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedSubWithFlag32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturation>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturation>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedDoublingMultiplyReturnHigh16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedDoublingMultiplyReturnHigh32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedSub8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedSub16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::SignedSaturatedSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedSub8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedSub16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::UnsignedSaturatedSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector.cpp
index 31cfd65cdf..5e56a34f19 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,1377 +22,1377 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::VectorGetElement8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGetElement16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGetElement32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGetElement64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSetElement8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSetElement16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSetElement32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSetElement64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAbs8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAbs16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAbs32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAbs64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAnd>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorAndNot>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticShiftRight8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticShiftRight16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticShiftRight32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticShiftRight64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticVShift8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticVShift16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticVShift32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorArithmeticVShift64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastLower8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastLower16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcast8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcast16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcast32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcast64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElementLower8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElementLower16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElementLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElement8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElement16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElement32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorBroadcastElement64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorCountLeadingZeros8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorCountLeadingZeros16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorCountLeadingZeros32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEven8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEven16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEven32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEven64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEvenLower8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEvenLower16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveEvenLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOddLower8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOddLower16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorDeinterleaveOddLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorEor>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorEqual8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorEqual16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorEqual32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorEqual64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorEqual128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorExtract>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorExtractLower>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGreaterS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGreaterS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGreaterS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorGreaterS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingAddS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingAddS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingAddU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingAddU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingSubS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingSubS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingSubS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingSubU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingSubU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorHalvingSubU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveLower8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveLower16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveLower64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveUpper8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveUpper16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveUpper32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorInterleaveUpper64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftLeft8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftLeft16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftLeft32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftLeft64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftRight8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftRight16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftRight32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalShiftRight64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalVShift8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalVShift16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalVShift32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorLogicalVShift64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMaxU64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMinU64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiply8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiply16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiply32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiply64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiplySignedWiden8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiplySignedWiden16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiplySignedWiden32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiplyUnsignedWiden8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiplyUnsignedWiden16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorMultiplyUnsignedWiden32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorNarrow16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorNarrow32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorNarrow64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorNot>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorOr>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddLower8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddLower16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddSignedWiden8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddSignedWiden16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddSignedWiden32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddUnsignedWiden8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddUnsignedWiden16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAddUnsignedWiden32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxLowerS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxLowerS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxLowerS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxLowerU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxLowerU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMaxLowerU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinLowerS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinLowerS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinLowerS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinLowerU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinLowerU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPairedMinLowerU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPolynomialMultiply8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPolynomialMultiplyLong8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPolynomialMultiplyLong64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorPopulationCount>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseBits>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseElementsInHalfGroups8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseElementsInWordGroups8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseElementsInWordGroups16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseElementsInLongGroups8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseElementsInLongGroups16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReverseElementsInLongGroups32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReduceAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReduceAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReduceAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorReduceAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRotateWholeVectorRight>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingHalvingAddS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingHalvingAddS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingHalvingAddS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingHalvingAddU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingHalvingAddU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingHalvingAddU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftS8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftS16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftS32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftS64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftU8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftU16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftU32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorRoundingShiftLeftU64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignExtend8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignExtend16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignExtend32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignExtend64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedAbsoluteDifference8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedAbsoluteDifference16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedAbsoluteDifference32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedMultiply16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedMultiply32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAbs8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAbs16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAbs32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAbs64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAccumulateUnsigned8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAccumulateUnsigned16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAccumulateUnsigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAccumulateUnsigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedDoublingMultiplyHigh16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedDoublingMultiplyHigh32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedDoublingMultiplyHighRounding16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedDoublingMultiplyHighRounding32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedDoublingMultiplyLong16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedDoublingMultiplyLong32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNarrowToSigned16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNarrowToSigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNarrowToSigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNarrowToUnsigned16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNarrowToUnsigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNarrowToUnsigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNeg8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNeg16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNeg32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedNeg64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeft8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeft16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeft32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeft64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeftUnsigned8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeftUnsigned16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeftUnsigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedShiftLeftUnsigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSub8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSub16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTable>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTableLookup64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTableLookup128>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTranspose8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTranspose16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTranspose32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorTranspose64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedAbsoluteDifference8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedAbsoluteDifference16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedAbsoluteDifference32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedMultiply16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedMultiply32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedRecipEstimate>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedRecipSqrtEstimate>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAccumulateSigned8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAccumulateSigned16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAccumulateSigned32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAccumulateSigned64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedNarrow16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedNarrow32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedNarrow64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedShiftLeft8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedShiftLeft16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedShiftLeft32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedShiftLeft64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorZeroExtend8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorZeroExtend16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorZeroExtend32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorZeroExtend64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorZeroUpper>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::ZeroVector>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_floating_point.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_floating_point.cpp
index c3bf9708d3..661cfc5403 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_floating_point.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_floating_point.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,337 +22,337 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::FPVectorAbs16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorAbs32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorAbs64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorDiv32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorDiv64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorEqual16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorEqual32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorEqual64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorFromHalf32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorFromSignedFixed32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorFromSignedFixed64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorFromUnsignedFixed32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorFromUnsignedFixed64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorGreater32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorGreater64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorGreaterEqual32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorGreaterEqual64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMax32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMax64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMaxNumeric32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMaxNumeric64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMin32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMin64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMinNumeric32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMinNumeric64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMul32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMul64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMulAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMulAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMulAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMulX32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorMulX64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorNeg16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorNeg32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorNeg64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorPairedAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorPairedAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorPairedAddLower32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorPairedAddLower64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRecipEstimate16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRecipEstimate32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRecipEstimate64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRecipStepFused16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRecipStepFused32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRecipStepFused64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRoundInt16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRoundInt32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRoundInt64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRSqrtEstimate16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRSqrtEstimate32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRSqrtEstimate64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRSqrtStepFused16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRSqrtStepFused32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorRSqrtStepFused64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorSqrt32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorSqrt64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToHalf32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToSignedFixed16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToSignedFixed32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToSignedFixed64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToUnsignedFixed16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToUnsignedFixed32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::FPVectorToUnsignedFixed64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_saturation.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_saturation.cpp
index 0d3868ec83..6662afcd69 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_saturation.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/emit_riscv64_vector_saturation.cpp
@@ -1,3 +1,6 @@
+// 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) 2024 MerryMage
* SPDX-License-Identifier: 0BSD
@@ -19,82 +22,82 @@ namespace Dynarmic::Backend::RV64 {
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedSub8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedSub16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorSignedSaturatedSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAdd8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAdd16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAdd32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedAdd64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedSub8>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedSub16>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedSub32>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
template<>
void EmitIR<IR::Opcode::VectorUnsignedSaturatedSub64>(biscuit::Assembler&, EmitContext&, IR::Inst*) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
}
} // namespace Dynarmic::Backend::RV64
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/exclusive_monitor.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/exclusive_monitor.cpp
new file mode 100644
index 0000000000..b3585c64ea
--- /dev/null
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/exclusive_monitor.cpp
@@ -0,0 +1,54 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include "dynarmic/interface/exclusive_monitor.h"
+
+#include <algorithm>
+
+namespace Dynarmic {
+
+ExclusiveMonitor::ExclusiveMonitor(std::size_t processor_count)
+ : exclusive_addresses(processor_count, INVALID_EXCLUSIVE_ADDRESS), exclusive_values(processor_count) {}
+
+size_t ExclusiveMonitor::GetProcessorCount() const {
+ return exclusive_addresses.size();
+}
+
+void ExclusiveMonitor::Lock() {
+ lock.Lock();
+}
+
+void ExclusiveMonitor::Unlock() {
+ lock.Unlock();
+}
+
+bool ExclusiveMonitor::CheckAndClear(size_t processor_id, VAddr address) {
+ const VAddr masked_address = address & RESERVATION_GRANULE_MASK;
+
+ Lock();
+ if (exclusive_addresses[processor_id] != masked_address) {
+ Unlock();
+ return false;
+ }
+
+ for (VAddr& other_address : exclusive_addresses) {
+ if (other_address == masked_address) {
+ other_address = INVALID_EXCLUSIVE_ADDRESS;
+ }
+ }
+ return true;
+}
+
+void ExclusiveMonitor::Clear() {
+ Lock();
+ std::fill(exclusive_addresses.begin(), exclusive_addresses.end(), INVALID_EXCLUSIVE_ADDRESS);
+ Unlock();
+}
+
+void ExclusiveMonitor::ClearProcessor(size_t processor_id) {
+ Lock();
+ exclusive_addresses[processor_id] = INVALID_EXCLUSIVE_ADDRESS;
+ Unlock();
+}
+
+} // namespace Dynarmic
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.cpp b/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.cpp
index 4ab5d43db8..fdb8ff898f 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.cpp
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.cpp
@@ -11,8 +11,8 @@
#include <algorithm>
#include <array>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/common/always_false.h"
@@ -161,7 +161,7 @@ u32 RegAlloc::GenerateImmediate(const IR::Value& value) {
return new_location_index;
} else if constexpr (kind == HostLoc::Kind::Fpr) {
- UNIMPLEMENTED();
+ ASSERT(false && "Unimplemented instruction");
} else {
UNREACHABLE();
}
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.h b/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.h
index be826e63f6..5a0bd660de 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.h
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/reg_alloc.h
@@ -16,8 +16,8 @@
#include <biscuit/assembler.hpp>
#include <biscuit/registers.hpp>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/is_instance_of_template.hpp"
#include <ankerl/unordered_dense.h>
diff --git a/src/dynarmic/src/dynarmic/backend/riscv64/stack_layout.h b/src/dynarmic/src/dynarmic/backend/riscv64/stack_layout.h
index 082e68aa6d..ca381520ea 100644
--- a/src/dynarmic/src/dynarmic/backend/riscv64/stack_layout.h
+++ b/src/dynarmic/src/dynarmic/backend/riscv64/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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::RV64 {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
index dd9e9e4a66..1c21886c60 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64.cpp
@@ -14,9 +14,9 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <boost/container/static_vector.hpp>
#include "dynarmic/backend/x64/a32_jitstate.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a32_interface.cpp b/src/dynarmic/src/dynarmic/backend/x64/a32_interface.cpp
index b48dcf9046..097e0f426f 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a32_interface.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a32_interface.cpp
@@ -12,9 +12,9 @@
#include <boost/icl/interval_set.hpp>
#include <fmt/format.h>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include <bit>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/llvm_disassemble.h"
#include "dynarmic/backend/x64/a32_emit_x64.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.cpp b/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.cpp
index 066b931350..df1d789895 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.cpp
@@ -8,9 +8,9 @@
#include "dynarmic/backend/x64/a32_jitstate.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/block_of_code.h"
#include "dynarmic/backend/x64/nzcv_util.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.h b/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.h
index 99510c91cf..c276ab0b8b 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/a32_jitstate.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,8 +9,9 @@
#pragma once
#include <array>
+#include <cstddef>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::X64 {
@@ -48,8 +49,8 @@ struct A32JitState {
// Exclusive state
u32 exclusive_state = 0;
- static constexpr size_t RSBSize = 8; // MUST be a power of 2.
- static constexpr size_t RSBPtrMask = RSBSize - 1;
+ static constexpr std::size_t RSBSize = 8; // MUST be a power of 2.
+ static constexpr std::size_t RSBPtrMask = RSBSize - 1;
u32 rsb_ptr = 0;
std::array<u64, RSBSize> rsb_location_descriptors;
std::array<u64, RSBSize> rsb_codeptrs;
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
index 8edeb29aed..cf9dab4034 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64.cpp
@@ -10,8 +10,8 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include <boost/container/static_vector.hpp>
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a64_interface.cpp b/src/dynarmic/src/dynarmic/backend/x64/a64_interface.cpp
index 96440d273e..9acaf3f9f6 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a64_interface.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/a64_interface.cpp
@@ -11,7 +11,7 @@
#include <mutex>
#include <boost/icl/interval_set.hpp>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/llvm_disassemble.h"
#include <bit>
diff --git a/src/dynarmic/src/dynarmic/backend/x64/a64_jitstate.h b/src/dynarmic/src/dynarmic/backend/x64/a64_jitstate.h
index 22fd94e5c9..85ee1aa4b9 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/a64_jitstate.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/a64_jitstate.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/nzcv_util.h"
#include "dynarmic/frontend/A64/a64_location_descriptor.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/abi.cpp b/src/dynarmic/src/dynarmic/backend/x64/abi.cpp
index 413af7b557..5d2ee735f3 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/abi.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/abi.cpp
@@ -10,7 +10,7 @@
#include <algorithm>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/block_of_code.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/abi.h b/src/dynarmic/src/dynarmic/backend/x64/abi.h
index c37910ce22..f98fa302ca 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/abi.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/abi.h
@@ -10,7 +10,7 @@
#include <array>
#include <bitset>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/hostloc.h"
namespace Dynarmic::Backend::X64 {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
index 3a161fca6b..f41bea6c83 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.cpp
@@ -24,7 +24,7 @@
#include <array>
#include <cstring>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/backend/x64/xbyak.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.h b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.h
index f6c12edaaa..857b1a4484 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/block_of_code.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/block_of_code.h
@@ -14,7 +14,7 @@
#include <type_traits>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"
#include "dynarmic/backend/x64/abi.h"
#include "dynarmic/backend/x64/callback.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/callback.h b/src/dynarmic/src/dynarmic/backend/x64/callback.h
index 2bd917ad76..fb1a1a5855 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/callback.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/callback.h
@@ -11,7 +11,7 @@
#include <functional>
#include <vector>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic::Backend::X64 {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/constant_pool.cpp b/src/dynarmic/src/dynarmic/backend/x64/constant_pool.cpp
index 7dbd46bc2a..127149a29e 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/constant_pool.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/constant_pool.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.
@@ -10,7 +10,7 @@
#include <cstring>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/backend/x64/block_of_code.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/constant_pool.h b/src/dynarmic/src/dynarmic/backend/x64/constant_pool.h
index efb19f48ed..79e57fc78c 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/constant_pool.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/constant_pool.h
@@ -13,7 +13,7 @@
#include <span>
#include <utility>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/x64/xbyak.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/constants.h b/src/dynarmic/src/dynarmic/backend/x64/constants.h
index a0ae9f3c1e..fb9789e053 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/constants.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/constants.h
@@ -11,7 +11,7 @@
#include <optional>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/rounding_mode.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/devirtualize.h b/src/dynarmic/src/dynarmic/backend/x64/devirtualize.h
index 422d21169f..e6efe010ff 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/devirtualize.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/devirtualize.h
@@ -12,7 +12,7 @@
#include <utility>
#include <bit>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"
#include "dynarmic/backend/x64/callback.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
index 4ed198e09f..3d28365b1c 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64.cpp
@@ -10,10 +10,10 @@
#include <iterator>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include <boost/variant/detail/apply_visitor_binary.hpp>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <ankerl/unordered_dense.h>
#include "dynarmic/backend/x64/block_of_code.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_aes.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_aes.cpp
index 1ab5a12de1..ae05f9f590 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_aes.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_aes.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.
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/abi.h"
#include "dynarmic/backend/x64/block_of_code.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp
index 38e107fb13..d05d4aa036 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_data_processing.cpp
@@ -9,8 +9,8 @@
#include <cstddef>
#include <type_traits>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/block_of_code.h"
#include "dynarmic/backend/x64/emit_x64.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp
index 6a3ab005f3..827600c7c2 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_floating_point.cpp
@@ -10,8 +10,8 @@
#include <type_traits>
#include <utility>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include "dynarmic/backend/x64/xbyak.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp
index 4c9ea821cc..74e8c76275 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_saturation.cpp
@@ -8,9 +8,9 @@
#include <limits>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/integer_of_size.hpp"
#include "dynarmic/backend/x64/block_of_code.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp
index 6f53580997..b5ec6ec7cf 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector.cpp
@@ -12,9 +12,9 @@
#include <cstdlib>
#include <type_traits>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/mcl/function_info.hpp"
#include "dynarmic/backend/x64/xbyak.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp
index a003d3196e..926653a920 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_floating_point.cpp
@@ -12,7 +12,7 @@
#include <type_traits>
#include <utility>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/function_info.hpp"
#include "dynarmic/mcl/integer_of_size.hpp"
#include "dynarmic/backend/x64/xbyak.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_saturation.cpp b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_saturation.cpp
index f0b02169d7..f9ad53c5a7 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_saturation.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/emit_x64_vector_saturation.cpp
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/block_of_code.h"
#include "dynarmic/backend/x64/constants.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/exception_handler_windows.cpp b/src/dynarmic/src/dynarmic/backend/x64/exception_handler_windows.cpp
index bae397ff2b..8d98d4e1fa 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/exception_handler_windows.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/exception_handler_windows.cpp
@@ -12,9 +12,9 @@
#include <cstring>
#include <vector>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include <bit>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/exception_handler.h"
#include "dynarmic/backend/x64/block_of_code.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/exclusive_monitor.cpp b/src/dynarmic/src/dynarmic/backend/x64/exclusive_monitor.cpp
index f8237c99e8..c7fee69214 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/exclusive_monitor.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/exclusive_monitor.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.
@@ -10,7 +10,7 @@
#include <algorithm>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
namespace Dynarmic {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/host_feature.h b/src/dynarmic/src/dynarmic/backend/x64/host_feature.h
index 34dca971cb..019a36635b 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/host_feature.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/host_feature.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 "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::X64 {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/hostloc.h b/src/dynarmic/src/dynarmic/backend/x64/hostloc.h
index 2feecf5d5e..7191a0ceba 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/hostloc.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/hostloc.h
@@ -10,8 +10,8 @@
#include <bitset>
#include <xbyak/xbyak.h>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic::Backend::X64 {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/nzcv_util.h b/src/dynarmic/src/dynarmic/backend/x64/nzcv_util.h
index 1ee0ed4329..2abe06e035 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/nzcv_util.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/nzcv_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,17 +8,18 @@
#pragma once
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
+#include <cstddef>
namespace Dynarmic::Backend::X64::NZCV {
constexpr u32 arm_mask = 0xF000'0000;
constexpr u32 x64_mask = 0xC101;
-constexpr size_t x64_n_flag_bit = 15;
-constexpr size_t x64_z_flag_bit = 14;
-constexpr size_t x64_c_flag_bit = 8;
-constexpr size_t x64_v_flag_bit = 0;
+constexpr std::size_t x64_n_flag_bit = 15;
+constexpr std::size_t x64_z_flag_bit = 14;
+constexpr std::size_t x64_c_flag_bit = 8;
+constexpr std::size_t x64_v_flag_bit = 0;
/// This is a constant used to create the x64 flags format from the ARM format.
/// NZCV * multiplier: NZCV0NZCV000NZCV
@@ -46,7 +47,7 @@ inline u32 FromX64(u32 x64_flags) {
nzcv |= mcl::bit::get_bit<15>(x64_flags) ? 1 << 31 : 0;
nzcv |= mcl::bit::get_bit<14>(x64_flags) ? 1 << 30 : 0;
nzcv |= mcl::bit::get_bit<8>(x64_flags) ? 1 << 29 : 0;
- nzcv |= mcl::bit::get_bit<0>(x64_flags) ? 1 << 28 : 0;
+ nzcv |= mcl::bit::get_bit<0>(x64_flaags) ? 1 << 28 : 0;
return nzcv;
*/
return ((x64_flags & x64_mask) * from_x64_multiplier) & arm_mask;
diff --git a/src/dynarmic/src/dynarmic/backend/x64/oparg.h b/src/dynarmic/src/dynarmic/backend/x64/oparg.h
index d16728d19f..7366c0c7a3 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/oparg.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/oparg.h
@@ -8,7 +8,7 @@
#pragma once
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/backend/x64/xbyak.h"
namespace Dynarmic::Backend::X64 {
diff --git a/src/dynarmic/src/dynarmic/backend/x64/perf_map.cpp b/src/dynarmic/src/dynarmic/backend/x64/perf_map.cpp
index 095d6194f6..eaa6c9e2b8 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/perf_map.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/perf_map.cpp
@@ -11,7 +11,7 @@
#include <fmt/format.h>
#include "dynarmic/backend/x64/perf_map.h"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#if defined(__linux__) && !defined(__ANDROID__)
# include <cstdio>
# include <cstdlib>
diff --git a/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp b/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp
index 2cfa14ae18..5a828839c1 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp
+++ b/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.cpp
@@ -13,7 +13,7 @@
#include <fmt/ostream.h>
#include "dynarmic/backend/x64/hostloc.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include <bit>
#include "dynarmic/backend/x64/xbyak.h"
diff --git a/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h b/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h
index 746d6b723f..455c6a970a 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/reg_alloc.h
@@ -13,7 +13,7 @@
#include <optional>
#include "boost/container/small_vector.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/xbyak.h"
#include <boost/container/static_vector.hpp>
#include <boost/container/flat_set.hpp>
diff --git a/src/dynarmic/src/dynarmic/backend/x64/stack_layout.h b/src/dynarmic/src/dynarmic/backend/x64/stack_layout.h
index 43a3fc7ab2..b5fd1f04e9 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/stack_layout.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/stack_layout.h
@@ -9,12 +9,13 @@
#pragma once
#include <array>
+#include <cstddef>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Backend::X64 {
-constexpr size_t SpillCount = 64;
+constexpr std::size_t SpillCount = 64;
#ifdef _MSC_VER
# pragma warning(push)
diff --git a/src/dynarmic/src/dynarmic/backend/x64/verbose_debugging_output.h b/src/dynarmic/src/dynarmic/backend/x64/verbose_debugging_output.h
index 3f4823010b..25c4ddc677 100644
--- a/src/dynarmic/src/dynarmic/backend/x64/verbose_debugging_output.h
+++ b/src/dynarmic/src/dynarmic/backend/x64/verbose_debugging_output.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/backend/x64/stack_layout.h"
diff --git a/src/dynarmic/src/dynarmic/common/assert.cpp b/src/dynarmic/src/dynarmic/common/assert.cpp
deleted file mode 100644
index e3419514e8..0000000000
--- a/src/dynarmic/src/dynarmic/common/assert.cpp
+++ /dev/null
@@ -1,13 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-// SPDX-FileCopyrightText: Copyright 2021 yuzu Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#include <cstdio>
-#include <exception>
-
-[[noreturn]] void assert_terminate_impl(const char* s) {
- std::puts(s);
- std::fflush(stderr);
- std::terminate();
-}
diff --git a/src/dynarmic/src/dynarmic/common/assert.h b/src/dynarmic/src/dynarmic/common/assert.h
deleted file mode 100644
index a79d865974..0000000000
--- a/src/dynarmic/src/dynarmic/common/assert.h
+++ /dev/null
@@ -1,27 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-// SPDX-FileCopyrightText: 2013 Dolphin Emulator Project
-// SPDX-FileCopyrightText: 2014 Citra Emulator Project
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-#pragma once
-
-// TODO: Use source_info?
-[[noreturn]] void assert_terminate_impl(const char* s);
-#ifndef ASSERT
-# define ASSERT(expr) do { auto&& condition = !(expr); if(condition) [[unlikely]] assert_terminate_impl(__FILE__ ": " #expr); } while(0)
-#endif
-#ifndef UNREACHABLE
-# ifdef _MSC_VER
-# define UNREACHABLE() ASSERT(false && __FILE__ ": unreachable")
-# else
-# define UNREACHABLE() __builtin_unreachable();
-# endif
-#endif
-#ifndef DEBUG_ASSERT
-# ifndef NDEBUG
-# define DEBUG_ASSERT(_a_) ASSERT(_a_)
-# else
-# define DEBUG_ASSERT(_a_)
-# endif
-#endif
diff --git a/src/dynarmic/src/dynarmic/common/atomic.h b/src/dynarmic/src/dynarmic/common/atomic.h
index 966921eb9a..5eb4288517 100644
--- a/src/dynarmic/src/dynarmic/common/atomic.h
+++ b/src/dynarmic/src/dynarmic/common/atomic.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 "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Atomic {
diff --git a/src/dynarmic/src/dynarmic/common/common_types.h b/src/dynarmic/src/dynarmic/common/common_types.h
deleted file mode 100644
index 711418d97f..0000000000
--- a/src/dynarmic/src/dynarmic/common/common_types.h
+++ /dev/null
@@ -1,26 +0,0 @@
-// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
-// SPDX-License-Identifier: GPL-3.0-or-later
-
-// TODO(crueter): This is identical to root common_types.h
-
-#pragma once
-
-#include <cstdint>
-#include <cstdlib>
-#include <array>
-
-using u8 = std::uint8_t; ///< 8-bit unsigned byte
-using u16 = std::uint16_t; ///< 16-bit unsigned short
-using u32 = std::uint32_t; ///< 32-bit unsigned word
-using u64 = std::uint64_t; ///< 64-bit unsigned int
-
-using s8 = std::int8_t; ///< 8-bit signed byte
-using s16 = std::int16_t; ///< 16-bit signed short
-using s32 = std::int32_t; ///< 32-bit signed word
-using s64 = std::int64_t; ///< 64-bit signed int
-
-using f32 = float; ///< 32-bit floating point
-using f64 = double; ///< 64-bit floating point
-
-using u128 = std::array<std::uint64_t, 2>;
-static_assert(sizeof(u128) == 16, "u128 must be 128 bits wide");
diff --git a/src/dynarmic/src/dynarmic/common/context.h b/src/dynarmic/src/dynarmic/common/context.h
index 941289cb94..e849c9861b 100644
--- a/src/dynarmic/src/dynarmic/common/context.h
+++ b/src/dynarmic/src/dynarmic/common/context.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
#pragma once
@@ -34,51 +34,24 @@
# endif
#endif
-#ifdef ARCHITECTURE_x86_64
+#ifdef ARCHITECTURE_arm64
# ifdef __OpenBSD__
# define CTX_DECLARE(raw_context) ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(raw_context);
# else
-# define CTX_DECLARE(raw_context) \
- ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(raw_context); \
- [[maybe_unused]] auto& mctx = ucontext->uc_mcontext;
+# define CTX_DECLARE(raw_context) ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(raw_context); \
+ [[maybe_unused]] auto& mctx = ucontext->uc_mcontext; \
+ [[maybe_unused]] const auto fpctx = GetFloatingPointState(mctx);
# endif
-#elif defined(ARCHITECTURE_arm64)
+#else
# ifdef __OpenBSD__
# define CTX_DECLARE(raw_context) ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(raw_context);
# else
-# define CTX_DECLARE(raw_context) \
- ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(raw_context); \
- [[maybe_unused]] auto& mctx = ucontext->uc_mcontext; \
- [[maybe_unused]] const auto fpctx = GetFloatingPointState(mctx);
+# define CTX_DECLARE(raw_context) ucontext_t* ucontext = reinterpret_cast<ucontext_t*>(raw_context); \
+ [[maybe_unused]] auto& mctx = ucontext->uc_mcontext;
# endif
#endif
-#if defined(ARCHITECTURE_x86_64)
-# if defined(__APPLE__)
-# define CTX_RIP (mctx->__ss.__rip)
-# define CTX_RSP (mctx->__ss.__rsp)
-# elif defined(__linux__)
-# define CTX_RIP (mctx.gregs[REG_RIP])
-# define CTX_RSP (mctx.gregs[REG_RSP])
-# elif defined(__FreeBSD__)
-# define CTX_RIP (mctx.mc_rip)
-# define CTX_RSP (mctx.mc_rsp)
-# elif defined(__NetBSD__)
-# define CTX_RIP (mctx.__gregs[_REG_RIP])
-# define CTX_RSP (mctx.__gregs[_REG_RSP])
-# elif defined(__OpenBSD__)
-# define CTX_RIP (ucontext->sc_rip)
-# define CTX_RSP (ucontext->sc_rsp)
-# elif defined(__sun__)
-# define CTX_RIP (mctx.gregs[REG_RIP])
-# define CTX_RSP (mctx.gregs[REG_RSP])
-# elif defined(__DragonFly__)
-# define CTX_RIP (mctx.mc_rip)
-# define CTX_RSP (mctx.mc_rsp)
-# else
-# error "Unknown platform"
-# endif
-#elif defined(ARCHITECTURE_arm64)
+#ifdef ARCHITECTURE_arm64
# if defined(__APPLE__)
# define CTX_PC (mctx->__ss.__pc)
# define CTX_SP (mctx->__ss.__sp)
@@ -110,14 +83,113 @@
# define CTX_X(i) (mctx.mc_gpregs.gp_x[i])
# define CTX_Q(i) (mctx.mc_fpregs.fp_q[i])
# elif defined(__OpenBSD__)
+// https://github.com/openbsd/src/blob/master/sys/arch/arm64/include/signal.h
# define CTX_PC (ucontext->sc_elr)
# define CTX_SP (ucontext->sc_sp)
# define CTX_LR (ucontext->sc_lr)
# define CTX_X(i) (ucontext->sc_x[i])
# define CTX_Q(i) (ucontext->sc_q[i])
# else
-# error "Unknown platform"
+# error "unknown platform"
+# endif
+#elif defined(__NetBSD__)
+// NetBSD always has useful macros for everything don't they?
+// Basically this special path means that for every arch that NetBSD supports
+// it atleast has the macro for _UC_MACHINE defined, thus it will be avoided on the
+// other macro branches!
+// https://github.com/NetBSD/src/blob/trunk/sys/arch/powerpc/include/mcontext.h
+// https://github.com/NetBSD/src/blob/trunk/sys/arch/mips/include/mcontext.h
+# define CTX_PC (_UC_MACHINE_PC(ucontext))
+# define CTX_SP (_UC_MACHINE_SP(ucontext))
+#elif defined(ARCHITECTURE_x86_64)
+# if defined(__APPLE__)
+# define CTX_RIP (mctx->__ss.__rip)
+# define CTX_RSP (mctx->__ss.__rsp)
+# elif defined(__linux__)
+# define CTX_RIP (mctx.gregs[REG_RIP])
+# define CTX_RSP (mctx.gregs[REG_RSP])
+# elif defined(__FreeBSD__)
+# define CTX_RIP (mctx.mc_rip)
+# define CTX_RSP (mctx.mc_rsp)
+# elif defined(__OpenBSD__)
+// https://github.com/openbsd/src/blob/master/sys/arch/x86_64/include/signal.h
+# define CTX_RIP (ucontext->sc_rip)
+# define CTX_RSP (ucontext->sc_rsp)
+# elif defined(__sun__)
+# define CTX_RIP (mctx.gregs[REG_RIP])
+# define CTX_RSP (mctx.gregs[REG_RSP])
+# elif defined(__DragonFly__)
+# define CTX_RIP (mctx.mc_rip)
+# define CTX_RSP (mctx.mc_rsp)
+# else
+# error "unknown platform"
# endif
+#elif defined(ARCHITECTURE_riscv64)
+# if defined(__FreeBSD__)
+# define CTX_SEPC (mctx.mc_gpregs.gp_sepc)
+# define CTX_SP (mctx.mc_gpregs.gp_sp)
+# elif defined(__linux__)
+# define CTX_SEPC (mctx.__gregs[REG_PC])
+# define CTX_SP (mctx.__gregs[REG_SP])
+# elif defined(__OpenBSD__)
+// https://github.com/openbsd/src/blob/master/sys/arch/riscv64/include/signal.h
+# define CTX_SEPC (ucontext->sc_sepc)
+# define CTX_SP (ucontext->sc_sp)
+# else
+# error "unknown platform"
+# endif
+#elif defined(ARCHITECTURE_powerpc64)
+# if defined(__FreeBSD__)
+# define CTX_PC (mctx.mc_srr0)
+# define CTX_SP (mctx.mc_gpr[1])
+# elif defined(__linux__)
+// https://github.com/lattera/glibc/blob/master/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+# define CTX_PC (mctx.__regs[REG_PC])
+# define CTX_SP (mctx.__regs[REG_SP])
+# elif defined(__OpenBSD__)
+// https://github.com/openbsd/src/blob/master/sys/arch/powerpc64/include/signal.h
+# define CTX_PC (ucontext->sc_pc)
+# define CTX_SP (ucontext->sc_reg[1])
+# else
+# error "unknown platform"
+# endif
+#elif defined(ARCHITECTURE_mips64)
+# if defined(__linux__)
+// https://github.com/lattera/glibc/blob/master/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+# define CTX_PC (mctx.__pc)
+# define CTX_SP (mctx.__gregs[29])
+# elif defined(__OpenBSD__)
+// https://github.com/openbsd/src/blob/master/sys/arch/mips64/include/signal.h
+# define CTX_PC (ucontext->sc_pc)
+# define CTX_SP (ucontext->sc_regs[29])
+# else
+# error "unknown platform"
+# endif
+#elif defined(ARCHITECTURE_loongarch64)
+# if defined(__linux__)
+// https://github.com/bminor/glibc/blob/04e750e75b73957cf1c791535a3f4319534a52fc/sysdeps/unix/sysv/linux/loongarch/sys/ucontext.h
+# define CTX_PC (mctx.__pc)
+# define CTX_SP (mctx.__gregs[LARCH_REG_SP])
+# elif defined(__OpenBSD__)
+// Literally MIPS64 copypaste?
+// https://github.com/openbsd/src/blob/master/sys/arch/loongson/include/signal.h
+# define CTX_PC (ucontext->sc_pc)
+# define CTX_SP (ucontext->sc_regs[29])
+# else
+# error "unknown platform"
+# endif
+#elif defined(ARCHITECTURE_sparc64)
+# if defined(__linux__)
+// https://github.com/lattera/glibc/blob/master/sysdeps/unix/sysv/linux/mips/sys/ucontext.h
+# define CTX_PC (mctx.__gregs[1]) //%pc
+# define CTX_SP (mctx.__gregs[17]) //%o6
+# elif defined(__OpenBSD__)
+// https://github.com/openbsd/src/blob/master/sys/arch/sparc64/include/signal.h
+# define CTX_PC (ucontext->sc_pc)
+# define CTX_SP (ucontext->sc_sp)
+# else
+# error "unknown platform"
+# endif
#else
# error "unimplemented"
#endif
diff --git a/src/dynarmic/src/dynarmic/common/crypto/aes.cpp b/src/dynarmic/src/dynarmic/common/crypto/aes.cpp
index c72481fbe3..12ebf1ed04 100644
--- a/src/dynarmic/src/dynarmic/common/crypto/aes.cpp
+++ b/src/dynarmic/src/dynarmic/common/crypto/aes.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Common::Crypto::AES {
@@ -133,8 +133,8 @@ static void InverseShiftRows(State& out_state, const State& state) {
}
static void SubBytes(State& state, const SubstitutionTable& table) {
- for (size_t i = 0; i < 4; i++) {
- for (size_t j = 0; j < 4; j++) {
+ for (std::size_t i = 0; i < 4; i++) {
+ for (std::size_t j = 0; j < 4; j++) {
state[4 * i + j] = table[state[4 * i + j]];
}
}
@@ -151,7 +151,7 @@ void EncryptSingleRound(State& out_state, const State& state) {
}
void MixColumns(State& out_state, const State& state) {
- for (size_t i = 0; i < out_state.size(); i += 4) {
+ for (std::size_t i = 0; i < out_state.size(); i += 4) {
const u8 a = state[i];
const u8 b = state[i + 1];
const u8 c = state[i + 2];
@@ -167,7 +167,7 @@ void MixColumns(State& out_state, const State& state) {
}
void InverseMixColumns(State& out_state, const State& state) {
- for (size_t i = 0; i < out_state.size(); i += 4) {
+ for (std::size_t i = 0; i < out_state.size(); i += 4) {
const u8 a = state[i];
const u8 b = state[i + 1];
const u8 c = state[i + 2];
diff --git a/src/dynarmic/src/dynarmic/common/crypto/aes.h b/src/dynarmic/src/dynarmic/common/crypto/aes.h
index f5d68fe166..395baf674a 100644
--- a/src/dynarmic/src/dynarmic/common/crypto/aes.h
+++ b/src/dynarmic/src/dynarmic/common/crypto/aes.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Common::Crypto::AES {
diff --git a/src/dynarmic/src/dynarmic/common/crypto/crc32.cpp b/src/dynarmic/src/dynarmic/common/crypto/crc32.cpp
index 6b9c129a44..b476b8d8f8 100644
--- a/src/dynarmic/src/dynarmic/common/crypto/crc32.cpp
+++ b/src/dynarmic/src/dynarmic/common/crypto/crc32.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.
@@ -10,7 +10,7 @@
#include <array>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Common::Crypto::CRC32 {
diff --git a/src/dynarmic/src/dynarmic/common/crypto/crc32.h b/src/dynarmic/src/dynarmic/common/crypto/crc32.h
index 391bd8074b..f4057b9793 100644
--- a/src/dynarmic/src/dynarmic/common/crypto/crc32.h
+++ b/src/dynarmic/src/dynarmic/common/crypto/crc32.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 "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Common::Crypto::CRC32 {
diff --git a/src/dynarmic/src/dynarmic/common/fp/fpcr.h b/src/dynarmic/src/dynarmic/common/fp/fpcr.h
index 948917bc35..038800c7c2 100644
--- a/src/dynarmic/src/dynarmic/common/fp/fpcr.h
+++ b/src/dynarmic/src/dynarmic/common/fp/fpcr.h
@@ -10,9 +10,9 @@
#include <optional>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/rounding_mode.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/fpsr.h b/src/dynarmic/src/dynarmic/common/fp/fpsr.h
index caa5cb92c7..18dd177111 100644
--- a/src/dynarmic/src/dynarmic/common/fp/fpsr.h
+++ b/src/dynarmic/src/dynarmic/common/fp/fpsr.h
@@ -9,7 +9,7 @@
#pragma once
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::FP {
diff --git a/src/dynarmic/src/dynarmic/common/fp/info.h b/src/dynarmic/src/dynarmic/common/fp/info.h
index eebca0fc0c..dae10729ee 100644
--- a/src/dynarmic/src/dynarmic/common/fp/info.h
+++ b/src/dynarmic/src/dynarmic/common/fp/info.h
@@ -9,7 +9,7 @@
#pragma once
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::FP {
diff --git a/src/dynarmic/src/dynarmic/common/fp/mantissa_util.h b/src/dynarmic/src/dynarmic/common/fp/mantissa_util.h
index 43bb5fe604..766fb8f9a4 100644
--- a/src/dynarmic/src/dynarmic/common/fp/mantissa_util.h
+++ b/src/dynarmic/src/dynarmic/common/fp/mantissa_util.h
@@ -9,7 +9,7 @@
#pragma once
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::FP {
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPConvert.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPConvert.cpp
index 82803f715d..395ca5c926 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPConvert.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPConvert.cpp
@@ -9,7 +9,7 @@
#include "dynarmic/common/fp/op/FPConvert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPMulAdd.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPMulAdd.cpp
index 6990b135f6..1f0b6a8657 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPMulAdd.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPMulAdd.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 "dynarmic/common/fp/op/FPMulAdd.h"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPRSqrtEstimate.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPRSqrtEstimate.cpp
index 6b2d43e1ce..c4aa8bcb74 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPRSqrtEstimate.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPRSqrtEstimate.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 "dynarmic/common/fp/op/FPRSqrtEstimate.h"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPRecipEstimate.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPRecipEstimate.cpp
index edab4bf147..42de9a0ed1 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPRecipEstimate.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPRecipEstimate.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.
@@ -10,8 +10,8 @@
#include <tuple>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPRecipExponent.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPRecipExponent.cpp
index 332870eb8a..b6fc63293f 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPRecipExponent.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPRecipExponent.cpp
@@ -9,7 +9,7 @@
#include "dynarmic/common/fp/op/FPRecipExponent.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.cpp
index 4bcfcd7c8a..426c66efec 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.cpp
@@ -8,9 +8,9 @@
#include "dynarmic/common/fp/op/FPRoundInt.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.h b/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.h
index 1eb2bd8877..83dd9f9447 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.h
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPRoundInt.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 "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::FP {
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.cpp b/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.cpp
index 2f37797b70..d920f2d900 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.cpp
@@ -9,9 +9,9 @@
#include "dynarmic/common/fp/op/FPToFixed.h"
#include <fmt/format.h>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.h b/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.h
index 6e19607d51..9d33fa53fb 100644
--- a/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.h
+++ b/src/dynarmic/src/dynarmic/common/fp/op/FPToFixed.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 "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::FP {
@@ -17,6 +17,6 @@ class FPSR;
enum class RoundingMode;
template<typename FPT>
-u64 FPToFixed(size_t ibits, FPT op, size_t fbits, bool unsigned_, FPCR fpcr, RoundingMode rounding, FPSR& fpsr);
+u64 FPToFixed(std::size_t ibits, FPT op, std::size_t fbits, bool unsigned_, FPCR fpcr, RoundingMode rounding, FPSR& fpsr);
} // namespace Dynarmic::FP
diff --git a/src/dynarmic/src/dynarmic/common/fp/process_exception.cpp b/src/dynarmic/src/dynarmic/common/fp/process_exception.cpp
index 33e095de47..2fee438246 100644
--- a/src/dynarmic/src/dynarmic/common/fp/process_exception.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/process_exception.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 "dynarmic/common/fp/process_exception.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/process_nan.cpp b/src/dynarmic/src/dynarmic/common/fp/process_nan.cpp
index 7f47852d98..acc9c329e8 100644
--- a/src/dynarmic/src/dynarmic/common/fp/process_nan.cpp
+++ b/src/dynarmic/src/dynarmic/common/fp/process_nan.cpp
@@ -10,7 +10,7 @@
#include <optional>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/common/fp/fpcr.h"
diff --git a/src/dynarmic/src/dynarmic/common/fp/unpacked.h b/src/dynarmic/src/dynarmic/common/fp/unpacked.h
index effc604fb0..ca842c6e9e 100644
--- a/src/dynarmic/src/dynarmic/common/fp/unpacked.h
+++ b/src/dynarmic/src/dynarmic/common/fp/unpacked.h
@@ -11,7 +11,7 @@
#include <tuple>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
diff --git a/src/dynarmic/src/dynarmic/common/llvm_disassemble.cpp b/src/dynarmic/src/dynarmic/common/llvm_disassemble.cpp
index 068c531f70..6aff6d6cc7 100644
--- a/src/dynarmic/src/dynarmic/common/llvm_disassemble.cpp
+++ b/src/dynarmic/src/dynarmic/common/llvm_disassemble.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.
@@ -15,9 +15,9 @@
# include <llvm-c/Target.h>
#endif
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include <bit>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/llvm_disassemble.h"
diff --git a/src/dynarmic/src/dynarmic/common/llvm_disassemble.h b/src/dynarmic/src/dynarmic/common/llvm_disassemble.h
index 226b742ec5..7fbd9495d1 100644
--- a/src/dynarmic/src/dynarmic/common/llvm_disassemble.h
+++ b/src/dynarmic/src/dynarmic/common/llvm_disassemble.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.
@@ -10,7 +10,7 @@
#include <string>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Common {
diff --git a/src/dynarmic/src/dynarmic/common/math_util.h b/src/dynarmic/src/dynarmic/common/math_util.h
index 8915100ae4..edf2a8229f 100644
--- a/src/dynarmic/src/dynarmic/common/math_util.h
+++ b/src/dynarmic/src/dynarmic/common/math_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.
@@ -10,7 +10,7 @@
#include <utility>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::Common {
diff --git a/src/dynarmic/src/dynarmic/common/safe_ops.h b/src/dynarmic/src/dynarmic/common/safe_ops.h
index 5cc8cb5049..f5559336e0 100644
--- a/src/dynarmic/src/dynarmic/common/safe_ops.h
+++ b/src/dynarmic/src/dynarmic/common/safe_ops.h
@@ -11,7 +11,7 @@
#include <type_traits>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/u128.h"
diff --git a/src/dynarmic/src/dynarmic/common/spin_lock_riscv64.cpp b/src/dynarmic/src/dynarmic/common/spin_lock_riscv64.cpp
new file mode 100644
index 0000000000..bd07b8c915
--- /dev/null
+++ b/src/dynarmic/src/dynarmic/common/spin_lock_riscv64.cpp
@@ -0,0 +1,16 @@
+// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+#include <mutex>
+
+#include "dynarmic/common/spin_lock.h"
+
+namespace Dynarmic {
+
+void SpinLock::Lock() noexcept {
+}
+
+void SpinLock::Unlock() noexcept {
+}
+
+} // namespace Dynarmic
diff --git a/src/dynarmic/src/dynarmic/common/u128.cpp b/src/dynarmic/src/dynarmic/common/u128.cpp
index 541e009b23..3ea6a758aa 100644
--- a/src/dynarmic/src/dynarmic/common/u128.cpp
+++ b/src/dynarmic/src/dynarmic/common/u128.cpp
@@ -8,7 +8,7 @@
#include "dynarmic/common/u128.h"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic {
diff --git a/src/dynarmic/src/dynarmic/common/u128.h b/src/dynarmic/src/dynarmic/common/u128.h
index 4fa842b3cd..1a5686828f 100644
--- a/src/dynarmic/src/dynarmic/common/u128.h
+++ b/src/dynarmic/src/dynarmic/common/u128.h
@@ -12,7 +12,7 @@
#include <type_traits>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic {
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/FPSCR.h b/src/dynarmic/src/dynarmic/frontend/A32/FPSCR.h
index 7e0532ee93..c882add4d6 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/FPSCR.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/FPSCR.h
@@ -11,7 +11,7 @@
#include <optional>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/rounding_mode.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/ITState.h b/src/dynarmic/src/dynarmic/frontend/A32/ITState.h
index baabc1ca15..c8ea0f735b 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/ITState.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/ITState.h
@@ -9,7 +9,7 @@
#pragma once
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/ir/cond.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/PSR.h b/src/dynarmic/src/dynarmic/frontend/A32/PSR.h
index 16ca86aeac..8ea4a39d67 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/PSR.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/PSR.h
@@ -9,7 +9,7 @@
#pragma once
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A32/ITState.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.cpp b/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.cpp
index d9495b881f..7848539186 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.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 "dynarmic/frontend/A32/a32_ir_emitter.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/frontend/A32/a32_types.h"
#include "dynarmic/interface/A32/arch_version.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.h b/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.h
index 8f5e049416..5529c8b720 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/a32_ir_emitter.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.
@@ -10,7 +10,7 @@
#include <utility>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
#include "dynarmic/ir/ir_emitter.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/a32_location_descriptor.h b/src/dynarmic/src/dynarmic/frontend/A32/a32_location_descriptor.h
index cd850d0087..399a1681f3 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/a32_location_descriptor.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/a32_location_descriptor.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.
@@ -13,7 +13,7 @@
#include <tuple>
#include <fmt/format.h>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A32/FPSCR.h"
#include "dynarmic/frontend/A32/ITState.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/a32_types.h b/src/dynarmic/src/dynarmic/frontend/A32/a32_types.h
index 2a0cc25751..957c643f56 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/a32_types.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/a32_types.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.
@@ -10,8 +10,8 @@
#include <string>
#include <fmt/format.h>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/interface/A32/coprocessor_util.h"
#include "dynarmic/ir/cond.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/decoder/arm.h b/src/dynarmic/src/dynarmic/frontend/A32/decoder/arm.h
index 1e3d368187..d1cd9a923d 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/decoder/arm.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/decoder/arm.h
@@ -16,7 +16,7 @@
#include <vector>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"
#include "dynarmic/frontend/decoder/matcher.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/decoder/asimd.h b/src/dynarmic/src/dynarmic/frontend/A32/decoder/asimd.h
index 2861b998ca..5b0336e59f 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/decoder/asimd.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/decoder/asimd.h
@@ -16,7 +16,7 @@
#include <iterator>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"
#include "dynarmic/frontend/decoder/matcher.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb16.h b/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb16.h
index eae296f59c..590878a6de 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb16.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb16.h
@@ -13,7 +13,7 @@
#include <optional>
#include <vector>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"
#include "dynarmic/frontend/decoder/matcher.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb32.h b/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb32.h
index d82aef73fa..6a09c66afb 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb32.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/decoder/thumb32.h
@@ -12,7 +12,7 @@
#include <optional>
#include <vector>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"
#include "dynarmic/frontend/decoder/matcher.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/decoder/vfp.h b/src/dynarmic/src/dynarmic/frontend/A32/decoder/vfp.h
index f1728e452b..e02cc03a6b 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/decoder/vfp.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/decoder/vfp.h
@@ -13,7 +13,7 @@
#include <optional>
#include <vector>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"
#include "dynarmic/frontend/decoder/matcher.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/a32_translate.h b/src/dynarmic/src/dynarmic/frontend/A32/translate/a32_translate.h
index 33e641fcaf..d39e80a54f 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/a32_translate.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/a32_translate.h
@@ -7,7 +7,7 @@
*/
#pragma once
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/interface/A32/arch_version.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.cpp
index 82d25f1337..64e6bf2c7c 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.cpp
@@ -10,8 +10,8 @@
#include <algorithm>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/A32/a32_ir_emitter.h"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.h b/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.h
index ab52dd7198..074e8da662 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/conditional_state.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 "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::IR {
enum class Cond;
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.cpp
index 7b21e7cce1..f5d1830769 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.cpp
@@ -8,7 +8,7 @@
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/interface/A32/config.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.h b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.h
index a8888c355f..82e919720e 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.h
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/a32_translate_impl.h
@@ -8,7 +8,7 @@
#pragma once
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/a32_ir_emitter.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_misc.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_misc.cpp
index 9aa50c6b8c..6ccfe1e3bc 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_misc.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_misc.cpp
@@ -8,7 +8,7 @@
#include <vector>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_one_reg_modified_immediate.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_one_reg_modified_immediate.cpp
index c5bdb1b551..99b0cf2eb1 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_one_reg_modified_immediate.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_one_reg_modified_immediate.cpp
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_scalar.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_scalar.cpp
index d9cc3b1e64..35f9888ce5 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_scalar.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_scalar.cpp
@@ -8,7 +8,7 @@
#include <utility>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_shift.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_shift.cpp
index e5a4eb537f..4b653c0455 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_shift.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/asimd_two_regs_shift.cpp
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/thumb32_data_processing_plain_binary_immediate.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/thumb32_data_processing_plain_binary_immediate.cpp
index 7ea31d40ee..c0bb75962f 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/thumb32_data_processing_plain_binary_immediate.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/impl/thumb32_data_processing_plain_binary_immediate.cpp
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_arm.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_arm.cpp
index 5cc9ef3893..3fd475d074 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_arm.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_arm.cpp
@@ -6,7 +6,7 @@
* SPDX-License-Identifier: 0BSD
*/
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
#include "dynarmic/frontend/A32/a32_types.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_thumb.cpp b/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_thumb.cpp
index 309dd080f9..332860a95c 100644
--- a/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_thumb.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A32/translate/translate_thumb.cpp
@@ -8,7 +8,7 @@
#include <tuple>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/frontend/A32/a32_ir_emitter.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.h b/src/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.h
index 18f32cdcc9..21bd9250dd 100644
--- a/src/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.h
+++ b/src/dynarmic/src/dynarmic/frontend/A64/a64_ir_emitter.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.
@@ -10,8 +10,8 @@
#include <optional>
-#include "dynarmic/common/common_types.h"
-#include "dynarmic/common/assert.h"
+#include "common/common_types.h"
+#include "common/assert.h"
#include "dynarmic/frontend/A64/a64_location_descriptor.h"
#include "dynarmic/frontend/A64/a64_types.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A64/a64_location_descriptor.h b/src/dynarmic/src/dynarmic/frontend/A64/a64_location_descriptor.h
index a8be0232ca..d0c6a9df3d 100644
--- a/src/dynarmic/src/dynarmic/frontend/A64/a64_location_descriptor.h
+++ b/src/dynarmic/src/dynarmic/frontend/A64/a64_location_descriptor.h
@@ -14,7 +14,7 @@
#include <fmt/format.h>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/ir/location_descriptor.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A64/a64_types.h b/src/dynarmic/src/dynarmic/frontend/A64/a64_types.h
index 8d0f0abe80..55d82a740a 100644
--- a/src/dynarmic/src/dynarmic/frontend/A64/a64_types.h
+++ b/src/dynarmic/src/dynarmic/frontend/A64/a64_types.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,8 +11,8 @@
#include <string>
#include <fmt/format.h>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/ir/cond.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A64/decoder/a64.h b/src/dynarmic/src/dynarmic/frontend/A64/decoder/a64.h
index 533a93f3aa..ccf890cbcd 100644
--- a/src/dynarmic/src/dynarmic/frontend/A64/decoder/a64.h
+++ b/src/dynarmic/src/dynarmic/frontend/A64/decoder/a64.h
@@ -16,7 +16,7 @@
#include <vector>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/frontend/decoder/decoder_detail.h"
#include "dynarmic/frontend/decoder/matcher.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/A64/translate/a64_translate.h b/src/dynarmic/src/dynarmic/frontend/A64/translate/a64_translate.h
index 125979f8b7..61033eb530 100644
--- a/src/dynarmic/src/dynarmic/frontend/A64/translate/a64_translate.h
+++ b/src/dynarmic/src/dynarmic/frontend/A64/translate/a64_translate.h
@@ -10,7 +10,7 @@
#include <functional>
#include <optional>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic {
diff --git a/src/dynarmic/src/dynarmic/frontend/A64/translate/impl/simd_vector_x_indexed_element.cpp b/src/dynarmic/src/dynarmic/frontend/A64/translate/impl/simd_vector_x_indexed_element.cpp
index 12ff153dd8..da11b51d84 100644
--- a/src/dynarmic/src/dynarmic/frontend/A64/translate/impl/simd_vector_x_indexed_element.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/A64/translate/impl/simd_vector_x_indexed_element.cpp
@@ -8,7 +8,7 @@
#include <utility>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/frontend/A64/translate/impl/impl.h"
diff --git a/src/dynarmic/src/dynarmic/frontend/decoder/decoder_detail.h b/src/dynarmic/src/dynarmic/frontend/decoder/decoder_detail.h
index 3ab360c287..c22e585c26 100644
--- a/src/dynarmic/src/dynarmic/frontend/decoder/decoder_detail.h
+++ b/src/dynarmic/src/dynarmic/frontend/decoder/decoder_detail.h
@@ -12,7 +12,7 @@
#include <array>
#include <tuple>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/mcl/function_info.hpp"
diff --git a/src/dynarmic/src/dynarmic/frontend/decoder/matcher.h b/src/dynarmic/src/dynarmic/frontend/decoder/matcher.h
index f7e2884e0c..194f646ed2 100644
--- a/src/dynarmic/src/dynarmic/frontend/decoder/matcher.h
+++ b/src/dynarmic/src/dynarmic/frontend/decoder/matcher.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.
@@ -10,7 +10,7 @@
#include <functional>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
namespace Dynarmic::Decoder {
diff --git a/src/dynarmic/src/dynarmic/frontend/imm.cpp b/src/dynarmic/src/dynarmic/frontend/imm.cpp
index aeb7b5d3f6..7afc3ae403 100644
--- a/src/dynarmic/src/dynarmic/frontend/imm.cpp
+++ b/src/dynarmic/src/dynarmic/frontend/imm.cpp
@@ -8,9 +8,9 @@
#include "dynarmic/frontend/imm.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic {
diff --git a/src/dynarmic/src/dynarmic/frontend/imm.h b/src/dynarmic/src/dynarmic/frontend/imm.h
index 3a6c10316a..56fbcbda0e 100644
--- a/src/dynarmic/src/dynarmic/frontend/imm.h
+++ b/src/dynarmic/src/dynarmic/frontend/imm.h
@@ -10,9 +10,9 @@
#include <type_traits>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/math_util.h"
diff --git a/src/dynarmic/src/dynarmic/ir/basic_block.cpp b/src/dynarmic/src/dynarmic/ir/basic_block.cpp
index ac0f03d76a..284f115328 100644
--- a/src/dynarmic/src/dynarmic/ir/basic_block.cpp
+++ b/src/dynarmic/src/dynarmic/ir/basic_block.cpp
@@ -14,7 +14,7 @@
#include <string>
#include <fmt/format.h>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/frontend/A32/a32_types.h"
#include "dynarmic/frontend/A64/a64_types.h"
#include "dynarmic/ir/cond.h"
diff --git a/src/dynarmic/src/dynarmic/ir/basic_block.h b/src/dynarmic/src/dynarmic/ir/basic_block.h
index bbf1319957..1518903d2a 100644
--- a/src/dynarmic/src/dynarmic/ir/basic_block.h
+++ b/src/dynarmic/src/dynarmic/ir/basic_block.h
@@ -17,7 +17,7 @@
#include <boost/container/static_vector.hpp>
#include <boost/container/stable_vector.hpp>
#include "dynarmic/mcl/intrusive_list.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/ir/location_descriptor.h"
#include "dynarmic/ir/microinstruction.h"
diff --git a/src/dynarmic/src/dynarmic/ir/ir_emitter.h b/src/dynarmic/src/dynarmic/ir/ir_emitter.h
index ed95c8b5be..c035af2708 100644
--- a/src/dynarmic/src/dynarmic/ir/ir_emitter.h
+++ b/src/dynarmic/src/dynarmic/ir/ir_emitter.h
@@ -10,8 +10,8 @@
#include <vector>
-#include "dynarmic/common/common_types.h"
-#include "dynarmic/common/assert.h"
+#include "common/common_types.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/ir/opcodes.h"
diff --git a/src/dynarmic/src/dynarmic/ir/location_descriptor.h b/src/dynarmic/src/dynarmic/ir/location_descriptor.h
index 5c7c954d38..ca44c03306 100644
--- a/src/dynarmic/src/dynarmic/ir/location_descriptor.h
+++ b/src/dynarmic/src/dynarmic/ir/location_descriptor.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 <string>
#include <fmt/format.h>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::IR {
diff --git a/src/dynarmic/src/dynarmic/ir/microinstruction.cpp b/src/dynarmic/src/dynarmic/ir/microinstruction.cpp
index cc555474ef..b5541470cd 100644
--- a/src/dynarmic/src/dynarmic/ir/microinstruction.cpp
+++ b/src/dynarmic/src/dynarmic/ir/microinstruction.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.
@@ -10,7 +10,7 @@
#include <algorithm>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/ir/opcodes.h"
#include "dynarmic/ir/type.h"
diff --git a/src/dynarmic/src/dynarmic/ir/microinstruction.h b/src/dynarmic/src/dynarmic/ir/microinstruction.h
index fb3ac1f49a..76ca3b389d 100644
--- a/src/dynarmic/src/dynarmic/ir/microinstruction.h
+++ b/src/dynarmic/src/dynarmic/ir/microinstruction.h
@@ -11,7 +11,7 @@
#include <array>
#include "dynarmic/mcl/intrusive_list.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/ir/value.h"
#include "dynarmic/ir/opcodes.h"
diff --git a/src/dynarmic/src/dynarmic/ir/opcodes.h b/src/dynarmic/src/dynarmic/ir/opcodes.h
index cb0c2db8a4..f975896a6b 100644
--- a/src/dynarmic/src/dynarmic/ir/opcodes.h
+++ b/src/dynarmic/src/dynarmic/ir/opcodes.h
@@ -11,7 +11,7 @@
#include <string>
#include <fmt/format.h>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::IR {
diff --git a/src/dynarmic/src/dynarmic/ir/terminal.h b/src/dynarmic/src/dynarmic/ir/terminal.h
index 187648b45c..9b91b27382 100644
--- a/src/dynarmic/src/dynarmic/ir/terminal.h
+++ b/src/dynarmic/src/dynarmic/ir/terminal.h
@@ -9,7 +9,7 @@
#pragma once
#include <boost/variant.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/ir/cond.h"
#include "dynarmic/ir/location_descriptor.h"
diff --git a/src/dynarmic/src/dynarmic/ir/type.h b/src/dynarmic/src/dynarmic/ir/type.h
index e223513367..3344e26db1 100644
--- a/src/dynarmic/src/dynarmic/ir/type.h
+++ b/src/dynarmic/src/dynarmic/ir/type.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 <string>
#include <fmt/format.h>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace Dynarmic::IR {
diff --git a/src/dynarmic/src/dynarmic/ir/value.cpp b/src/dynarmic/src/dynarmic/ir/value.cpp
index 451036b1fd..7f0249b1ec 100644
--- a/src/dynarmic/src/dynarmic/ir/value.cpp
+++ b/src/dynarmic/src/dynarmic/ir/value.cpp
@@ -8,7 +8,7 @@
#include "dynarmic/ir/value.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/ir/microinstruction.h"
diff --git a/src/dynarmic/src/dynarmic/ir/value.h b/src/dynarmic/src/dynarmic/ir/value.h
index ce439f77d1..1fec942e2e 100644
--- a/src/dynarmic/src/dynarmic/ir/value.h
+++ b/src/dynarmic/src/dynarmic/ir/value.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,8 +11,8 @@
#include <array>
#include <type_traits>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/ir/type.h"
diff --git a/src/dynarmic/src/dynarmic/mcl/bit.hpp b/src/dynarmic/src/dynarmic/mcl/bit.hpp
index 1ef9880a5f..bbedffd8ae 100644
--- a/src/dynarmic/src/dynarmic/mcl/bit.hpp
+++ b/src/dynarmic/src/dynarmic/mcl/bit.hpp
@@ -9,8 +9,8 @@
#include <climits>
#include <cstddef>
-#include "dynarmic/common/common_types.h"
-#include "dynarmic/common/assert.h"
+#include "common/common_types.h"
+#include "common/assert.h"
namespace mcl {
namespace detail {
diff --git a/src/dynarmic/src/dynarmic/mcl/integer_of_size.hpp b/src/dynarmic/src/dynarmic/mcl/integer_of_size.hpp
index 8bdecc955d..1d54e9e3ef 100644
--- a/src/dynarmic/src/dynarmic/mcl/integer_of_size.hpp
+++ b/src/dynarmic/src/dynarmic/mcl/integer_of_size.hpp
@@ -5,7 +5,7 @@
#pragma once
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
namespace mcl {
diff --git a/src/dynarmic/src/dynarmic/mcl/intrusive_list.hpp b/src/dynarmic/src/dynarmic/mcl/intrusive_list.hpp
index 3b1c1d6699..d8b87366a1 100644
--- a/src/dynarmic/src/dynarmic/mcl/intrusive_list.hpp
+++ b/src/dynarmic/src/dynarmic/mcl/intrusive_list.hpp
@@ -9,7 +9,7 @@
#include <iterator>
#include <memory>
#include <type_traits>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
namespace mcl {
diff --git a/src/dynarmic/tests/A32/fuzz_arm.cpp b/src/dynarmic/tests/A32/fuzz_arm.cpp
index e9834a6663..e2546de635 100644
--- a/src/dynarmic/tests/A32/fuzz_arm.cpp
+++ b/src/dynarmic/tests/A32/fuzz_arm.cpp
@@ -16,7 +16,7 @@
#include <catch2/catch_test_macros.hpp>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/fuzz_util.h"
#include "dynarmic/tests/rand_int.h"
diff --git a/src/dynarmic/tests/A32/fuzz_thumb.cpp b/src/dynarmic/tests/A32/fuzz_thumb.cpp
index 7fef968b95..67a01daf9c 100644
--- a/src/dynarmic/tests/A32/fuzz_thumb.cpp
+++ b/src/dynarmic/tests/A32/fuzz_thumb.cpp
@@ -17,7 +17,7 @@
#include <catch2/catch_test_macros.hpp>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/rand_int.h"
#include "dynarmic/tests/unicorn_emu/a32_unicorn.h"
diff --git a/src/dynarmic/tests/A32/test_thumb_instructions.cpp b/src/dynarmic/tests/A32/test_thumb_instructions.cpp
index 6aa1b7389b..f461806384 100644
--- a/src/dynarmic/tests/A32/test_thumb_instructions.cpp
+++ b/src/dynarmic/tests/A32/test_thumb_instructions.cpp
@@ -7,7 +7,7 @@
*/
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/A32/testenv.h"
#include "dynarmic/tests/native/testenv.h"
diff --git a/src/dynarmic/tests/A32/testenv.h b/src/dynarmic/tests/A32/testenv.h
index 6f303a58e9..bebc2566da 100644
--- a/src/dynarmic/tests/A32/testenv.h
+++ b/src/dynarmic/tests/A32/testenv.h
@@ -14,8 +14,8 @@
#include <string>
#include <vector>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/interface/A32/a32.h"
template<typename InstructionType_, u32 infinite_loop_u32>
diff --git a/src/dynarmic/tests/A64/fibonacci.cpp b/src/dynarmic/tests/A64/fibonacci.cpp
index d706118cd2..12c4170f66 100644
--- a/src/dynarmic/tests/A64/fibonacci.cpp
+++ b/src/dynarmic/tests/A64/fibonacci.cpp
@@ -11,7 +11,7 @@
#include <ankerl/unordered_dense.h>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include <oaknut/oaknut.hpp>
#include "dynarmic/interface/A64/a64.h"
diff --git a/src/dynarmic/tests/A64/fp_min_max.cpp b/src/dynarmic/tests/A64/fp_min_max.cpp
index 313b5e5117..cb27342ff9 100644
--- a/src/dynarmic/tests/A64/fp_min_max.cpp
+++ b/src/dynarmic/tests/A64/fp_min_max.cpp
@@ -9,7 +9,7 @@
#include <vector>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/A64/testenv.h"
#include "dynarmic/tests/native/testenv.h"
diff --git a/src/dynarmic/tests/A64/fuzz_with_unicorn.cpp b/src/dynarmic/tests/A64/fuzz_with_unicorn.cpp
index 749cc77126..90df625143 100644
--- a/src/dynarmic/tests/A64/fuzz_with_unicorn.cpp
+++ b/src/dynarmic/tests/A64/fuzz_with_unicorn.cpp
@@ -12,7 +12,7 @@
#include <vector>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/fuzz_util.h"
#include "dynarmic/tests/rand_int.h"
diff --git a/src/dynarmic/tests/A64/testenv.h b/src/dynarmic/tests/A64/testenv.h
index 2b8733a177..c25790e1c9 100644
--- a/src/dynarmic/tests/A64/testenv.h
+++ b/src/dynarmic/tests/A64/testenv.h
@@ -9,8 +9,8 @@
#pragma once
#include <ankerl/unordered_dense.h>
-#include "dynarmic/common/assert.h"
-#include "dynarmic/common/common_types.h"
+#include "common/assert.h"
+#include "common/common_types.h"
#include "dynarmic/interface/A64/a64.h"
using Vector = Dynarmic::A64::Vector;
diff --git a/src/dynarmic/tests/decoder_tests.cpp b/src/dynarmic/tests/decoder_tests.cpp
index 1b406fd915..2a6c0f6a4f 100644
--- a/src/dynarmic/tests/decoder_tests.cpp
+++ b/src/dynarmic/tests/decoder_tests.cpp
@@ -11,7 +11,7 @@
#include <iostream>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/frontend/A32/decoder/asimd.h"
#include "dynarmic/frontend/A32/translate/impl/a32_translate_impl.h"
@@ -20,6 +20,7 @@
using namespace Dynarmic;
+/*
TEST_CASE("ASIMD Decoder: Ensure table order correctness", "[decode][a32][.]") {
const auto table = A32::GetASIMDDecodeTable<A32::TranslatorVisitor>();
@@ -67,4 +68,5 @@ TEST_CASE("ASIMD Decoder: Ensure table order correctness", "[decode][a32][.]") {
x = ((x | mask) + 1) & ~mask;
} while (x != 0);
}
-} \ No newline at end of file
+}
+*/
diff --git a/src/dynarmic/tests/fp/FPToFixed.cpp b/src/dynarmic/tests/fp/FPToFixed.cpp
index e16e4460ed..5df0a066fa 100644
--- a/src/dynarmic/tests/fp/FPToFixed.cpp
+++ b/src/dynarmic/tests/fp/FPToFixed.cpp
@@ -10,7 +10,7 @@
#include <vector>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/rand_int.h"
#include "dynarmic/common/fp/fpcr.h"
diff --git a/src/dynarmic/tests/fp/mantissa_util_tests.cpp b/src/dynarmic/tests/fp/mantissa_util_tests.cpp
index 9d16c3624c..259e30edc7 100644
--- a/src/dynarmic/tests/fp/mantissa_util_tests.cpp
+++ b/src/dynarmic/tests/fp/mantissa_util_tests.cpp
@@ -10,7 +10,7 @@
#include <vector>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/rand_int.h"
#include "dynarmic/common/fp/mantissa_util.h"
diff --git a/src/dynarmic/tests/fp/unpacked_tests.cpp b/src/dynarmic/tests/fp/unpacked_tests.cpp
index a4f10d1273..4fdd4ccc13 100644
--- a/src/dynarmic/tests/fp/unpacked_tests.cpp
+++ b/src/dynarmic/tests/fp/unpacked_tests.cpp
@@ -10,7 +10,7 @@
#include <vector>
#include <catch2/catch_test_macros.hpp>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/rand_int.h"
#include "dynarmic/common/fp/fpcr.h"
diff --git a/src/dynarmic/tests/fuzz_util.cpp b/src/dynarmic/tests/fuzz_util.cpp
index 05f0a9e865..80fdd749ca 100644
--- a/src/dynarmic/tests/fuzz_util.cpp
+++ b/src/dynarmic/tests/fuzz_util.cpp
@@ -12,7 +12,7 @@
#include <fmt/format.h>
#include <fmt/ostream.h>
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/tests/rand_int.h"
#include "dynarmic/common/fp/fpcr.h"
diff --git a/src/dynarmic/tests/fuzz_util.h b/src/dynarmic/tests/fuzz_util.h
index a0b8666969..b14b9a4362 100644
--- a/src/dynarmic/tests/fuzz_util.h
+++ b/src/dynarmic/tests/fuzz_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.
@@ -11,7 +11,7 @@
#include <array>
#include <iosfwd>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
using Vector = std::array<u64, 2>;
diff --git a/src/dynarmic/tests/print_info.cpp b/src/dynarmic/tests/print_info.cpp
index 19e2ca38b2..6d6109d849 100644
--- a/src/dynarmic/tests/print_info.cpp
+++ b/src/dynarmic/tests/print_info.cpp
@@ -19,7 +19,7 @@
#include <fmt/ostream.h>
#include <fmt/ranges.h>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/llvm_disassemble.h"
#include "dynarmic/frontend/A32/a32_location_descriptor.h"
@@ -57,7 +57,7 @@ std::string_view GetNameOfA64Instruction(u32 instruction) {
}
void PrintA32Instruction(u32 instruction) {
- fmt::print("{:08x} {}\n", instruction, Common::DisassembleAArch32(false, 0, (u8*)&instruction, sizeof(instruction)));
+ fmt::print("{:08x} {}\n", instruction, Dynarmic::Common::DisassembleAArch32(false, 0, (u8*)&instruction, sizeof(instruction)));
fmt::print("Name: {}\n", GetNameOfA32Instruction(instruction));
const A32::LocationDescriptor location{0, {}, {}};
@@ -75,7 +75,7 @@ void PrintA32Instruction(u32 instruction) {
}
void PrintA64Instruction(u32 instruction) {
- fmt::print("{:08x} {}\n", instruction, Common::DisassembleAArch64(instruction));
+ fmt::print("{:08x} {}\n", instruction, Dynarmic::Common::DisassembleAArch64(instruction));
fmt::print("Name: {}\n", GetNameOfA64Instruction(instruction));
const A64::LocationDescriptor location{0, {}};
@@ -97,7 +97,7 @@ void PrintThumbInstruction(u32 instruction) {
if (inst_size == 4)
instruction = mcl::bit::swap_halves_32(instruction);
- fmt::print("{:08x} {}\n", instruction, Common::DisassembleAArch32(true, 0, (u8*)&instruction, inst_size));
+ fmt::print("{:08x} {}\n", instruction, Dynarmic::Common::DisassembleAArch32(true, 0, (u8*)&instruction, inst_size));
const A32::LocationDescriptor location{0, A32::PSR{0x1F0}, {}};
IR::Block ir_block{location};
diff --git a/src/dynarmic/tests/rsqrt_test.cpp b/src/dynarmic/tests/rsqrt_test.cpp
index 6af71ede64..5dd52f26da 100644
--- a/src/dynarmic/tests/rsqrt_test.cpp
+++ b/src/dynarmic/tests/rsqrt_test.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.
@@ -9,7 +9,7 @@
#include <catch2/benchmark/catch_benchmark.hpp>
#include <catch2/catch_test_macros.hpp>
#include <fmt/printf.h>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/common/fp/fpcr.h"
#include "dynarmic/common/fp/fpsr.h"
diff --git a/src/dynarmic/tests/test_generator.cpp b/src/dynarmic/tests/test_generator.cpp
index 43203c3e13..dacb8a6004 100644
--- a/src/dynarmic/tests/test_generator.cpp
+++ b/src/dynarmic/tests/test_generator.cpp
@@ -17,7 +17,7 @@
#include <vector>
#include "dynarmic/mcl/bit.hpp"
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "./A32/testenv.h"
#include "./A64/testenv.h"
diff --git a/src/dynarmic/tests/test_reader.cpp b/src/dynarmic/tests/test_reader.cpp
index dd7fccc7d7..1c2cba1c44 100644
--- a/src/dynarmic/tests/test_reader.cpp
+++ b/src/dynarmic/tests/test_reader.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.
@@ -13,7 +13,7 @@
#include <vector>
#include <fmt/format.h>
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "./A32/testenv.h"
#include "./A64/testenv.h"
diff --git a/src/dynarmic/tests/unicorn_emu/a32_unicorn.cpp b/src/dynarmic/tests/unicorn_emu/a32_unicorn.cpp
index 9a17bc5582..c0e1e13d9b 100644
--- a/src/dynarmic/tests/unicorn_emu/a32_unicorn.cpp
+++ b/src/dynarmic/tests/unicorn_emu/a32_unicorn.cpp
@@ -10,7 +10,7 @@
#include <fmt/format.h>
#include "dynarmic/mcl/bit.hpp"
#include "dynarmic/tests/unicorn_emu/a32_unicorn.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#include "dynarmic/tests/A32/testenv.h"
#define CHECKED(expr) do if ((expr)) ASSERT(false && "Call " #expr " failed with error\n"); while (0)
diff --git a/src/dynarmic/tests/unicorn_emu/a32_unicorn.h b/src/dynarmic/tests/unicorn_emu/a32_unicorn.h
index d94724d9f2..98c03db76c 100644
--- a/src/dynarmic/tests/unicorn_emu/a32_unicorn.h
+++ b/src/dynarmic/tests/unicorn_emu/a32_unicorn.h
@@ -19,7 +19,7 @@
# include <unicorn/unicorn.h>
#endif
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/A32/testenv.h"
diff --git a/src/dynarmic/tests/unicorn_emu/a64_unicorn.cpp b/src/dynarmic/tests/unicorn_emu/a64_unicorn.cpp
index c8aa404199..c9a194d50a 100644
--- a/src/dynarmic/tests/unicorn_emu/a64_unicorn.cpp
+++ b/src/dynarmic/tests/unicorn_emu/a64_unicorn.cpp
@@ -8,7 +8,7 @@
#include <fmt/format.h>
#include "dynarmic/tests/unicorn_emu/a64_unicorn.h"
-#include "dynarmic/common/assert.h"
+#include "common/assert.h"
#define CHECKED(expr) do if ((expr)) ASSERT(false && "Call " #expr " failed with error\n"); while (0)
diff --git a/src/dynarmic/tests/unicorn_emu/a64_unicorn.h b/src/dynarmic/tests/unicorn_emu/a64_unicorn.h
index 1bc5b1cb8e..091be950ed 100644
--- a/src/dynarmic/tests/unicorn_emu/a64_unicorn.h
+++ b/src/dynarmic/tests/unicorn_emu/a64_unicorn.h
@@ -19,7 +19,7 @@
# include <unicorn/unicorn.h>
#endif
-#include "dynarmic/common/common_types.h"
+#include "common/common_types.h"
#include "dynarmic/tests/A64/testenv.h"