glsl: Optimize lrp(x, x, coefficient) --> x.
authorEric Anholt <eric@anholt.net>
Sat, 18 Jan 2014 19:00:51 +0000 (11:00 -0800)
committerEric Anholt <eric@anholt.net>
Fri, 7 Feb 2014 20:46:48 +0000 (12:46 -0800)
total instructions in shared programs: 1627754 -> 1624534 (-0.20%)
instructions in affected programs:     45748 -> 42528 (-7.04%)
GAINED:                                3
LOST:                                  0

(serious sam, humus domino demo)

Reviewed-by: Matt Turner <mattst88@gmail.com>
src/glsl/opt_algebraic.cpp

index 953b03c2943be183703b8b0c6bd2e000c70c3bc9..392051f4f055ff41f44d3f0eae6b8d5fd3b6bda4 100644 (file)
@@ -553,6 +553,8 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir)
          return ir->operands[0];
       } else if (is_vec_one(op_const[2])) {
          return ir->operands[1];
+      } else if (ir->operands[0]->equals(ir->operands[1])) {
+         return ir->operands[0];
       }
       break;