From 8651fd78d81c02f6a0f7f635915e03d7c18850b7 Mon Sep 17 00:00:00 2001 From: Hog Date: Wed, 24 Jun 2026 13:15:23 +0100 Subject: [PATCH] Change atomic operation from And to Or in IREmitter (#4612) We used the wrong opcodes before --- src/shader_recompiler/ir/ir_emitter.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/shader_recompiler/ir/ir_emitter.cpp b/src/shader_recompiler/ir/ir_emitter.cpp index 63732fb96..9bfb2295c 100644 --- a/src/shader_recompiler/ir/ir_emitter.cpp +++ b/src/shader_recompiler/ir/ir_emitter.cpp @@ -372,13 +372,12 @@ U32U64 IREmitter::SharedAtomicAnd(const U32& address, const U32U64& data, bool i U32U64 IREmitter::SharedAtomicOr(const U32& address, const U32U64& data, bool is_gds) { switch (data.Type()) { case Type::U32: - return Inst(Opcode::SharedAtomicAnd32, Flags{is_gds}, address, data); + return Inst(Opcode::SharedAtomicOr32, Flags{is_gds}, address, data); case Type::U64: - return Inst(Opcode::SharedAtomicAnd64, Flags{is_gds}, address, data); + return Inst(Opcode::SharedAtomicOr64, Flags{is_gds}, address, data); default: ThrowInvalidType(data.Type()); } - return Inst(Opcode::SharedAtomicOr32, address, data); } U32U64 IREmitter::SharedAtomicXor(const U32& address, const U32U64& data, bool is_gds) {