Mesa (master): i965/fs: Split out is_coalesce_candidate() function.

Matt Turner mattst88 at kemper.freedesktop.org
Sat Apr 5 16:46:27 UTC 2014


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

Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Mar 27 09:40:58 2014 -0700

i965/fs: Split out is_coalesce_candidate() function.

Reviewed-by: Anuj Phogat <anuj.phogat at gmail.com>

---

 .../drivers/dri/i965/brw_fs_register_coalesce.cpp  |   37 ++++++++++++--------
 1 file changed, 23 insertions(+), 14 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
index 74b22b9..ca9376f 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_register_coalesce.cpp
@@ -43,6 +43,28 @@
 #include "brw_fs.h"
 #include "brw_fs_live_variables.h"
 
+static bool
+is_coalesce_candidate(const fs_inst *inst, const int *virtual_grf_sizes)
+{
+   if (inst->opcode != BRW_OPCODE_MOV ||
+       inst->is_partial_write() ||
+       inst->saturate ||
+       inst->src[0].file != GRF ||
+       inst->src[0].negate ||
+       inst->src[0].abs ||
+       !inst->src[0].is_contiguous() ||
+       inst->dst.file != GRF ||
+       inst->dst.type != inst->src[0].type) {
+      return false;
+   }
+
+   if (virtual_grf_sizes[inst->src[0].reg] >
+       virtual_grf_sizes[inst->dst.reg])
+      return false;
+
+   return true;
+}
+
 bool
 fs_visitor::register_coalesce()
 {
@@ -59,20 +81,7 @@ fs_visitor::register_coalesce()
    foreach_list(node, &this->instructions) {
       fs_inst *inst = (fs_inst *)node;
 
-      if (inst->opcode != BRW_OPCODE_MOV ||
-	  inst->is_partial_write() ||
-	  inst->saturate ||
-	  inst->src[0].file != GRF ||
-	  inst->src[0].negate ||
-	  inst->src[0].abs ||
-	  !inst->src[0].is_contiguous() ||
-	  inst->dst.file != GRF ||
-	  inst->dst.type != inst->src[0].type) {
-	 continue;
-      }
-
-      if (virtual_grf_sizes[inst->src[0].reg] >
-          virtual_grf_sizes[inst->dst.reg])
+      if (!is_coalesce_candidate(inst, virtual_grf_sizes))
          continue;
 
       int var_from = live_intervals->var_from_reg(&inst->src[0]);




More information about the mesa-commit mailing list