diff options
| author | gibbed <rick@gibbed.us> | 2019-11-30 18:47:32 -0600 |
|---|---|---|
| committer | Rick Gibbed <rick@gibbed.us> | 2019-11-30 20:08:10 -0600 |
| commit | 04a54cc58f9a60d8736aca619af854c8d5dbf529 (patch) | |
| tree | 617c7a6d880bb5029fe96018c0b06d5ab1368a34 | |
| parent | f7a8c5ce7a8f78a45878c346639ced7c35f4016a (diff) | |
[x64] Fix constant src2 in VECTOR_ROTATE_LEFT_V128.
| -rw-r--r-- | src/xenia/cpu/backend/x64/x64_seq_vector.cc | 7 |
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)); |
