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