diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp index 7cf2305d5a..3cf722409a 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_Integer.cpp @@ -1451,6 +1451,14 @@ void JitArm64::subfcx(UGeckoInstruction inst) if (inst.Rc) ComputeRC0(gpr.R(d)); } + else if (gpr.IsImm(a) && ((gpr.GetImm(a) & 0xFFF000) == gpr.GetImm(a))) + { + gpr.BindToRegister(d, d == b); + CARRY_IF_NEEDED(SUB, SUBS, gpr.R(d), gpr.R(b), gpr.GetImm(a) >> 12, true); + ComputeCarry(); + if (inst.Rc) + ComputeRC0(gpr.R(d)); + } else if (gpr.IsImm(b, 0)) { gpr.BindToRegister(d, d == a);