tgsi_to_nir: handle TGSI_OPCODE_BARRIER
authorMarek Olšák <marek.olsak@amd.com>
Sun, 26 Apr 2020 12:55:08 +0000 (08:55 -0400)
committerMarge Bot <eric+marge@anholt.net>
Thu, 30 Apr 2020 22:27:31 +0000 (22:27 +0000)
Reviewed-by: Eric Anholt <eric@anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4761>

src/gallium/auxiliary/nir/tgsi_to_nir.c

index ff42c45..34ececa 100644 (file)
@@ -1112,6 +1112,14 @@ ttn_ucmp(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src)
 }
 
 static void
+ttn_barrier(nir_builder *b)
+{
+   nir_intrinsic_instr *barrier =
+      nir_intrinsic_instr_create(b->shader, nir_intrinsic_control_barrier);
+   nir_builder_instr_insert(b, &barrier->instr);
+}
+
+static void
 ttn_kill(nir_builder *b, nir_op op, nir_alu_dest dest, nir_ssa_def **src)
 {
    nir_intrinsic_instr *discard =
@@ -2225,6 +2233,10 @@ ttn_emit_instruction(struct ttn_compile *c)
       ttn_endloop(c);
       break;
 
+   case TGSI_OPCODE_BARRIER:
+      ttn_barrier(b);
+      break;
+
    default:
       if (op_trans[tgsi_op] != 0 || tgsi_op == TGSI_OPCODE_MOV) {
          ttn_alu(b, op_trans[tgsi_op], dest, dst_bitsize, src);