glsl: Delete LRP_TO_ARITH lowering pass flag.
authorKenneth Graunke <kenneth@whitecape.org>
Mon, 24 Feb 2014 00:34:04 +0000 (16:34 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Wed, 26 Feb 2014 10:16:56 +0000 (02:16 -0800)
Tt's kind of a trap---calling do_common_optimization() after
lower_instructions() may cause opt_algebraic() to reintroduce
ir_triop_lrp expressions that were lowered, effectively defeating the
point.  Because of this, nobody uses it.

v2: Delete more code (caught by Ian Romanick).

Cc: "10.1" <mesa-stable@lists.freedesktop.org>
Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Matt Turner <mattst88@gmail.com>
Acked-by: Eric Anholt <eric@anholt.net>
src/glsl/ir_optimization.h
src/glsl/lower_instructions.cpp

index 24d019b718e1abb0e026352c806c3e15da0b3a1b..5f4a2f4051ccee4d6b752d840c40d67ec522ce98 100644 (file)
@@ -36,9 +36,8 @@
 #define LOG_TO_LOG2        0x10
 #define MOD_TO_FRACT       0x20
 #define INT_DIV_TO_MUL_RCP 0x40
-#define LRP_TO_ARITH       0x80
-#define BITFIELD_INSERT_TO_BFM_BFI 0x100
-#define LDEXP_TO_ARITH     0x200
+#define BITFIELD_INSERT_TO_BFM_BFI 0x80
+#define LDEXP_TO_ARITH     0x100
 
 /**
  * \see class lower_packing_builtins_visitor
index 44a6e80214b5d17194562bba0b75dc3f43622a64..01ea0f01fb6ee29b994d15a5002e5a868ffa45fa 100644 (file)
@@ -38,7 +38,6 @@
  * - LOG_TO_LOG2
  * - MOD_TO_FRACT
  * - LDEXP_TO_ARITH
- * - LRP_TO_ARITH
  * - BITFIELD_INSERT_TO_BFM_BFI
  *
  * SUB_TO_ADD_NEG:
  * -------------
  * Converts ir_binop_ldexp to arithmetic and bit operations.
  *
- * LRP_TO_ARITH:
- * -------------
- * Converts ir_triop_lrp to (op0 * (1.0f - op2)) + (op1 * op2).
- *
  * BITFIELD_INSERT_TO_BFM_BFI:
  * ---------------------------
  * Breaks ir_quadop_bitfield_insert into ir_binop_bfm (bitfield mask) and
@@ -130,7 +125,6 @@ private:
    void exp_to_exp2(ir_expression *);
    void pow_to_exp2(ir_expression *);
    void log_to_log2(ir_expression *);
-   void lrp_to_arith(ir_expression *);
    void bitfield_insert_to_bfm_bfi(ir_expression *);
    void ldexp_to_arith(ir_expression *);
 };
@@ -298,27 +292,6 @@ lower_instructions_visitor::mod_to_fract(ir_expression *ir)
    this->progress = true;
 }
 
-void
-lower_instructions_visitor::lrp_to_arith(ir_expression *ir)
-{
-   /* (lrp x y a) -> x*(1-a) + y*a */
-
-   /* Save op2 */
-   ir_variable *temp = new(ir) ir_variable(ir->operands[2]->type, "lrp_factor",
-                                          ir_var_temporary);
-   this->base_ir->insert_before(temp);
-   this->base_ir->insert_before(assign(temp, ir->operands[2]));
-
-   ir_constant *one = new(ir) ir_constant(1.0f);
-
-   ir->operation = ir_binop_add;
-   ir->operands[0] = mul(ir->operands[0], sub(one, temp));
-   ir->operands[1] = mul(ir->operands[1], temp);
-   ir->operands[2] = NULL;
-
-   this->progress = true;
-}
-
 void
 lower_instructions_visitor::bitfield_insert_to_bfm_bfi(ir_expression *ir)
 {
@@ -499,11 +472,6 @@ lower_instructions_visitor::visit_leave(ir_expression *ir)
         pow_to_exp2(ir);
       break;
 
-   case ir_triop_lrp:
-      if (lowering(LRP_TO_ARITH))
-        lrp_to_arith(ir);
-      break;
-
    case ir_quadop_bitfield_insert:
       if (lowering(BITFIELD_INSERT_TO_BFM_BFI))
          bitfield_insert_to_bfm_bfi(ir);