Mesa (master): prog_optimize: Only merge writes to temporary registers

Ian Romanick idr at kemper.freedesktop.org
Tue Aug 17 22:02:57 UTC 2010


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

Author: Benjamin Segovia <benjamin.segovia at intel.com>
Date:   Mon Aug 16 20:40:09 2010 -0700

prog_optimize: Only merge writes to temporary registers

In one optimization pass, register files may have been messed therefore
merging instructions which use the same index in two different register
files.

---

 src/mesa/program/prog_optimize.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

diff --git a/src/mesa/program/prog_optimize.c b/src/mesa/program/prog_optimize.c
index ab87875..0dc7790 100644
--- a/src/mesa/program/prog_optimize.c
+++ b/src/mesa/program/prog_optimize.c
@@ -758,7 +758,11 @@ _mesa_remove_extra_moves(struct gl_program *prog)
          nesting--;
          break;
       case OPCODE_MOV:
-         if (i > 0 && can_downward_mov_be_modifed(mov) && nesting == 0) {
+         if (i > 0 &&
+             can_downward_mov_be_modifed(mov) &&
+             mov->SrcReg[0].File == PROGRAM_TEMPORARY &&
+             nesting == 0)
+         {
 
             /* see if this MOV can be removed */
             const GLuint id = mov->SrcReg[0].Index;




More information about the mesa-commit mailing list