about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-06-22 20:33:06 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-06-22 20:33:06 +0200
commitdf228f88294361435c5bab26ef49c1bf8e33945e (patch)
tree80c4073d0c4ed612c1b0a8c9b53136531a065bd9 /src
parentdc2d54edf26dc266e4787b30fa796a4db1339936 (diff)
downloadbox64-df228f88294361435c5bab26ef49c1bf8e33945e.tar.gz
box64-df228f88294361435c5bab26ef49c1bf8e33945e.zip
[ARM64_DYNAREC] Fixed an issue with fpuCacheTransform (possible regression)
Diffstat (limited to 'src')
-rw-r--r--src/dynarec/arm64/dynarec_arm64_helper.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_helper.c b/src/dynarec/arm64/dynarec_arm64_helper.c
index 8d2961d8..f22a4a46 100644
--- a/src/dynarec/arm64/dynarec_arm64_helper.c
+++ b/src/dynarec/arm64/dynarec_arm64_helper.c
@@ -2186,13 +2186,12 @@ static void fpuCacheTransform(dynarec_arm_t* dyn, int ninst, int s1, int s2, int
         }
     }
     int stack_cnt = dyn->n.stack_next;
-    int s3_top = 0xffff;
     neoncache_t cache = dyn->n;
     int s1_val = 0;
     int s2_val = 0;
     // unload every uneeded cache
     // ymm0 first
-    s3_top = 1;
+    int s3_top = 1;
     uint16_t to_purge = dyn->ymm_zero&~dyn->insts[i2].ymm0_in;
     if(dyn->ymm_zero && (dyn->insts[i2].purge_ymm|to_purge)) {
         MESSAGE(LOG_DUMP, "\t- YMM Zero %04x / %04x\n", dyn->ymm_zero, (dyn->insts[i2].purge_ymm|to_purge));
@@ -2205,6 +2204,7 @@ static void fpuCacheTransform(dynarec_arm_t* dyn, int ninst, int s1, int s2, int
                 STPx_S7_offset(xZR, xZR, s3, i*16);
             }
     }
+    s3_top = 0xffff;
     // check SSE first, than MMX, in order, to optimise successive memory write
     for(int i=0; i<16; ++i) {
         int j=findCacheSlot(dyn, ninst, NEON_CACHE_XMMW, i, &cache);