Mesa (master): v3d: use intrinsic builders

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Jan 6 14:51:28 UTC 2021


Module: Mesa
Branch: master
Commit: 66d51965af39aa36dd65111d94b0d9ca3a8eec4e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=66d51965af39aa36dd65111d94b0d9ca3a8eec4e

Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date:   Fri Jan  1 20:51:03 2021 +0100

v3d: use intrinsic builders

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Eric Anholt <eric at anholt.net>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8295>

---

 src/broadcom/compiler/v3d_nir_lower_io.c          | 26 ++++-------------------
 src/broadcom/compiler/v3d_nir_lower_line_smooth.c |  6 +-----
 src/broadcom/compiler/v3d_nir_lower_logic_ops.c   | 26 +++--------------------
 3 files changed, 8 insertions(+), 50 deletions(-)

diff --git a/src/broadcom/compiler/v3d_nir_lower_io.c b/src/broadcom/compiler/v3d_nir_lower_io.c
index 7d8fa4667d6..655f74fd42d 100644
--- a/src/broadcom/compiler/v3d_nir_lower_io.c
+++ b/src/broadcom/compiler/v3d_nir_lower_io.c
@@ -73,31 +73,19 @@ static void
 v3d_nir_store_output(nir_builder *b, int base, nir_ssa_def *offset,
                      nir_ssa_def *chan)
 {
-        nir_intrinsic_instr *intr =
-                nir_intrinsic_instr_create(b->shader,
-                                           nir_intrinsic_store_output);
-        nir_ssa_dest_init(&intr->instr, &intr->dest,
-                          1, intr->dest.ssa.bit_size, NULL);
-        intr->num_components = 1;
-
-        intr->src[0] = nir_src_for_ssa(chan);
         if (offset) {
                 /* When generating the VIR instruction, the base and the offset
                  * are just going to get added together with an ADD instruction
                  * so we might as well do the add here at the NIR level instead
                  * and let the constant folding do its magic.
                  */
-                intr->src[1] = nir_src_for_ssa(nir_iadd_imm(b, offset, base));
+                offset = nir_iadd_imm(b, offset, base);
                 base = 0;
         } else {
-                intr->src[1] = nir_src_for_ssa(nir_imm_int(b, 0));
+                offset = nir_imm_int(b, 0);
         }
 
-        nir_intrinsic_set_base(intr, base);
-        nir_intrinsic_set_write_mask(intr, 0x1);
-        nir_intrinsic_set_component(intr, 0);
-
-        nir_builder_instr_insert(b, &intr->instr);
+        nir_store_output(b, chan, offset, .base = base, .write_mask = 0x1, .component = 0);
 }
 
 /* Convert the uniform offset to bytes.  If it happens to be a constant,
@@ -215,13 +203,7 @@ v3d_nir_lower_vpm_output(struct v3d_compile *c, nir_builder *b,
                  * to 0 in that case (we always allocate tile state for at
                  * least one layer).
                  */
-                nir_intrinsic_instr *load =
-                        nir_intrinsic_instr_create(b->shader,
-                                                   nir_intrinsic_load_fb_layers_v3d);
-                nir_ssa_dest_init(&load->instr, &load->dest, 1, 32, NULL);
-                nir_builder_instr_insert(b, &load->instr);
-                nir_ssa_def *fb_layers = &load->dest.ssa;
-
+                nir_ssa_def *fb_layers = nir_load_fb_layers_v3d(b, 32);
                 nir_ssa_def *cond = nir_ige(b, src, fb_layers);
                 nir_ssa_def *layer_id =
                         nir_bcsel(b, cond,
diff --git a/src/broadcom/compiler/v3d_nir_lower_line_smooth.c b/src/broadcom/compiler/v3d_nir_lower_line_smooth.c
index ace7d5cb5ca..8f6e7d4e648 100644
--- a/src/broadcom/compiler/v3d_nir_lower_line_smooth.c
+++ b/src/broadcom/compiler/v3d_nir_lower_line_smooth.c
@@ -118,11 +118,7 @@ initialise_coverage_var(struct lower_line_smooth_state *state,
         /* Discard fragments that aren’t covered at all by the line */
         nir_ssa_def *outside = nir_fge(&b, nir_imm_float(&b, 0.0f), coverage);
 
-        nir_intrinsic_instr *discard =
-                nir_intrinsic_instr_create(state->shader,
-                                           nir_intrinsic_discard_if);
-        discard->src[0] = nir_src_for_ssa(outside);
-        nir_builder_instr_insert(&b, &discard->instr);
+        nir_discard_if(&b, outside);
 
         /* Clamp to at most 1.0. If it was less than 0.0 then the fragment will
          * be discarded so we don’t need to handle that.
diff --git a/src/broadcom/compiler/v3d_nir_lower_logic_ops.c b/src/broadcom/compiler/v3d_nir_lower_logic_ops.c
index 9278e37952e..6d78f663455 100644
--- a/src/broadcom/compiler/v3d_nir_lower_logic_ops.c
+++ b/src/broadcom/compiler/v3d_nir_lower_logic_ops.c
@@ -205,18 +205,8 @@ static nir_ssa_def *
 v3d_nir_get_tlb_color(nir_builder *b, int rt, int sample)
 {
         nir_ssa_def *color[4];
-        for (int i = 0; i < 4; i++) {
-                nir_intrinsic_instr *load =
-                        nir_intrinsic_instr_create(b->shader,
-                                                   nir_intrinsic_load_tlb_color_v3d);
-                load->num_components = 1;
-                nir_intrinsic_set_base(load, sample);
-                nir_intrinsic_set_component(load, i);
-                load->src[0] = nir_src_for_ssa(nir_imm_int(b, rt));
-                nir_ssa_dest_init(&load->instr, &load->dest, 1, 32, NULL);
-                nir_builder_instr_insert(b, &load->instr);
-                color[i] = &load->dest.ssa;
-        }
+        for (int i = 0; i < 4; i++)
+                color[i] = nir_load_tlb_color_v3d(b, 1, 32, nir_imm_int(b, rt), .base = sample, .component = i);
 
         return nir_vec4(b, color[0], color[1], color[2], color[3]);
 }
@@ -295,17 +285,7 @@ v3d_emit_ms_output(struct v3d_compile *c, nir_builder *b,
                    nir_ssa_def *color, nir_src *offset,
                    nir_alu_type type, int rt, int sample)
 {
-
-        nir_intrinsic_instr *store =
-                nir_intrinsic_instr_create(b->shader,
-                                           nir_intrinsic_store_tlb_sample_color_v3d);
-        store->num_components = 4;
-        nir_intrinsic_set_base(store, sample);
-        nir_intrinsic_set_component(store, 0);
-        nir_intrinsic_set_src_type(store, type);
-        store->src[0] = nir_src_for_ssa(color);
-        store->src[1] = nir_src_for_ssa(nir_imm_int(b, rt));
-        nir_builder_instr_insert(b, &store->instr);
+        nir_store_tlb_sample_color_v3d(b, color, nir_imm_int(b, rt), .base = sample, .component = 0, .src_type = type);
 }
 
 static void



More information about the mesa-commit mailing list