From 12a0a02e38b0969f33c75b137727d3c86ce379da Mon Sep 17 00:00:00 2001
From: Raven <jacky.kk.tsui@gmail.com>
Date: Sat, 14 Sep 2024 23:52:20 +0800
Subject: [PATCH] Map BUFFER_AUTOMIC SMIN/SAMX/AND/OR/XOR/INC/DEC (#910)

---
 .../frontend/translate/vector_memory.cpp          | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/shader_recompiler/frontend/translate/vector_memory.cpp b/src/shader_recompiler/frontend/translate/vector_memory.cpp
index 50c8be65..e0f35fb9 100644
--- a/src/shader_recompiler/frontend/translate/vector_memory.cpp
+++ b/src/shader_recompiler/frontend/translate/vector_memory.cpp
@@ -118,10 +118,25 @@ void Translator::EmitVectorMemory(const GcnInst& inst) {
         return BUFFER_ATOMIC(AtomicOp::Add, inst);
     case Opcode::BUFFER_ATOMIC_SWAP:
         return BUFFER_ATOMIC(AtomicOp::Swap, inst);
+    case Opcode::BUFFER_ATOMIC_SMIN:
+        return BUFFER_ATOMIC(AtomicOp::Smin, inst);
     case Opcode::BUFFER_ATOMIC_UMIN:
         return BUFFER_ATOMIC(AtomicOp::Umin, inst);
+    case Opcode::BUFFER_ATOMIC_SMAX:
+        return BUFFER_ATOMIC(AtomicOp::Smax, inst);
     case Opcode::BUFFER_ATOMIC_UMAX:
         return BUFFER_ATOMIC(AtomicOp::Umax, inst);
+    case Opcode::BUFFER_ATOMIC_AND:
+        return BUFFER_ATOMIC(AtomicOp::And, inst);
+    case Opcode::BUFFER_ATOMIC_OR:
+        return BUFFER_ATOMIC(AtomicOp::Or, inst);
+    case Opcode::BUFFER_ATOMIC_XOR:
+        return BUFFER_ATOMIC(AtomicOp::Xor, inst);
+    case Opcode::BUFFER_ATOMIC_INC:
+        return BUFFER_ATOMIC(AtomicOp::Inc, inst);
+    case Opcode::BUFFER_ATOMIC_DEC:
+        return BUFFER_ATOMIC(AtomicOp::Dec, inst);
+
     default:
         LogMissingOpcode(inst);
     }