Implement rlwnm

This commit is contained in:
CRACKbomber 2025-05-23 14:48:12 -04:00
parent 18049b417a
commit 3fbe687fe1

View file

@ -1421,6 +1421,14 @@ bool Recompiler::Recompile(
println("\t{}.compare<int32_t>({}.s32, 0, {});", cr(0), r(insn.operands[0]), xer());
break;
case PPC_INST_RLWNM:
println("\t{}.u64 = __builtin_rotateleft64({}.u32 | ({}.u64 << 32), {}.u8 & 0x1F) & 0x{:X};",
r(insn.operands[0]), r(insn.operands[1]), r(insn.operands[1]),
r(insn.operands[2]), ComputeMask(insn.operands[3] + 32, insn.operands[4] + 32));
if (strchr(insn.opcode->name, '.'))
println("\t{}.compare<int32_t>({}.s32, 0, {});", cr(0), r(insn.operands[0]), xer());
break;
case PPC_INST_ROTLDI:
println("\t{}.u64 = __builtin_rotateleft64({}.u64, {});", r(insn.operands[0]), r(insn.operands[1]), insn.operands[2]);
break;