diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index b86df9635..a5b5c945d 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -3084,10 +3084,8 @@ void OpDispatchBuilder::BTROp(OpcodeArgs) { if (DestIsLockedMem(Op)) { HandledLock = true; - BitMask = _Not(OpSize::i64Bit, BitMask); - // XXX: Technically this can optimize to an AArch64 ldclralb // We don't current support this IR op though - Result = _AtomicFetchAnd(OpSize::i8Bit, BitMask, MemoryLocation); + Result = _AtomicFetchCLR(OpSize::i8Bit, BitMask, MemoryLocation); // Now shift in to the correct bit location Result = _Lshr(IR::SizeToOpSize(std::max(4u, GetOpSize(Result))), Result, BitSelect); } else {