mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 23:40:12 +01:00
nir/instr_set: Use _mesa_set_search_or_add()
Before this change, we were searching for each instruction twice, once when checking if it exists and once when figuring out where to insert it. By using the new function, we can do everything we need to do in one operation. Compilation time numbers for my shader-db database: Difference at 95.0% confidence -4.04706 +/- 0.669508 -0.922142% +/- 0.151948% (Student's t, pooled s = 0.95824) Reviewed-by: Eric Anholt <eric@anholt.net> Acked-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
parent
8a838e172f
commit
3bd0733011
1 changed files with 3 additions and 5 deletions
|
|
@ -824,11 +824,10 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, nir_instr *instr)
|
|||
if (!instr_can_rewrite(instr))
|
||||
return false;
|
||||
|
||||
uint32_t hash = hash_instr(instr);
|
||||
struct set_entry *e = _mesa_set_search_pre_hashed(instr_set, hash, instr);
|
||||
if (e) {
|
||||
struct set_entry *e = _mesa_set_search_or_add(instr_set, instr);
|
||||
nir_instr *match = (nir_instr *) e->key;
|
||||
if (match != instr) {
|
||||
nir_ssa_def *def = nir_instr_get_dest_ssa_def(instr);
|
||||
nir_instr *match = (nir_instr *) e->key;
|
||||
nir_ssa_def *new_def = nir_instr_get_dest_ssa_def(match);
|
||||
|
||||
/* It's safe to replace an exact instruction with an inexact one as
|
||||
|
|
@ -843,7 +842,6 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, nir_instr *instr)
|
|||
return true;
|
||||
}
|
||||
|
||||
_mesa_set_add_pre_hashed(instr_set, hash, instr);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue