Implement subfme

This commit is contained in:
CRACKbomber 2025-05-23 14:48:30 -04:00 committed by Tom
parent 4e77be82ce
commit fd85a418a8

View file

@ -1744,6 +1744,16 @@ bool Recompiler::Recompile(
println("\t{}.s64 = {} - {}.s64;", r(insn.operands[0]), int32_t(insn.operands[2]), r(insn.operands[1])); println("\t{}.s64 = {} - {}.s64;", r(insn.operands[0]), int32_t(insn.operands[2]), r(insn.operands[1]));
break; break;
case PPC_INST_SUBFME:
println("\t{}.u64 = ~{}.u64 + {}.ca - 1;", temp(), r(insn.operands[1]), xer());
println("\t{}.ca = ({}.u64 < ~{}.u64) || ({}.u64 == ~{}.u64 && {}.ca);", xer(),
temp(), r(insn.operands[1]), temp(), r(insn.operands[1]), xer());
println("\t{}.u64 = {}.u64;", r(insn.operands[0]), temp());
if (strchr(insn.opcode->name, '.'))
println("\t{}.compare<int32_t>({}.s32, 0, {});",
cr(0), r(insn.operands[0]), xer());
break;
case PPC_INST_SYNC: case PPC_INST_SYNC:
// no op // no op
break; break;