diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2025-05-03 10:33:55 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2025-05-03 10:33:55 +0200 |
| commit | 6203880a5f9ff685378e345dcfa7afafc84ea488 (patch) | |
| tree | 0d982e041614628125baaf34c9062567e3ee71ca /src | |
| parent | 889dd64c5fca32b2d12e8ca622df199a7c932144 (diff) | |
| download | box64-6203880a5f9ff685378e345dcfa7afafc84ea488.tar.gz box64-6203880a5f9ff685378e345dcfa7afafc84ea488.zip | |
[ARM64_DYNAREC] Better log for scratch after ymm warning
Diffstat (limited to 'src')
| -rw-r--r-- | src/dynarec/arm64/dynarec_arm64_functions.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c index dec9c2d9..25b885f0 100644 --- a/src/dynarec/arm64/dynarec_arm64_functions.c +++ b/src/dynarec/arm64/dynarec_arm64_functions.c @@ -30,7 +30,11 @@ int fpu_get_scratch(dynarec_arm_t* dyn, int ninst) { int ret = SCRATCH0 + dyn->n.fpu_scratch++; - if(dyn->n.ymm_used) printf_log(LOG_INFO, "Warning, getting a scratch register after getting some YMM at inst=%d\n", ninst); + if(dyn->n.ymm_used) { + printf_log(LOG_INFO, "Warning, getting a scratch register after getting some YMM at inst=%d", ninst); + uint8_t* addr = (uint8_t*)dyn->insts[ninst].x64.addr; + printf_log_prefix(0, LOG_INFO, "(%hhX %hhX %hhX %hhX %hhX %hhX %hhX %hhX)\n", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]); + } if(dyn->n.neoncache[ret].t==NEON_CACHE_YMMR || dyn->n.neoncache[ret].t==NEON_CACHE_YMMW) { // should only happens in step 0... dyn->insts[ninst].purge_ymm |= (1<<dyn->n.neoncache[ret].n); // mark as purged @@ -42,7 +46,11 @@ int fpu_get_scratch(dynarec_arm_t* dyn, int ninst) int fpu_get_double_scratch(dynarec_arm_t* dyn, int ninst) { int ret = SCRATCH0 + dyn->n.fpu_scratch; - if(dyn->n.ymm_used) printf_log(LOG_INFO, "Warning, getting a double scratch register after getting some YMM at inst=%d\n", ninst); + if(dyn->n.ymm_used) { + printf_log(LOG_INFO, "Warning, getting a double scratch register after getting some YMM at inst=%d", ninst); + uint8_t* addr = (uint8_t*)dyn->insts[ninst].x64.addr; + printf_log_prefix(0, LOG_INFO, "(%hhX %hhX %hhX %hhX %hhX %hhX %hhX %hhX)\n", addr[0], addr[1], addr[2], addr[3], addr[4], addr[5], addr[6], addr[7]); + } if(dyn->n.neoncache[ret].t==NEON_CACHE_YMMR || dyn->n.neoncache[ret].t==NEON_CACHE_YMMW) { // should only happens in step 0... dyn->insts[ninst].purge_ymm |= (1<<dyn->n.neoncache[ret].n); // mark as purged |