diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index 3b759bf16..14b414c8e 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -2612,8 +2612,8 @@ void OpDispatchBuilder::RCRSmallerOp(OpcodeArgs) { // OF is the top two MSBs XOR'd together // Only when Shift == 1, it is undefined otherwise if (!IsSrcConst || SrcConst == 1) { - auto NewOF = _Xor(IR::SizeToOpSize(std::max(4u, GetOpSize(Res))), _Bfe(OpSize::i64Bit, 1, Size - 1, Res), _Bfe(OpSize::i64Bit, 1, Size - 2, Res)); - SetRFLAG(NewOF); + auto NewOF = _XorShift(IR::SizeToOpSize(std::max(4u, GetOpSize(Res))), Res, Res, ShiftType::LSR, 1); + SetRFLAG(NewOF, Size - 2, true); } }); }