i965/fs: Add a new fs_inst::regs_written function.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 14 Feb 2012 20:43:21 +0000 (12:43 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 15 Feb 2012 19:44:05 +0000 (11:44 -0800)
Certain instructions write more than one register.  Texturing, for
example, returns 4 registers.  (We set rlen to 4 even for TXS and float
shadow sampling.)  Some math functions return 2.  Most return 1.

The next commit introduces a use of this function.

NOTE: This is a candidate for the 8.0 branch (dependency of a fix).

Reviewed-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
src/mesa/drivers/dri/i965/brw_fs.h

index 060aa363746f58f2298bcd108b8e83e5123797e3..0a37b39c09d96593d14decc15295e3f2a0d129ec 100644 (file)
@@ -286,6 +286,18 @@ public:
              offset == inst->offset);
    }
 
+   int regs_written()
+   {
+      if (is_tex())
+        return 4;
+
+      /* The SINCOS and INT_DIV_QUOTIENT_AND_REMAINDER math functions return 2,
+       * but we don't currently use them...nor do we have an opcode for them.
+       */
+
+      return 1;
+   }
+
    bool is_tex()
    {
       return (opcode == SHADER_OPCODE_TEX ||