Mesa (master): nir/builder: Add a nir_imm_zero helper

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Apr 14 20:26:08 UTC 2019


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

Author: Jason Ekstrand <jason at jlekstrand.net>
Date:   Mon Apr  1 21:31:26 2019 -0500

nir/builder: Add a nir_imm_zero helper

v2: replace nir_zero_vec with nir_imm_zero (Karol Herbst)

Reviewed-by: Karol Herbst <kherbst at redhat.com>

---

 src/compiler/nir/nir_builder.h                      | 13 +++++++++++++
 src/compiler/nir/nir_lower_int64.c                  |  5 ++---
 src/compiler/nir/nir_lower_io.c                     |  6 ++----
 src/intel/compiler/brw_nir_lower_image_load_store.c | 11 +----------
 4 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h
index 66a028bac97..9ee58dafd21 100644
--- a/src/compiler/nir/nir_builder.h
+++ b/src/compiler/nir/nir_builder.h
@@ -209,6 +209,19 @@ nir_build_imm(nir_builder *build, unsigned num_components,
 }
 
 static inline nir_ssa_def *
+nir_imm_zero(nir_builder *build, unsigned num_components, unsigned bit_size)
+{
+   nir_load_const_instr *load_const =
+      nir_load_const_instr_create(build->shader, num_components, bit_size);
+
+   /* nir_load_const_instr_create uses rzalloc so it's already zero */
+
+   nir_builder_instr_insert(build, &load_const->instr);
+
+   return &load_const->def;
+}
+
+static inline nir_ssa_def *
 nir_imm_bool(nir_builder *build, bool x)
 {
    nir_const_value v;
diff --git a/src/compiler/nir/nir_lower_int64.c b/src/compiler/nir/nir_lower_int64.c
index e7d361da6da..b3b78c6649a 100644
--- a/src/compiler/nir/nir_lower_int64.c
+++ b/src/compiler/nir/nir_lower_int64.c
@@ -493,9 +493,8 @@ lower_udiv64_mod64(nir_builder *b, nir_ssa_def *n, nir_ssa_def *d,
    nir_ssa_def *d_lo = nir_unpack_64_2x32_split_x(b, d);
    nir_ssa_def *d_hi = nir_unpack_64_2x32_split_y(b, d);
 
-   nir_const_value v = { .u32 = { 0, 0, 0, 0 } };
-   nir_ssa_def *q_lo = nir_build_imm(b, n->num_components, 32, v);
-   nir_ssa_def *q_hi = nir_build_imm(b, n->num_components, 32, v);
+   nir_ssa_def *q_lo = nir_imm_zero(b, n->num_components, 32);
+   nir_ssa_def *q_hi = nir_imm_zero(b, n->num_components, 32);
 
    nir_ssa_def *n_hi_before_if = n_hi;
    nir_ssa_def *q_hi_before_if = q_hi;
diff --git a/src/compiler/nir/nir_lower_io.c b/src/compiler/nir/nir_lower_io.c
index 331ecc08324..c666fe16f7b 100644
--- a/src/compiler/nir/nir_lower_io.c
+++ b/src/compiler/nir/nir_lower_io.c
@@ -754,10 +754,8 @@ build_explicit_io_load(nir_builder *b, nir_intrinsic_instr *intrin,
        * as to what we can do with an OOB read.  Unfortunately, returning
        * undefined values isn't one of them so we return an actual zero.
        */
-      nir_const_value zero_val;
-      memset(&zero_val, 0, sizeof(zero_val));
-      nir_ssa_def *zero = nir_build_imm(b, load->num_components,
-                                        load->dest.ssa.bit_size, zero_val);
+      nir_ssa_def *zero = nir_imm_zero(b, load->num_components,
+                                          load->dest.ssa.bit_size);
 
       const unsigned load_size =
          (load->dest.ssa.bit_size / 8) * load->num_components;
diff --git a/src/intel/compiler/brw_nir_lower_image_load_store.c b/src/intel/compiler/brw_nir_lower_image_load_store.c
index 48b98bc57bd..c23f64fb338 100644
--- a/src/intel/compiler/brw_nir_lower_image_load_store.c
+++ b/src/intel/compiler/brw_nir_lower_image_load_store.c
@@ -313,15 +313,6 @@ get_format_info(enum isl_format fmt)
 }
 
 static nir_ssa_def *
-nir_zero_vec(nir_builder *b, unsigned num_components)
-{
-   nir_const_value v;
-   memset(&v, 0, sizeof(v));
-
-   return nir_build_imm(b, num_components, 32, v);
-}
-
-static nir_ssa_def *
 convert_color_for_load(nir_builder *b, const struct gen_device_info *devinfo,
                        nir_ssa_def *color,
                        enum isl_format image_fmt, enum isl_format lower_fmt,
@@ -498,7 +489,7 @@ lower_image_load_instr(nir_builder *b,
 
       nir_push_else(b, NULL);
 
-      nir_ssa_def *zero = nir_zero_vec(b, load->num_components);
+      nir_ssa_def *zero = nir_imm_zero(b, load->num_components, 32);
 
       nir_pop_if(b, NULL);
 




More information about the mesa-commit mailing list