nir: prehash instruction in nir_instr_set_add_or_rewrite()
There is no need to hash the instruction twice, especially as we end up adding it in the majority of cases. Reviewed-by: Connor Abbott <cwabbott0@gmail.com> Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
This commit is contained in:
@@ -588,10 +588,11 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, nir_instr *instr)
|
||||
if (!instr_can_rewrite(instr))
|
||||
return false;
|
||||
|
||||
struct set_entry *entry = _mesa_set_search(instr_set, instr);
|
||||
if (entry) {
|
||||
uint32_t hash = hash_instr(instr);
|
||||
struct set_entry *e = _mesa_set_search_pre_hashed(instr_set, hash, instr);
|
||||
if (e) {
|
||||
nir_ssa_def *def = nir_instr_get_dest_ssa_def(instr);
|
||||
nir_instr *match = (nir_instr *) entry->key;
|
||||
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
|
||||
@@ -606,7 +607,7 @@ nir_instr_set_add_or_rewrite(struct set *instr_set, nir_instr *instr)
|
||||
return true;
|
||||
}
|
||||
|
||||
_mesa_set_add(instr_set, instr);
|
||||
_mesa_set_add_pre_hashed(instr_set, hash, instr);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user