Mesa (main): broadcom/compiler: drop spill_count and add spilling boolean

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Feb 18 09:01:50 UTC 2022


Module: Mesa
Branch: main
Commit: 8883975209a664aceba7b35fbbcbe7cb067f6795
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=8883975209a664aceba7b35fbbcbe7cb067f6795

Author: Iago Toral Quiroga <itoral at igalia.com>
Date:   Thu Feb 17 08:53:54 2022 +0100

broadcom/compiler: drop spill_count and add spilling boolean

We added spill_count to handle uniform batch spills, which we no longer do.
What we want now is a way to know if we are spilling registers.

Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15041>

---

 src/broadcom/compiler/nir_to_vir.c            | 1 -
 src/broadcom/compiler/v3d_compiler.h          | 9 ++++++---
 src/broadcom/compiler/vir_register_allocate.c | 6 +++---
 3 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/broadcom/compiler/nir_to_vir.c b/src/broadcom/compiler/nir_to_vir.c
index dbcefbbc2d8..53d22f07441 100644
--- a/src/broadcom/compiler/nir_to_vir.c
+++ b/src/broadcom/compiler/nir_to_vir.c
@@ -4507,7 +4507,6 @@ v3d_nir_to_vir(struct v3d_compile *c)
                         return;
                 }
 
-                c->spill_count = 0;
                 c->spills = 0;
                 c->fills = 0;
                 c->threads /= 2;
diff --git a/src/broadcom/compiler/v3d_compiler.h b/src/broadcom/compiler/v3d_compiler.h
index 0443fe9c8db..ef59948dc23 100644
--- a/src/broadcom/compiler/v3d_compiler.h
+++ b/src/broadcom/compiler/v3d_compiler.h
@@ -789,6 +789,12 @@ struct v3d_compile {
         uint32_t spill_size;
         /* Shader-db stats */
         uint32_t spills, fills, loops;
+
+        /* Whether we are in the process of spilling registers for
+         * register allocation
+         */
+        bool spilling;
+
         /**
          * Register spilling's per-thread base address, shared between each
          * spill/fill's addressing calculations.
@@ -881,9 +887,6 @@ struct v3d_compile {
         bool emitted_tlb_load;
         bool lock_scoreboard_on_first_thrsw;
 
-        /* Total number of spilled registers in the program */
-        uint32_t spill_count;
-
         enum v3d_compilation_result compilation_result;
 
         bool tmu_dirty_rcl;
diff --git a/src/broadcom/compiler/vir_register_allocate.c b/src/broadcom/compiler/vir_register_allocate.c
index ab8a261c3b0..a970c634ace 100644
--- a/src/broadcom/compiler/vir_register_allocate.c
+++ b/src/broadcom/compiler/vir_register_allocate.c
@@ -278,7 +278,7 @@ v3d_setup_spill_base(struct v3d_compile *c)
                  * accumulator because it is used for TMU spill/fill and thus
                  * needs to persist across thread switches.
                  */
-                if (c->spill_count > 0) {
+                if (c->spilling) {
                         int temp_class = CLASS_BITS_PHYS;
                         if (i != c->spill_base.index)
                                 temp_class |= CLASS_BITS_ACC;
@@ -415,8 +415,7 @@ static void
 v3d_spill_reg(struct v3d_compile *c, int *acc_nodes, int spill_temp)
 {
         int start_num_temps = c->num_temps;
-
-        c->spill_count++;
+        c->spilling = true;
 
         bool is_uniform = vir_is_mov_uniform(c, spill_temp);
 
@@ -615,6 +614,7 @@ v3d_spill_reg(struct v3d_compile *c, int *acc_nodes, int spill_temp)
         }
 
         c->disable_ldunif_opt = had_disable_ldunif_opt;
+        c->spilling = false;
 }
 
 struct v3d_ra_select_callback_data {



More information about the mesa-commit mailing list