Mesa (master): i965/fs: Optimize saturating SEL.G(E) with imm val <= 0.0f.
Matt Turner
mattst88 at kemper.freedesktop.org
Fri Nov 1 22:21:01 UTC 2013
Module: Mesa
Branch: master
Commit: 3c28b2c09f491bfa55dc9e5d7858a8b900c25432
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=3c28b2c09f491bfa55dc9e5d7858a8b900c25432
Author: Matt Turner <mattst88 at gmail.com>
Date: Sun Oct 27 21:26:36 2013 -0700
i965/fs: Optimize saturating SEL.G(E) with imm val <= 0.0f.
Only one program's instruction count is changed, but a shader in Tropics
is also affected.
instructions in affected programs: 326 -> 320 (-1.84%)
Reviewed-by: Eric Anholt <eric at anholt.net>
Reviewed-by: Paul Berry <stereotype441 at gmail.com>
---
src/mesa/drivers/dri/i965/brw_fs.cpp | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/src/mesa/drivers/dri/i965/brw_fs.cpp b/src/mesa/drivers/dri/i965/brw_fs.cpp
index 56284d9..7064910 100644
--- a/src/mesa/drivers/dri/i965/brw_fs.cpp
+++ b/src/mesa/drivers/dri/i965/brw_fs.cpp
@@ -1897,6 +1897,20 @@ fs_visitor::opt_algebraic()
break;
}
break;
+ case BRW_CONDITIONAL_GE:
+ case BRW_CONDITIONAL_G:
+ switch (inst->src[1].type) {
+ case BRW_REGISTER_TYPE_F:
+ if (inst->src[1].imm.f <= 0.0f) {
+ inst->opcode = BRW_OPCODE_MOV;
+ inst->src[1] = reg_undef;
+ inst->conditional_mod = BRW_CONDITIONAL_NONE;
+ progress = true;
+ }
+ break;
+ default:
+ break;
+ }
default:
break;
}
More information about the mesa-commit
mailing list