aboutsummaryrefslogtreecommitdiff
path: root/src/core/arm/nce/interpreter_visitor.cpp
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2025-11-08 00:42:10 +0100
committercrueter <crueter@eden-emu.dev>2025-11-08 00:42:10 +0100
commit84cf3e8c84b785363fd89464ae9bb22fd3cf007e (patch)
tree8b739040b61fa8581bc87a4aee6c7c3955389741 /src/core/arm/nce/interpreter_visitor.cpp
parent45a2008aa6c7c43da6182cb3d6c96b7ab86902ac (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.cpp32
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);