i965: Reduce register interference checks for changed FS_OPCODE_DISCARD.
authorEric Anholt <eric@anholt.net>
Sun, 10 Oct 2010 19:13:35 +0000 (12:13 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 11 Oct 2010 18:52:01 +0000 (11:52 -0700)
While I don't know of any performance changes from this (once extra
reg available out of 128), it makes the generated asm a lot cleaner
looking.

src/mesa/drivers/dri/i965/brw_fs.cpp

index f41e8783e6729d4fe6f122ca990dfebc996f58a3..798c36971f31984e0dd6f9eb21e93ca075dff51f 100644 (file)
@@ -2706,10 +2706,7 @@ fs_visitor::dead_code_eliminate()
    bool dead[num_vars];
 
    for (int i = 0; i < num_vars; i++) {
-      /* This would be ">=", but FS_OPCODE_DISCARD has a src == dst where
-       * it writes dst then reads it as src.
-       */
-      dead[i] = this->virtual_grf_def[i] > this->virtual_grf_use[i];
+      dead[i] = this->virtual_grf_def[i] >= this->virtual_grf_use[i];
 
       if (dead[i]) {
         /* Mark off its interval so it won't interfere with anything. */
@@ -2824,7 +2821,7 @@ fs_visitor::virtual_grf_interferes(int a, int b)
              this->virtual_grf_def[b] < this->virtual_grf_use[a]);
    }
 
-   return start <= end;
+   return start < end;
 }
 
 static struct brw_reg brw_reg_from_fs_reg(fs_reg *reg)