Mesa (master): r600g/sb: relax some restrictions for FETCH instructions
Vadim Girlin
vadimg at kemper.freedesktop.org
Fri May 24 17:18:19 UTC 2013
Module: Mesa
Branch: master
Commit: e9aa46e66502248c4b266cb6c4a88851832982d8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=e9aa46e66502248c4b266cb6c4a88851832982d8
Author: Vadim Girlin <vadimgirlin at gmail.com>
Date: Fri May 24 18:15:57 2013 +0400
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 at gmail.com>
---
src/gallium/drivers/r600/sb/sb_gvn.cpp | 17 ++++++++---------
1 files changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/gallium/drivers/r600/sb/sb_gvn.cpp b/src/gallium/drivers/r600/sb/sb_gvn.cpp
index 12cdb1c..caea4ec 100644
--- a/src/gallium/drivers/r600/sb/sb_gvn.cpp
+++ b/src/gallium/drivers/r600/sb/sb_gvn.cpp
@@ -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)
More information about the mesa-commit
mailing list