diff options
| author | lizzie <lizzie@eden-emu.dev> | 2025-11-08 00:42:10 +0100 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2025-11-08 00:42:10 +0100 |
| commit | 84cf3e8c84b785363fd89464ae9bb22fd3cf007e (patch) | |
| tree | 8b739040b61fa8581bc87a4aee6c7c3955389741 /src/core/arm/nce/interpreter_visitor.cpp | |
| parent | 45a2008aa6c7c43da6182cb3d6c96b7ab86902ac (diff) | |
[nce] remove software prefetching instances (#2857)
May be a complete hit or miss on performance with NCE
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2857
Reviewed-by: crueter <crueter@eden-emu.dev>
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com>
Co-authored-by: lizzie <lizzie@eden-emu.dev>
Co-committed-by: lizzie <lizzie@eden-emu.dev>
Diffstat (limited to 'src/core/arm/nce/interpreter_visitor.cpp')
| -rw-r--r-- | src/core/arm/nce/interpreter_visitor.cpp | 32 |
1 files changed, 0 insertions, 32 deletions
diff --git a/src/core/arm/nce/interpreter_visitor.cpp b/src/core/arm/nce/interpreter_visitor.cpp index aa796ed929..78b78f8067 100644 --- a/src/core/arm/nce/interpreter_visitor.cpp +++ b/src/core/arm/nce/interpreter_visitor.cpp @@ -181,14 +181,6 @@ bool InterpreterVisitor::Ordered(size_t size, bool L, bool o0, Reg Rn, Reg Rt) { const size_t dbytes = datasize / 8; u64 address = (Rn == Reg::SP) ? this->GetSp() : this->GetReg(Rn); - - // Conservative prefetch for atomic ops - if (memop == MemOp::Load) { - __builtin_prefetch(reinterpret_cast<const void*>(address), 0, 1); - } else { - __builtin_prefetch(reinterpret_cast<const void*>(address), 1, 1); - } - switch (memop) { case MemOp::Store: { std::atomic_thread_fence(std::memory_order_seq_cst); @@ -435,21 +427,6 @@ bool InterpreterVisitor::RegisterImmediate(bool wback, bool postindex, size_t sc if (!postindex) address += offset; - // Optimized prefetch for loads - if (memop == MemOp::Load) { - const size_t access_size = datasize / 8; - const bool is_aligned = (address % access_size) == 0; - - if (is_aligned) { - __builtin_prefetch(reinterpret_cast<const void*>(address), 0, 3); - if (access_size >= 8 && access_size <= 32) { - __builtin_prefetch(reinterpret_cast<const void*>(address + PREFETCH_STRIDE), 0, 3); - } - } else { - __builtin_prefetch(reinterpret_cast<const void*>(address), 0, 1); - } - } - switch (memop) { case MemOp::Store: { u64 data = this->GetReg(Rt); @@ -516,15 +493,6 @@ bool InterpreterVisitor::SIMDImmediate(bool wback, bool postindex, size_t scale, if (!postindex) address += offset; - // Aggressive prefetch for SIMD - if (memop == MemOp::Load) { - __builtin_prefetch(reinterpret_cast<const void*>(address), 0, 3); - __builtin_prefetch(reinterpret_cast<const void*>(address + CACHE_LINE_SIZE), 0, 3); - if (datasize >= SIMD_PREFETCH_THRESHOLD) { - __builtin_prefetch(reinterpret_cast<const void*>(address + PREFETCH_STRIDE), 0, 3); - } - } - switch (memop) { case MemOp::Store: { u128 data = VectorGetElement(this->GetVec(Vt), datasize); |
