From 6b53d4b8250ffab0137b51bea7f0832a010c8eae Mon Sep 17 00:00:00 2001 From: Emma Anholt Date: Wed, 22 Feb 2023 11:54:15 -0800 Subject: [PATCH] glsl/opt_algebraic: Drop pow optimizations. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit These should all be covered by NIR. Minor shader-db changes on freedreno, which appear to be scheduling noise. total instructions in shared programs: 11013132 -> 11013112 (<.01%) instructions in affected programs: 3408 -> 3388 (-0.59%) Acked-by: Timothy Arceri Reviewed-by: Marek Olšák Part-of: --- src/compiler/glsl/opt_algebraic.cpp | 49 ----------------------------- 1 file changed, 49 deletions(-) diff --git a/src/compiler/glsl/opt_algebraic.cpp b/src/compiler/glsl/opt_algebraic.cpp index a80e68aa634..8949fa22545 100644 --- a/src/compiler/glsl/opt_algebraic.cpp +++ b/src/compiler/glsl/opt_algebraic.cpp @@ -112,18 +112,6 @@ is_vec_one(ir_constant *ir) return (ir == NULL) ? false : ir->is_one(); } -static inline bool -is_vec_two(ir_constant *ir) -{ - return (ir == NULL) ? false : ir->is_value(2.0, 2); -} - -static inline bool -is_vec_four(ir_constant *ir) -{ - return (ir == NULL) ? false : ir->is_value(4.0, 4); -} - static inline bool is_vec_negative_one(ir_constant *ir) { @@ -635,43 +623,6 @@ ir_algebraic_visitor::handle_expression(ir_expression *ir) } break; - case ir_binop_pow: - /* 1^x == 1 */ - if (is_vec_one(op_const[0])) - return op_const[0]; - - /* x^1 == x */ - if (is_vec_one(op_const[1])) - return ir->operands[0]; - - /* pow(2,x) == exp2(x) */ - if (is_vec_two(op_const[0])) - return expr(ir_unop_exp2, ir->operands[1]); - - if (is_vec_two(op_const[1])) { - ir_variable *x = new(ir) ir_variable(ir->operands[1]->type, "x", - ir_var_temporary); - base_ir->insert_before(x); - base_ir->insert_before(assign(x, ir->operands[0])); - return mul(x, x); - } - - if (is_vec_four(op_const[1])) { - ir_variable *x = new(ir) ir_variable(ir->operands[1]->type, "x", - ir_var_temporary); - base_ir->insert_before(x); - base_ir->insert_before(assign(x, ir->operands[0])); - - ir_variable *squared = new(ir) ir_variable(ir->operands[1]->type, - "squared", - ir_var_temporary); - base_ir->insert_before(squared); - base_ir->insert_before(assign(squared, mul(x, x))); - return mul(squared, squared); - } - - break; - case ir_binop_min: case ir_binop_max: if (!ir->type->is_float())