summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgibbed <rick@gibbed.us>2019-11-30 18:47:32 -0600
committerRick Gibbed <rick@gibbed.us>2019-11-30 20:08:10 -0600
commit04a54cc58f9a60d8736aca619af854c8d5dbf529 (patch)
tree617c7a6d880bb5029fe96018c0b06d5ab1368a34
parentf7a8c5ce7a8f78a45878c346639ced7c35f4016a (diff)
[x64] Fix constant src2 in VECTOR_ROTATE_LEFT_V128.
-rw-r--r--src/xenia/cpu/backend/x64/x64_seq_vector.cc7
1 files changed, 6 insertions, 1 deletions
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));