From ddb81f5da32c0c81e8b9572827f8ae31133d1a7d Mon Sep 17 00:00:00 2001 From: Rhys Perry Date: Mon, 7 Sep 2020 14:17:14 +0100 Subject: [PATCH] glsl_to_nir: use intrinsic builders Signed-off-by: Rhys Perry Reviewed-by: Jason Ekstrand Part-of: --- src/compiler/glsl/glsl_to_nir.cpp | 49 ++++++++----------------------- 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index d0397357b76..86efde80d1a 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -811,44 +811,28 @@ nir_visitor::visit(ir_discard *ir) * discards will be immediately followed by a return. */ - nir_intrinsic_instr *discard; - if (ir->condition) { - discard = nir_intrinsic_instr_create(this->shader, - nir_intrinsic_discard_if); - discard->src[0] = - nir_src_for_ssa(evaluate_rvalue(ir->condition)); - } else { - discard = nir_intrinsic_instr_create(this->shader, nir_intrinsic_discard); - } - - nir_builder_instr_insert(&b, &discard->instr); + if (ir->condition) + nir_discard_if(&b, evaluate_rvalue(ir->condition)); + else + nir_discard(&b); } void nir_visitor::visit(ir_demote *ir) { - nir_intrinsic_instr *demote = - nir_intrinsic_instr_create(this->shader, nir_intrinsic_demote); - - nir_builder_instr_insert(&b, &demote->instr); + nir_demote(&b); } void nir_visitor::visit(ir_emit_vertex *ir) { - nir_intrinsic_instr *instr = - nir_intrinsic_instr_create(this->shader, nir_intrinsic_emit_vertex); - nir_intrinsic_set_stream_id(instr, ir->stream_id()); - nir_builder_instr_insert(&b, &instr->instr); + nir_emit_vertex(&b, (unsigned)ir->stream_id()); } void nir_visitor::visit(ir_end_primitive *ir) { - nir_intrinsic_instr *instr = - nir_intrinsic_instr_create(this->shader, nir_intrinsic_end_primitive); - nir_intrinsic_set_stream_id(instr, ir->stream_id()); - nir_builder_instr_insert(&b, &instr->instr); + nir_end_primitive(&b, (unsigned)ir->stream_id()); } void @@ -2648,21 +2632,12 @@ nir_visitor::visit(ir_dereference_array *ir) void nir_visitor::visit(ir_barrier *) { - if (shader->info.stage == MESA_SHADER_COMPUTE) { - nir_intrinsic_instr *shared_barrier = - nir_intrinsic_instr_create(this->shader, - nir_intrinsic_memory_barrier_shared); - nir_builder_instr_insert(&b, &shared_barrier->instr); - } else if (shader->info.stage == MESA_SHADER_TESS_CTRL) { - nir_intrinsic_instr *patch_barrier = - nir_intrinsic_instr_create(this->shader, - nir_intrinsic_memory_barrier_tcs_patch); - nir_builder_instr_insert(&b, &patch_barrier->instr); - } + if (shader->info.stage == MESA_SHADER_COMPUTE) + nir_memory_barrier_shared(&b); + else if (shader->info.stage == MESA_SHADER_TESS_CTRL) + nir_memory_barrier_tcs_patch(&b); - nir_intrinsic_instr *instr = - nir_intrinsic_instr_create(this->shader, nir_intrinsic_control_barrier); - nir_builder_instr_insert(&b, &instr->instr); + nir_control_barrier(&b); } nir_shader *