This should prove benefitial in the common case of inserting and not rewriting anything.
V2: Use hash_instr directly instead of going through the function pointer embedded in the set --- src/compiler/nir/nir_instr_set.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/compiler/nir/nir_instr_set.c b/src/compiler/nir/nir_instr_set.c index 9cb9ed43e8..bdc3b02173 100644 --- a/src/compiler/nir/nir_instr_set.c +++ b/src/compiler/nir/nir_instr_set.c @@ -508,7 +508,10 @@ 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); + uint32_t hash = hash_instr(instr); + struct set_entry *entry = + _mesa_set_search_pre_hashed(instr_set, hash, instr); + if (entry) { nir_ssa_def *def = nir_instr_get_dest_ssa_def(instr); nir_instr *match = (nir_instr *) entry->key; @@ -526,7 +529,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; } -- 2.13.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev