Mesa (master): i965: Don't compute-to-MRF in gen6 math instructions.

Eric Anholt anholt at kemper.freedesktop.org
Mon Oct 11 22:36:16 UTC 2010


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

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Oct 11 13:38:38 2010 -0700

i965: Don't compute-to-MRF in gen6 math instructions.

---

 src/mesa/drivers/dri/i965/brw_fs.cpp |   16 ++++++++++++++++
 1 files changed, 16 insertions(+), 0 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 0f1f4fa..0353bb5 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -2616,6 +2616,22 @@ fs_visitor::compute_to_mrf()
 	    if (scan_inst->mlen)
 	       break;
 
+	    if (intel->gen >= 6) {
+	       /* gen6 math instructions must have the destination be
+		* GRF, so no compute-to-MRF for them.
+		*/
+	       if (scan_inst->opcode == FS_OPCODE_RCP ||
+		   scan_inst->opcode == FS_OPCODE_RSQ ||
+		   scan_inst->opcode == FS_OPCODE_SQRT ||
+		   scan_inst->opcode == FS_OPCODE_EXP2 ||
+		   scan_inst->opcode == FS_OPCODE_LOG2 ||
+		   scan_inst->opcode == FS_OPCODE_SIN ||
+		   scan_inst->opcode == FS_OPCODE_COS ||
+		   scan_inst->opcode == FS_OPCODE_POW) {
+		  break;
+	       }
+	    }
+
 	    if (scan_inst->dst.reg_offset == inst->src[0].reg_offset) {
 	       /* Found the creator of our MRF's source value. */
 	       found = true;




More information about the mesa-commit mailing list