diff --git a/rpcs3/Emu/Cell/SPURecompiler.cpp b/rpcs3/Emu/Cell/SPURecompiler.cpp index 598e27becc..170123dbc3 100644 --- a/rpcs3/Emu/Cell/SPURecompiler.cpp +++ b/rpcs3/Emu/Cell/SPURecompiler.cpp @@ -3710,9 +3710,9 @@ public: { const auto a = get_vr(op.ra); const auto b = get_vr(op.rb); - const auto c = eval(get_vr(op.rt) << 31); + const auto x = eval(~get_vr(op.rt) & 1); const auto s = eval(a + b); - set_vr(op.rt, zext(s < a | (s == -1 & c < 0))); + set_vr(op.rt, zext((sext(s < a) | (s & ~x)) == -1)); } void BGX(spu_opcode_t op)