summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/video_core/macro/macro_jit_x64.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/video_core/macro/macro_jit_x64.cpp b/src/video_core/macro/macro_jit_x64.cpp
index 63e7ca416..4eef342ec 100644
--- a/src/video_core/macro/macro_jit_x64.cpp
+++ b/src/video_core/macro/macro_jit_x64.cpp
@@ -239,10 +239,10 @@ void MacroJITx64Impl::Compile_ExtractInsert(Macro::Opcode opcode) {
239} 239}
240 240
241void MacroJITx64Impl::Compile_ExtractShiftLeftImmediate(Macro::Opcode opcode) { 241void MacroJITx64Impl::Compile_ExtractShiftLeftImmediate(Macro::Opcode opcode) {
242 auto dst = Compile_GetRegister(opcode.src_a, eax); 242 const auto dst = Compile_GetRegister(opcode.src_a, eax);
243 auto src = Compile_GetRegister(opcode.src_b, RESULT); 243 const auto src = Compile_GetRegister(opcode.src_b, RESULT);
244 244
245 shr(src, al); 245 shr(src, dst.cvt8());
246 if (opcode.bf_size != 0 && opcode.bf_size != 31) { 246 if (opcode.bf_size != 0 && opcode.bf_size != 31) {
247 and_(src, opcode.GetBitfieldMask()); 247 and_(src, opcode.GetBitfieldMask());
248 } else if (opcode.bf_size == 0) { 248 } else if (opcode.bf_size == 0) {
@@ -258,8 +258,8 @@ void MacroJITx64Impl::Compile_ExtractShiftLeftImmediate(Macro::Opcode opcode) {
258} 258}
259 259
260void MacroJITx64Impl::Compile_ExtractShiftLeftRegister(Macro::Opcode opcode) { 260void MacroJITx64Impl::Compile_ExtractShiftLeftRegister(Macro::Opcode opcode) {
261 auto dst = Compile_GetRegister(opcode.src_a, eax); 261 const auto dst = Compile_GetRegister(opcode.src_a, eax);
262 auto src = Compile_GetRegister(opcode.src_b, RESULT); 262 const auto src = Compile_GetRegister(opcode.src_b, RESULT);
263 263
264 if (opcode.bf_src_bit != 0) { 264 if (opcode.bf_src_bit != 0) {
265 shr(src, opcode.bf_src_bit); 265 shr(src, opcode.bf_src_bit);
@@ -268,7 +268,8 @@ void MacroJITx64Impl::Compile_ExtractShiftLeftRegister(Macro::Opcode opcode) {
268 if (opcode.bf_size != 31) { 268 if (opcode.bf_size != 31) {
269 and_(src, opcode.GetBitfieldMask()); 269 and_(src, opcode.GetBitfieldMask());
270 } 270 }
271 shl(src, al); 271 shl(src, dst.cvt8());
272
272 Compile_ProcessResult(opcode.result_operation, opcode.dst); 273 Compile_ProcessResult(opcode.result_operation, opcode.dst);
273} 274}
274 275