v5: add more barrier intrinsics Signed-off-by: Karol Herbst <kher...@redhat.com> --- .../drivers/nouveau/codegen/nv50_ir_from_nir.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+)
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 5c3fde32601..bc0127bef84 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_from_nir.cpp @@ -489,6 +489,14 @@ Converter::getSubOp(nir_intrinsic_op op) CASE_OP_INTR_ATOM(and, AND); CASE_OP_INTR_ATOM(comp_swap, CAS); CASE_OP_INTR_ATOM(exchange, EXCH); + case nir_intrinsic_group_memory_barrier: + case nir_intrinsic_memory_barrier: + case nir_intrinsic_memory_barrier_atomic_counter: + case nir_intrinsic_memory_barrier_buffer: + case nir_intrinsic_memory_barrier_image: + return NV50_IR_SUBOP_MEMBAR(M, GL); + case nir_intrinsic_memory_barrier_shared: + return NV50_IR_SUBOP_MEMBAR(M, CTA); CASE_OP_INTR_ATOM(or, OR); case nir_intrinsic_image_atomic_max: CASE_OP_INTR_ATOM_S(imax, MAX); @@ -2287,6 +2295,17 @@ Converter::visit(nir_intrinsic_instr *insn) bar->subOp = NV50_IR_SUBOP_BAR_SYNC; break; } + case nir_intrinsic_group_memory_barrier: + case nir_intrinsic_memory_barrier: + case nir_intrinsic_memory_barrier_atomic_counter: + case nir_intrinsic_memory_barrier_buffer: + case nir_intrinsic_memory_barrier_image: + case nir_intrinsic_memory_barrier_shared: { + Instruction *bar = mkOp(OP_MEMBAR, TYPE_NONE, NULL); + bar->fixed = 1; + bar->subOp = getSubOp(op); + break; + } default: ERROR("unknown nir_intrinsic_op %s\n", nir_intrinsic_infos[op].name); return false; -- 2.14.3 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev