Mesa (master): i965/vec4: skip registers already marked as no_spill

Juan Antonio Suárez Romero jasuarez at kemper.freedesktop.org
Mon Nov 14 09:16:58 UTC 2016


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

Author: Juan A. Suarez Romero <jasuarez at igalia.com>
Date:   Tue Nov  8 11:59:44 2016 +0100

i965/vec4: skip registers already marked as no_spill

Do not evaluate spill costs for registers that were already marked as
no_spill.

Reviewed-by: Kenneth Graunke <kenneth at whitecape.org>

---

 src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp b/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp
index 228e04c..5a5be85 100644
--- a/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp
+++ b/src/mesa/drivers/dri/i965/brw_vec4_reg_allocate.cpp
@@ -385,7 +385,7 @@ vec4_visitor::evaluate_spill_costs(float *spill_costs, bool *no_spill)
     */
    foreach_block_and_inst(block, vec4_instruction, inst, cfg) {
       for (unsigned int i = 0; i < 3; i++) {
-         if (inst->src[i].file == VGRF) {
+         if (inst->src[i].file == VGRF && !no_spill[inst->src[i].nr]) {
             /* We will only unspill src[i] it it wasn't unspilled for the
              * previous instruction, in which case we'll just reuse the scratch
              * reg for this instruction.
@@ -399,7 +399,7 @@ vec4_visitor::evaluate_spill_costs(float *spill_costs, bool *no_spill)
          }
       }
 
-      if (inst->dst.file == VGRF) {
+      if (inst->dst.file == VGRF && !no_spill[inst->dst.nr]) {
          spill_costs[inst->dst.nr] += loop_scale;
          if (inst->dst.reladdr || inst->dst.offset % REG_SIZE != 0)
             no_spill[inst->dst.nr] = true;




More information about the mesa-commit mailing list