vc4: Enable the nir_opt_algebraic_late() pass.
Upcoming changes to sub optimization will make this pass required. Over the course of that series, we see uniforms +.46%, instructions -.24% (seems like a fine tradeoff -- uniforms are 1/2 the size of instructions as far as cache occupancy) Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Reviewed-by: Connor Abbott <cwabbott0@gmail.com>
This commit is contained in:
parent
f2b8051d69
commit
d54ae70ee7
|
@ -2335,6 +2335,21 @@ vc4_shader_ntq(struct vc4_context *vc4, enum qstage stage,
|
|||
|
||||
vc4_optimize_nir(c->s);
|
||||
|
||||
/* Do late algebraic optimization to turn add(a, neg(b)) back into
|
||||
* subs, then the mandatory cleanup after algebraic. Note that it may
|
||||
* produce fnegs, and if so then we need to keep running to squash
|
||||
* fneg(fneg(a)).
|
||||
*/
|
||||
bool more_late_algebraic = true;
|
||||
while (more_late_algebraic) {
|
||||
more_late_algebraic = false;
|
||||
NIR_PASS(more_late_algebraic, c->s, nir_opt_algebraic_late);
|
||||
NIR_PASS_V(c->s, nir_opt_constant_folding);
|
||||
NIR_PASS_V(c->s, nir_copy_prop);
|
||||
NIR_PASS_V(c->s, nir_opt_dce);
|
||||
NIR_PASS_V(c->s, nir_opt_cse);
|
||||
}
|
||||
|
||||
NIR_PASS_V(c->s, nir_lower_bool_to_int32);
|
||||
|
||||
NIR_PASS_V(c->s, nir_convert_from_ssa, true);
|
||||
|
|
Loading…
Reference in New Issue