diff --git a/GPU/Common/VertexDecoderX86.cpp b/GPU/Common/VertexDecoderX86.cpp index 13aabe2df3e7..3618071c763c 100644 --- a/GPU/Common/VertexDecoderX86.cpp +++ b/GPU/Common/VertexDecoderX86.cpp @@ -1391,7 +1391,13 @@ void VertexDecoderJitCache::Jit_PosFloatThrough() { CVTTPS2DQ(fpScratchReg, R(fpScratchReg)); // Use pack to saturate to 0,65535. - PACKUSDW(fpScratchReg, R(fpScratchReg)); + if (cpu_info.bSSE4_1) { + PACKUSDW(fpScratchReg, R(fpScratchReg)); + } else { + PSLLD(fpScratchReg, 16); + PSRAD(fpScratchReg, 16); + PACKSSDW(fpScratchReg, R(fpScratchReg)); + } PUNPCKLWD(fpScratchReg, R(fpScratchReg2)); CVTDQ2PS(fpScratchReg, R(fpScratchReg));