nv50/ir/nir: fix global_atomic_comp_swap
authorKarol Herbst <kherbst@redhat.com>
Sat, 7 Mar 2020 15:17:48 +0000 (16:17 +0100)
committerMarge Bot <eric+marge@anholt.net>
Wed, 19 Aug 2020 18:11:42 +0000 (18:11 +0000)
Fixes: 20d0ae464c4a ("nv50/ir: implement global atomics and handle it for nir")
Signed-off-by: Karol Herbst <kherbst@redhat.com>
Reviewed-by: Pierre Moreau <dev@pmoreau.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6367>

src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp

index b776d70940e54141b9790cc46d5e96a5ff891b3f..a6aad71774b4339e4042d4ea749727b35d8ad2c5 100644 (file)
@@ -2104,6 +2104,8 @@ Converter::visit(nir_intrinsic_instr *insn)
       Symbol *sym = mkSymbol(FILE_MEMORY_GLOBAL, 0, dType, offset);
       Instruction *atom =
          mkOp2(OP_ATOM, dType, newDefs[0], sym, getSrc(&insn->src[1], 0));
       Symbol *sym = mkSymbol(FILE_MEMORY_GLOBAL, 0, dType, offset);
       Instruction *atom =
          mkOp2(OP_ATOM, dType, newDefs[0], sym, getSrc(&insn->src[1], 0));
+      if (op == nir_intrinsic_global_atomic_comp_swap)
+         atom->setSrc(2, getSrc(&insn->src[2], 0));
       atom->setIndirect(0, 0, address);
       atom->subOp = getSubOp(op);
 
       atom->setIndirect(0, 0, address);
       atom->subOp = getSubOp(op);