From 6203880a5f9ff685378e345dcfa7afafc84ea488 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 3 May 2025 10:33:55 +0200 Subject: [ARM64_DYNAREC] Better log for scratch after ymm warning --- src/dynarec/arm64/dynarec_arm64_functions.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src') 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<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<n.neoncache[ret].n); // mark as purged -- cgit 1.4.1