|
|
|
@ -239,10 +239,10 @@ void MacroJITx64Impl::Compile_ExtractInsert(Macro::Opcode opcode) { |
|
|
|
} |
|
|
|
|
|
|
|
void MacroJITx64Impl::Compile_ExtractShiftLeftImmediate(Macro::Opcode opcode) { |
|
|
|
auto dst = Compile_GetRegister(opcode.src_a, eax); |
|
|
|
auto src = Compile_GetRegister(opcode.src_b, RESULT); |
|
|
|
const auto dst = Compile_GetRegister(opcode.src_a, eax); |
|
|
|
const auto src = Compile_GetRegister(opcode.src_b, RESULT); |
|
|
|
|
|
|
|
shr(src, al); |
|
|
|
shr(src, dst.cvt8()); |
|
|
|
if (opcode.bf_size != 0 && opcode.bf_size != 31) { |
|
|
|
and_(src, opcode.GetBitfieldMask()); |
|
|
|
} else if (opcode.bf_size == 0) { |
|
|
|
@ -258,8 +258,8 @@ void MacroJITx64Impl::Compile_ExtractShiftLeftImmediate(Macro::Opcode opcode) { |
|
|
|
} |
|
|
|
|
|
|
|
void MacroJITx64Impl::Compile_ExtractShiftLeftRegister(Macro::Opcode opcode) { |
|
|
|
auto dst = Compile_GetRegister(opcode.src_a, eax); |
|
|
|
auto src = Compile_GetRegister(opcode.src_b, RESULT); |
|
|
|
const auto dst = Compile_GetRegister(opcode.src_a, eax); |
|
|
|
const auto src = Compile_GetRegister(opcode.src_b, RESULT); |
|
|
|
|
|
|
|
if (opcode.bf_src_bit != 0) { |
|
|
|
shr(src, opcode.bf_src_bit); |
|
|
|
@ -268,7 +268,8 @@ void MacroJITx64Impl::Compile_ExtractShiftLeftRegister(Macro::Opcode opcode) { |
|
|
|
if (opcode.bf_size != 31) { |
|
|
|
and_(src, opcode.GetBitfieldMask()); |
|
|
|
} |
|
|
|
shl(src, al); |
|
|
|
shl(src, dst.cvt8()); |
|
|
|
|
|
|
|
Compile_ProcessResult(opcode.result_operation, opcode.dst); |
|
|
|
} |
|
|
|
|
|
|
|
|