From 341a735142c67cd088cef7a0021c8fc24ab36284 Mon Sep 17 00:00:00 2001 From: "Herman S." <429230+has207@users.noreply.github.com> Date: Tue, 14 Oct 2025 14:49:56 +0900 Subject: [PATCH] [x64] Fix vector mask issue and add missing tests --- src/xenia/cpu/backend/x64/x64_seq_vector.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/xenia/cpu/backend/x64/x64_seq_vector.cc b/src/xenia/cpu/backend/x64/x64_seq_vector.cc index 91a659cae..a1436f175 100644 --- a/src/xenia/cpu/backend/x64/x64_seq_vector.cc +++ b/src/xenia/cpu/backend/x64/x64_seq_vector.cc @@ -934,6 +934,7 @@ struct VECTOR_SHL_V128 e.vpmovzxbd(e.ymm2, i.src2); e.vpmovzxbd(e.ymm3, e.xmm3); + // Mask shift counts to 3 bits (0-7) for byte shifts e.vpbroadcastd(e.ymm4, e.GetXmmConstPtr(XMMXOPByteShiftMask)); e.vpand(e.ymm2, e.ymm2, e.ymm4); e.vpand(e.ymm3, e.ymm3, e.ymm4); @@ -1032,7 +1033,8 @@ struct VECTOR_SHL_V128 e.L(looper); e.movzx(e.ecx, e.byte[e.rsp + stack_offset_src2 + e.rdx]); - e.and_(e.ecx, 7); + e.and_(e.cl, 7); // Mask shift count to 3 bits (0-7) for byte shifts + e.shl(e.byte[e.rsp + stack_offset_src1 + e.rdx], e.cl); if (e.IsFeatureEnabled(kX64FlagsIndependentVars)) {