[CPU] Fixed bug in VECTOR_SHL_V128 implementation

- For EmitInt8 there was missing check for & 7 which was causing graphical glitches in movies

- There is probably similar bug in 16/32 version, but that's for another commit
This commit is contained in:
Gliniak
2026-02-11 22:25:16 +01:00
parent 8f5da619f9
commit 14c2814654

View File

@@ -935,6 +935,10 @@ struct VECTOR_SHL_V128
e.vpmovzxbd(e.ymm2, i.src2);
e.vpmovzxbd(e.ymm3, e.xmm3);
e.vpbroadcastd(e.ymm4, e.GetXmmConstPtr(XMMXOPByteShiftMask));
e.vpand(e.ymm2, e.ymm2, e.ymm4);
e.vpand(e.ymm3, e.ymm3, e.ymm4);
e.vpsllvd(e.ymm0, e.ymm0, e.ymm2);
e.vpsllvd(e.ymm1, e.ymm1, e.ymm3);
e.vextracti128(e.xmm2, e.ymm0, 1);
@@ -985,6 +989,10 @@ struct VECTOR_SHL_V128
e.vpmovzxbd(e.ymm2, e.xmm2);
e.vpmovzxbd(e.ymm3, e.xmm3);
e.vpbroadcastd(e.ymm4, e.GetXmmConstPtr(XMMXOPByteShiftMask));
e.vpand(e.ymm2, e.ymm2, e.ymm4);
e.vpand(e.ymm3, e.ymm3, e.ymm4);
e.vpsllvd(e.ymm0, e.ymm0, e.ymm2);
e.vpsllvd(e.ymm1, e.ymm1, e.ymm3);
e.vextracti128(e.xmm2, e.ymm0, 1);
@@ -1025,7 +1033,7 @@ 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.shl(e.byte[e.rsp + stack_offset_src1 + e.rdx], e.cl);
if (e.IsFeatureEnabled(kX64FlagsIndependentVars)) {