Mesa (master): i965/fs: Perform CSE on MOV ..., VF instructions.
Matt Turner
mattst88 at kemper.freedesktop.org
Sat Dec 6 00:43:34 UTC 2014
Module: Mesa
Branch: master
Commit: a28ad9d4c0d4b95aee8c3b99e9aaa59add21ea9d
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=a28ad9d4c0d4b95aee8c3b99e9aaa59add21ea9d
Author: Matt Turner <mattst88 at gmail.com>
Date: Thu Apr 3 14:29:30 2014 -0700
i965/fs: Perform CSE on MOV ..., VF instructions.
Safe from causing optimization loops, since we don't constant propagate
VF arguments.
(for this and the previous patch):
total instructions in shared programs: 4289075 -> 4271932 (-0.40%)
instructions in affected programs: 1616779 -> 1599636 (-1.06%)
Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
---
src/mesa/drivers/dri/i965/brw_fs_cse.cpp | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
index b1c433e..38fae17 100644
--- a/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs_cse.cpp
@@ -62,6 +62,7 @@ static bool
is_expression(const fs_inst *const inst)
{
switch (inst->opcode) {
+ case BRW_OPCODE_MOV:
case BRW_OPCODE_SEL:
case BRW_OPCODE_NOT:
case BRW_OPCODE_AND:
@@ -194,11 +195,16 @@ fs_visitor::opt_cse_local(bblock_t *block)
}
if (!found) {
- /* Our first sighting of this expression. Create an entry. */
- aeb_entry *entry = ralloc(cse_ctx, aeb_entry);
- entry->tmp = reg_undef;
- entry->generator = inst;
- aeb.push_tail(entry);
+ if (inst->opcode != BRW_OPCODE_MOV ||
+ (inst->opcode == BRW_OPCODE_MOV &&
+ inst->src[0].file == IMM &&
+ inst->src[0].type == BRW_REGISTER_TYPE_VF)) {
+ /* Our first sighting of this expression. Create an entry. */
+ aeb_entry *entry = ralloc(cse_ctx, aeb_entry);
+ entry->tmp = reg_undef;
+ entry->generator = inst;
+ aeb.push_tail(entry);
+ }
} else {
/* This is at least our second sighting of this expression.
* If we don't have a temporary already, make one.
More information about the mesa-commit
mailing list