nir: Add some ssa-only fast-paths for nir_src rewrite
Basically every pass in NIR uses nir_ssa_def_rewrite_uses which calls nir_instr_rewrite_src which is fairly complex because it handles all sorts of non-SSA cases. Since we already know a priori that every source written by nir_ssa_def_rewrite_uses is SSA, we can check new_src once at the top of the function and cut out all that complexity. While we're at it, we expose a new SSA-only nir_ssa_def_rewrite_uses_ssa helper which takes an SSA def which avoids the one SSA check. It's also more convenient 90% of the time. Compile time as tested by Rhys Perry <pendingchaos02@gmail.com> Difference at 95.0% confidence -797.166 +/- 418.649 -0.566174% +/- 0.296441% (Student's t, pooled s = 325.459) Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Reviewed-by: Rhys Perry <pendingchaos02@gmail.com> Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8790>
This commit is contained in:

committed by
Marge Bot

parent
592c17b39d
commit
f064b7a42c
@@ -793,7 +793,7 @@ nir_replace_instr(nir_builder *build, nir_alu_instr *instr,
|
||||
/* Rewrite the uses of the old SSA value to the new one, and recurse
|
||||
* through the uses updating the automaton's state.
|
||||
*/
|
||||
nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa, nir_src_for_ssa(ssa_val));
|
||||
nir_ssa_def_rewrite_uses_ssa(&instr->dest.dest.ssa, ssa_val);
|
||||
nir_algebraic_update_automaton(ssa_val->parent_instr, algebraic_worklist,
|
||||
states, pass_op_table);
|
||||
|
||||
|
Reference in New Issue
Block a user