diff --git a/.pick_status.json b/.pick_status.json index 694d4b95d74..1f5634c3a16 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -1039,7 +1039,7 @@ "description": "nv50/ir/nir: fix global_atomic_comp_swap", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "master_sha": null, "because_sha": "20d0ae464c4accd97227b1b4e805a9c10183647d" }, diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp index 4475d7cf806..450dc0e8f8c 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -2090,6 +2090,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)); + 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);