From 43e8d0d7fc45f274d7320df385fc9dfe5ddbea77 Mon Sep 17 00:00:00 2001 From: Merry Date: Fri, 20 Jan 2023 16:19:46 +0000 Subject: [PATCH] emit_x64_vector: Fix vector upper output of EmitVectorSignedSaturatedNarrowToSigned --- src/dynarmic/backend/x64/emit_x64_vector.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/dynarmic/backend/x64/emit_x64_vector.cpp b/src/dynarmic/backend/x64/emit_x64_vector.cpp index 4191f73c..381e9f15 100644 --- a/src/dynarmic/backend/x64/emit_x64_vector.cpp +++ b/src/dynarmic/backend/x64/emit_x64_vector.cpp @@ -4245,10 +4245,11 @@ static void EmitVectorSignedSaturatedNarrowToSigned(size_t original_esize, Block const Xbyak::Xmm sign = ctx.reg_alloc.ScratchXmm(); code.movdqa(dest, src); + code.pxor(xmm0, xmm0); switch (original_esize) { case 16: - code.packsswb(dest, dest); + code.packsswb(dest, xmm0); code.movdqa(sign, src); code.psraw(sign, 15); code.packsswb(sign, sign); @@ -4256,7 +4257,7 @@ static void EmitVectorSignedSaturatedNarrowToSigned(size_t original_esize, Block code.punpcklbw(reconstructed, sign); break; case 32: - code.packssdw(dest, dest); + code.packssdw(dest, xmm0); code.movdqa(reconstructed, dest); code.movdqa(sign, dest); code.psraw(sign, 15);