diff --git a/src/dynarmic/src/dynarmic/backend/arm64/abi.h b/src/dynarmic/src/dynarmic/backend/arm64/abi.h index 8fb63ac71d..c8da6ccfa4 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 -#include -#include #include "common/common_types.h" #include "common/assert.h" #include -#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 +template constexpr auto Rscratch0() { if constexpr (bitsize == 32) { return Wscratch0; @@ -40,7 +37,7 @@ constexpr auto Rscratch0() { } } -template +template constexpr auto Rscratch1() { if constexpr (bitsize == 32) { return Wscratch1; 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 ef21fd45bd..eccd030207 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 #include -#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" @@ -1102,7 +1101,7 @@ void EmitIR(oaknut::CodeGenerator& code, EmitContext& c [&](auto& Xresult, auto& Xa, auto& Xb) { code.SDIV(Xresult, Xa, Xb); }); } -template +template 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 +template static void MaybeBitImm(oaknut::CodeGenerator& code, u64 imm, EmitFn emit_fn) { static_assert(bitsize == 32 || bitsize == 64); if constexpr (bitsize == 32) { 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 67ab61f8a3..a80b2da739 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 #include +#include #include #include @@ -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 { @@ -131,7 +131,7 @@ LinkTarget ExclusiveWriteMemoryLinkTarget(size_t bitsize) { UNREACHABLE(); } -template +template 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 +template 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 +template 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 +template 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]); @@ -215,7 +215,7 @@ constexpr size_t page_mask = (1 << page_bits) - 1; // This function may use Xscratch0 as a scratch register // Trashes NZCV -template +template 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,7 +253,7 @@ 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 +template std::pair 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_bits; const size_t unused_top_bits = 64 - ctx.conf.page_table_address_space_bits; @@ -408,7 +408,7 @@ CodePtr EmitMemoryStr(oaknut::CodeGenerator& code, int value_idx, oaknut::XReg X return fastmem_location; } -template +template 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 +template 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 +template std::pair 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 FastmemEmitVAddrLookup(oaknut::CodeGenerat return std::make_pair(Xfastmem, Xaddr); } -template +template 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 +template 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 +template void EmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) { if (const auto marker = ShouldFastmem(ctx, inst)) { FastmemEmitReadMemory(code, ctx, inst, *marker); @@ -644,12 +644,12 @@ void EmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* ins } } -template +template void EmitExclusiveReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) { CallbackOnlyEmitExclusiveReadMemory(code, ctx, inst); } -template +template void EmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) { if (const auto marker = ShouldFastmem(ctx, inst)) { FastmemEmitWriteMemory(code, ctx, inst, *marker); @@ -660,7 +660,7 @@ void EmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* in } } -template +template void EmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst) { CallbackOnlyEmitExclusiveWriteMemory(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 c82a5b5b4f..25608dbfe3 100644 --- a/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.h +++ b/src/dynarmic/src/dynarmic/backend/arm64/emit_arm64_memory.h @@ -6,7 +6,7 @@ * SPDX-License-Identifier: 0BSD */ -#include "common/common_types.h" +#include namespace oaknut { struct CodeGenerator; @@ -23,13 +23,13 @@ namespace Dynarmic::Backend::Arm64 { struct EmitContext; enum class LinkTarget; -template +template void EmitReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst); -template +template void EmitExclusiveReadMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst); -template +template void EmitWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst); -template +template void EmitExclusiveWriteMemory(oaknut::CodeGenerator& code, EmitContext& ctx, IR::Inst* inst); } // namespace Dynarmic::Backend::Arm64 diff --git a/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h b/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h index 1bbcc33b9f..c0aca09bab 100644 --- a/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h +++ b/src/dynarmic/src/dynarmic/backend/arm64/fpsr_manager.h @@ -8,7 +8,7 @@ #pragma once -#include "common/common_types.h" +#include 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; };