From 05d43945a65a22e7ea634c2fc25c3bb2a8d62da0 Mon Sep 17 00:00:00 2001 From: Ryan Houdek Date: Mon, 28 Sep 2020 18:50:19 -0700 Subject: [PATCH] Fixes a bug in 32bit signed multiply on x86_64 jit We were storing the zexted result instead of the sexted result --- External/FEXCore/Source/Interface/Core/JIT/x86_64/JIT.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/External/FEXCore/Source/Interface/Core/JIT/x86_64/JIT.cpp b/External/FEXCore/Source/Interface/Core/JIT/x86_64/JIT.cpp index d0bd55e4d..d10409f63 100644 --- a/External/FEXCore/Source/Interface/Core/JIT/x86_64/JIT.cpp +++ b/External/FEXCore/Source/Interface/Core/JIT/x86_64/JIT.cpp @@ -1652,8 +1652,7 @@ void *JITCore::CompileCode([[maybe_unused]] FEXCore::IR::IRListView const case 4: movsxd(rax, GetSrc(Op->Header.Args[0].ID())); imul(GetSrc(Op->Header.Args[1].ID())); - movsxd(rax, edx); - mov(GetDst(Node), rdx); + movsxd(GetDst(Node).cvt64(), edx); break; case 8: mov(rax, GetSrc(Op->Header.Args[0].ID()));