From 04a54cc58f9a60d8736aca619af854c8d5dbf529 Mon Sep 17 00:00:00 2001 From: gibbed Date: Sat, 30 Nov 2019 18:47:32 -0600 Subject: [PATCH] [x64] Fix constant src2 in VECTOR_ROTATE_LEFT_V128. --- src/xenia/cpu/backend/x64/x64_seq_vector.cc | 7 ++++++- 1 file changed, 6 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 8cc36eb8d..50ba713f9 100644 --- a/src/xenia/cpu/backend/x64/x64_seq_vector.cc +++ b/src/xenia/cpu/backend/x64/x64_seq_vector.cc @@ -1252,7 +1252,12 @@ struct VECTOR_ROTATE_LEFT_V128 temp = e.xmm2; } // Shift left (to get high bits): - e.vpand(e.xmm0, i.src2, e.GetXmmConstPtr(XMMShiftMaskPS)); + if (i.src2.is_constant) { + e.LoadConstantXmm(temp, i.src2.constant()); + e.vpand(e.xmm0, temp, e.GetXmmConstPtr(XMMShiftMaskPS)); + } else { + e.vpand(e.xmm0, i.src2, e.GetXmmConstPtr(XMMShiftMaskPS)); + } e.vpsllvd(e.xmm1, i.src1, e.xmm0); // Shift right (to get low bits): e.vmovaps(temp, e.GetXmmConstPtr(XMMPI32));