From 670770e24a5469cc27f357ff601fd876b5cfb1bc Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 30 Dec 2024 20:38:23 +0100 Subject: [ARM64_DYNAREC] Small improvement to MULX opcode --- src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c index 30d6d331..f8d37d0a 100644 --- a/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c +++ b/src/dynarec/arm64/dynarec_arm64_avx_f2_0f38.c @@ -69,9 +69,15 @@ uintptr_t dynarec64_AVX_F2_0F38(dynarec_arm_t* dyn, uintptr_t addr, uintptr_t ip GETVD; if(rex.w) { // 64bits mul - UMULH(x3, xRDX, ed); + if((gd==xRDX) || (gd==ed) || (gd==vd)) + gb1 = x3; + else + gb1 = gd; + UMULH(gb1, xRDX, ed); MULx(vd, xRDX, ed); - MOVx_REG(gd, x3); + if(gb1==x3) { + MOVx_REG(gd, gb1); + } } else { // 32bits mul UMULL(x3, xRDX, ed); -- cgit 1.4.1