diff --git a/src/backend/core/RDP.cpp b/src/backend/core/RDP.cpp index fa12cca6..e67576f1 100644 --- a/src/backend/core/RDP.cpp +++ b/src/backend/core/RDP.cpp @@ -16,35 +16,35 @@ void RDP::Reset() { } template <> -__attribute__((always_inline)) void RDP::WriteRDRAM(const size_t idx, const u8 v) { +void RDP::WriteRDRAM(const size_t idx, const u8 v) { if (const size_t real = BYTE_ADDRESS(idx); real < RDRAM_SIZE) [[likely]] { rdram[real] = v; } } template <> -__attribute__((always_inline)) void RDP::WriteRDRAM(const size_t idx, const u16 v) { +void RDP::WriteRDRAM(const size_t idx, const u16 v) { if (const size_t real = HALF_ADDRESS(idx); real < RDRAM_SIZE) [[likely]] { Util::WriteAccess(rdram, real, v); } } template <> -__attribute__((always_inline)) void RDP::WriteRDRAM(const size_t idx, const u32 v) { +void RDP::WriteRDRAM(const size_t idx, const u32 v) { if (idx < RDRAM_SIZE) [[likely]] { Util::WriteAccess(rdram, idx, v); } } template <> -__attribute__((always_inline)) void RDP::WriteRDRAM(const size_t idx, const u64 v) { +void RDP::WriteRDRAM(const size_t idx, const u64 v) { if (idx < RDRAM_SIZE) [[likely]] { Util::WriteAccess(rdram, idx, v); } } template <> -__attribute__((always_inline)) u8 RDP::ReadRDRAM(const size_t idx) { +u8 RDP::ReadRDRAM(const size_t idx) { if (const size_t real = BYTE_ADDRESS(idx); real < RDRAM_SIZE) [[likely]] return rdram[real]; @@ -52,7 +52,7 @@ __attribute__((always_inline)) u8 RDP::ReadRDRAM(const size_t idx) { } template <> -__attribute__((always_inline)) u16 RDP::ReadRDRAM(const size_t idx) { +u16 RDP::ReadRDRAM(const size_t idx) { if (const size_t real = HALF_ADDRESS(idx); real < RDRAM_SIZE) [[likely]] return Util::ReadAccess(rdram, real); @@ -60,7 +60,7 @@ __attribute__((always_inline)) u16 RDP::ReadRDRAM(const size_t idx) { } template <> -__attribute__((always_inline)) u32 RDP::ReadRDRAM(const size_t idx) { +u32 RDP::ReadRDRAM(const size_t idx) { if (idx < RDRAM_SIZE) [[likely]] return Util::ReadAccess(rdram, idx); @@ -68,7 +68,7 @@ __attribute__((always_inline)) u32 RDP::ReadRDRAM(const size_t idx) { } template <> -__attribute__((always_inline)) u64 RDP::ReadRDRAM(const size_t idx) { +u64 RDP::ReadRDRAM(const size_t idx) { if (idx < RDRAM_SIZE) [[likely]] return Util::ReadAccess(rdram, idx); diff --git a/src/backend/core/RDP.hpp b/src/backend/core/RDP.hpp index c0c13d53..e8e3ff42 100644 --- a/src/backend/core/RDP.hpp +++ b/src/backend/core/RDP.hpp @@ -79,9 +79,9 @@ struct RDP { } template - __attribute__((always_inline)) void WriteRDRAM(size_t, T); + void WriteRDRAM(size_t, T); template - __attribute__((always_inline)) T ReadRDRAM(size_t); + T ReadRDRAM(size_t); private: friend struct Mem; diff --git a/src/backend/core/registers/Registers.cpp b/src/backend/core/registers/Registers.cpp index b51d694b..00b8670a 100644 --- a/src/backend/core/registers/Registers.cpp +++ b/src/backend/core/registers/Registers.cpp @@ -33,48 +33,48 @@ void Registers::SetPC32(s32 val) { } template <> -__attribute__((always_inline)) u64 Registers::Read(size_t idx) { +u64 Registers::Read(size_t idx) { return gpr[idx]; } template <> -__attribute__((always_inline)) s64 Registers::Read(const size_t idx) { +s64 Registers::Read(const size_t idx) { return static_cast(Read(idx)); } template <> -__attribute__((always_inline)) u32 Registers::Read(size_t idx) { +u32 Registers::Read(size_t idx) { return gpr[idx]; } template <> -__attribute__((always_inline)) s32 Registers::Read(size_t idx) { +s32 Registers::Read(size_t idx) { return static_cast(Read(idx)); } template <> -__attribute__((always_inline)) u16 Registers::Read(size_t idx) { +u16 Registers::Read(size_t idx) { return gpr[idx]; } template <> -__attribute__((always_inline)) s16 Registers::Read(size_t idx) { +s16 Registers::Read(size_t idx) { return static_cast(Read(idx)); } template <> -__attribute__((always_inline)) u8 Registers::Read(size_t idx) { +u8 Registers::Read(size_t idx) { return gpr[idx]; } template <> -__attribute__((always_inline)) s8 Registers::Read(size_t idx) { +s8 Registers::Read(size_t idx) { return static_cast(Read(idx)); } #ifndef __aarch64__ template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt64(), Read(idx)); return; @@ -84,7 +84,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt64(), Read(idx)); return; @@ -94,7 +94,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt32(), Read(idx)); return; @@ -104,7 +104,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt32(), Read(idx)); return; @@ -114,7 +114,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt16(), Read(idx)); return; @@ -124,7 +124,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt16(), Read(idx)); return; @@ -134,7 +134,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt8(), Read(idx)); return; @@ -144,7 +144,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg r } template <> -__attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg reg) { +void Registers::Read(size_t idx, Xbyak::Reg reg) { if(IsRegConstant(idx)) { jit->code.mov(reg.cvt8(), Read(idx)); return; @@ -155,7 +155,7 @@ __attribute__((always_inline)) void Registers::Read(size_t idx, Xbyak::Reg r #endif template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, bool v) { +void Registers::Write(size_t idx, bool v) { if (idx == 0) return; @@ -166,7 +166,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, bool v) { } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, u64 v) { +void Registers::Write(size_t idx, u64 v) { if (idx == 0) return; @@ -176,12 +176,12 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, u64 v) { } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, s64 v) { +void Registers::Write(size_t idx, s64 v) { Write(idx, v); } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, u32 v) { +void Registers::Write(size_t idx, u32 v) { if (idx == 0) return; @@ -192,7 +192,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, u32 v) { template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, s32 v) { +void Registers::Write(size_t idx, s32 v) { if (idx == 0) return; @@ -202,7 +202,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, s32 v) { } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, u16 v) { +void Registers::Write(size_t idx, u16 v) { if (idx == 0) return; @@ -213,7 +213,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, u16 v) { template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, s16 v) { +void Registers::Write(size_t idx, s16 v) { if (idx == 0) return; @@ -223,7 +223,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, s16 v) { } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, u8 v) { +void Registers::Write(size_t idx, u8 v) { if (idx == 0) return; @@ -234,7 +234,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, u8 v) { template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, s8 v) { +void Registers::Write(size_t idx, s8 v) { if (idx == 0) return; @@ -245,7 +245,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, s8 v) { #ifndef __aarch64__ template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -259,7 +259,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Re } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -273,7 +273,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -287,7 +287,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -301,7 +301,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -315,7 +315,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -329,7 +329,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -343,7 +343,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { if (idx == 0) return; @@ -356,7 +356,7 @@ __attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg } template <> -__attribute__((always_inline)) void Registers::Write(size_t idx, Xbyak::Reg v) { +void Registers::Write(size_t idx, Xbyak::Reg v) { Write(idx, v); } #endif diff --git a/src/backend/core/registers/Registers.hpp b/src/backend/core/registers/Registers.hpp index 3784f8dd..f1a1d3e9 100644 --- a/src/backend/core/registers/Registers.hpp +++ b/src/backend/core/registers/Registers.hpp @@ -4,6 +4,7 @@ #include namespace n64 { +struct JIT; struct Registers { Registers(); void Reset(); @@ -66,13 +67,13 @@ struct Registers { } template - __attribute__((always_inline)) T Read(size_t); + T Read(size_t); template - __attribute__((always_inline)) void Read(size_t, Xbyak::Reg); + void Read(size_t, Xbyak::Reg); template - __attribute__((always_inline)) void Write(size_t, T); + void Write(size_t, T); template - __attribute__((always_inline)) void Write(size_t, Xbyak::Reg); + void Write(size_t, Xbyak::Reg); std::array gpr{}; };