[Mesa-dev] [PATCH 4/7] i965/fs: Split out is_coalesce_candidate() function.
Matt Turner
mattst88 at gmail.com
Mon Mar 31 10:16:26 PDT 2014
---
.../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]);
--
1.8.3.2
More information about the mesa-dev
mailing list