i965/fs: Use const fs_reg & rather than a copy or pointer.
authorMatt Turner <mattst88@gmail.com>
Wed, 29 Oct 2014 20:58:45 +0000 (13:58 -0700)
committerMatt Turner <mattst88@gmail.com>
Tue, 2 Dec 2014 00:42:13 +0000 (16:42 -0800)
Also while we're touching var_from_reg, just make it an inline function.

Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs_dead_code_eliminate.cpp
src/mesa/drivers/dri/i965/brw_fs_live_variables.cpp
src/mesa/drivers/dri/i965/brw_fs_live_variables.h
src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp

index fa471829e8e0444aa7fa6f9a046080f4c7cb5570..81be4def30b3ba122ee18cd4accb62da376f8b11 100644 (file)
@@ -56,10 +56,10 @@ fs_visitor::dead_code_eliminate()
             bool result_live = false;
 
             if (inst->regs_written == 1) {
-               int var = live_intervals->var_from_reg(&inst->dst);
+               int var = live_intervals->var_from_reg(inst->dst);
                result_live = BITSET_TEST(live, var);
             } else {
-               int var = live_intervals->var_from_reg(&inst->dst);
+               int var = live_intervals->var_from_reg(inst->dst);
                for (int i = 0; i < inst->regs_written; i++) {
                   result_live = result_live || BITSET_TEST(live, var + i);
                }
@@ -87,7 +87,7 @@ fs_visitor::dead_code_eliminate()
 
          if (inst->dst.file == GRF) {
             if (!inst->is_partial_write()) {
-               int var = live_intervals->var_from_reg(&inst->dst);
+               int var = live_intervals->var_from_reg(inst->dst);
                for (int i = 0; i < inst->regs_written; i++) {
                   BITSET_CLEAR(live, var + i);
                }
@@ -100,7 +100,7 @@ fs_visitor::dead_code_eliminate()
 
          for (int i = 0; i < inst->sources; i++) {
             if (inst->src[i].file == GRF) {
-               int var = live_intervals->var_from_reg(&inst->src[i]);
+               int var = live_intervals->var_from_reg(inst->src[i]);
 
                for (int j = 0; j < inst->regs_read(this, i); j++) {
                   BITSET_SET(live, var + j);
index 2512b799f03472df03483d4ca0e8e29c3f177a80..189a119025d8cd4571432565f06fa57abe3704ec 100644 (file)
@@ -54,9 +54,9 @@ using namespace brw;
 
 void
 fs_live_variables::setup_one_read(struct block_data *bd, fs_inst *inst,
-                                  int ip, fs_reg reg)
+                                  int ip, const fs_reg &reg)
 {
-   int var = var_from_reg(&reg);
+   int var = var_from_reg(reg);
    assert(var < num_vars);
 
    /* In most cases, a register can be written over safely by the
@@ -106,9 +106,9 @@ fs_live_variables::setup_one_read(struct block_data *bd, fs_inst *inst,
 
 void
 fs_live_variables::setup_one_write(struct block_data *bd, fs_inst *inst,
-                                   int ip, fs_reg reg)
+                                   int ip, const fs_reg &reg)
 {
-   int var = var_from_reg(&reg);
+   int var = var_from_reg(reg);
    assert(var < num_vars);
 
    start[var] = MIN2(start[var], ip);
@@ -273,12 +273,6 @@ fs_live_variables::compute_start_end()
    }
 }
 
-int
-fs_live_variables::var_from_reg(fs_reg *reg)
-{
-   return var_from_vgrf[reg->reg] + reg->reg_offset;
-}
-
 fs_live_variables::fs_live_variables(fs_visitor *v, const cfg_t *cfg)
    : v(v), cfg(cfg)
 {
index 2bfb583233ea3c23f061bcae2b7294d809c265d1..a52f922d959c5aadf1460416d095a17eb10d2222 100644 (file)
@@ -66,7 +66,10 @@ public:
    ~fs_live_variables();
 
    bool vars_interfere(int a, int b);
-   int var_from_reg(fs_reg *reg);
+   int var_from_reg(const fs_reg &reg) const
+   {
+      return var_from_vgrf[reg.reg] + reg.reg_offset;
+   }
 
    /** Map from virtual GRF number to index in block_data arrays. */
    int *var_from_vgrf;
@@ -96,8 +99,10 @@ public:
 
 protected:
    void setup_def_use();
-   void setup_one_read(struct block_data *bd, fs_inst *inst, int ip, fs_reg reg);
-   void setup_one_write(struct block_data *bd, fs_inst *inst, int ip, fs_reg reg);
+   void setup_one_read(struct block_data *bd, fs_inst *inst, int ip,
+                       const fs_reg &reg);
+   void setup_one_write(struct block_data *bd, fs_inst *inst, int ip,
+                        const fs_reg &reg);
    void compute_live_variables();
    void compute_start_end();
 
index 347a78e5efdaf3ab357d37cb389a384f8a96da90..a4145ac27d9c66fcd235e0579b2c64bd8bbaf4ea 100644 (file)
@@ -45,7 +45,7 @@ opt_saturate_propagation_local(fs_visitor *v, bblock_t *block)
           !inst->saturate)
          continue;
 
-      int src_var = v->live_intervals->var_from_reg(&inst->src[0]);
+      int src_var = v->live_intervals->var_from_reg(inst->src[0]);
       int src_end_ip = v->live_intervals->end[src_var];
 
       bool interfered = false;