r600g/sb: relax some restrictions for FETCH instructions

This allows GVN rewrite pass to propagate non-const (register)
values to FETCH source operands, helping to eliminate unnecessary
copies in some cases.

Signed-off-by: Vadim Girlin <vadimgirlin@gmail.com>
This commit is contained in:
Vadim Girlin
2013-05-24 18:15:57 +04:00
parent 5a68a29706
commit e9aa46e665
+8 -9
View File
@@ -194,16 +194,15 @@ void gvn::process_op(node& n, bool rewrite) {
process_src(v->rel, rewrite);
}
if (rewrite && v->gvn_source && v->gvn_source->is_readonly()
&& n.is_any_alu()) {
if (rewrite && v->gvn_source && v->gvn_source->is_readonly() &&
n.is_any_alu()) {
process_alu_src_constants(n, v);
} else {
if (rewrite && (n.is_fetch_op(FETCH_OP_VFETCH) ||
n.is_fetch_op(FETCH_OP_SEMFETCH)))
process_src(v, false);
else
process_src(v, rewrite);
}
} else if (rewrite && v->gvn_source && v->gvn_source->is_const() &&
(n.is_fetch_op(FETCH_OP_VFETCH) ||
n.is_fetch_op(FETCH_OP_SEMFETCH)))
process_src(v, false);
else
process_src(v, rewrite);
}
}
if (n.pred)