mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 04:50:11 +01:00
glsl/opt_algebraic: Drop pow optimizations.
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 <tarceri@itsqueeze.com> Reviewed-by: Marek Olšák <marek.olsak@amd.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21475>
This commit is contained in:
parent
bb1b37e6c1
commit
6b53d4b825
1 changed files with 0 additions and 49 deletions
|
|
@ -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())
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue