Micro-optimization: RDP access wrappers are now force inlined

This commit is contained in:
SimoZ64
2025-07-23 22:31:56 +02:00
parent ccc63c3dbf
commit 3b5ed1a160
2 changed files with 10 additions and 10 deletions

View File

@@ -20,35 +20,35 @@ void RDP::Reset() {
}
template <>
void RDP::WriteRDRAM<u8>(const size_t idx, const u8 v) {
__attribute__((always_inline)) void RDP::WriteRDRAM<u8>(const size_t idx, const u8 v) {
if (const size_t real = BYTE_ADDRESS(idx); real < RDRAM_SIZE) [[likely]] {
rdram[real] = v;
}
}
template <>
void RDP::WriteRDRAM<u16>(const size_t idx, const u16 v) {
__attribute__((always_inline)) void RDP::WriteRDRAM<u16>(const size_t idx, const u16 v) {
if (const size_t real = HALF_ADDRESS(idx); real < RDRAM_SIZE) [[likely]] {
Util::WriteAccess<u16>(rdram, real, v);
}
}
template <>
void RDP::WriteRDRAM<u32>(const size_t idx, const u32 v) {
__attribute__((always_inline)) void RDP::WriteRDRAM<u32>(const size_t idx, const u32 v) {
if (idx < RDRAM_SIZE) [[likely]] {
Util::WriteAccess<u32>(rdram, idx, v);
}
}
template <>
void RDP::WriteRDRAM<u64>(const size_t idx, const u64 v) {
__attribute__((always_inline)) void RDP::WriteRDRAM<u64>(const size_t idx, const u64 v) {
if (idx < RDRAM_SIZE) [[likely]] {
Util::WriteAccess<u64>(rdram, idx, v);
}
}
template <>
u8 RDP::ReadRDRAM<u8>(const size_t idx) {
__attribute__((always_inline)) u8 RDP::ReadRDRAM<u8>(const size_t idx) {
if (const size_t real = BYTE_ADDRESS(idx); real < RDRAM_SIZE) [[likely]]
return rdram[real];
@@ -56,7 +56,7 @@ u8 RDP::ReadRDRAM<u8>(const size_t idx) {
}
template <>
u16 RDP::ReadRDRAM<u16>(const size_t idx) {
__attribute__((always_inline)) u16 RDP::ReadRDRAM<u16>(const size_t idx) {
if (const size_t real = HALF_ADDRESS(idx); real < RDRAM_SIZE) [[likely]]
return Util::ReadAccess<u16>(rdram, real);
@@ -64,7 +64,7 @@ u16 RDP::ReadRDRAM<u16>(const size_t idx) {
}
template <>
u32 RDP::ReadRDRAM<u32>(const size_t idx) {
__attribute__((always_inline)) u32 RDP::ReadRDRAM<u32>(const size_t idx) {
if (idx < RDRAM_SIZE) [[likely]]
return Util::ReadAccess<u32>(rdram, idx);
@@ -72,7 +72,7 @@ u32 RDP::ReadRDRAM<u32>(const size_t idx) {
}
template <>
u64 RDP::ReadRDRAM<u64>(const size_t idx) {
__attribute__((always_inline)) u64 RDP::ReadRDRAM<u64>(const size_t idx) {
if (idx < RDRAM_SIZE) [[likely]]
return Util::ReadAccess<u64>(rdram, idx);

View File

@@ -82,9 +82,9 @@ struct RDP {
}
template <typename T>
void WriteRDRAM(size_t, T);
__attribute__((always_inline)) void WriteRDRAM(size_t, T);
template <typename T>
T ReadRDRAM(size_t);
__attribute__((always_inline)) T ReadRDRAM(size_t);
private:
friend struct Mem;