Copy propagation elements is a large user of the hash table. We should not be computing the hash twice when we don't have to. --- src/compiler/glsl/opt_copy_propagation_elements.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/compiler/glsl/opt_copy_propagation_elements.cpp b/src/compiler/glsl/opt_copy_propagation_elements.cpp index 9f79fa9202..d318417f6c 100644 --- a/src/compiler/glsl/opt_copy_propagation_elements.cpp +++ b/src/compiler/glsl/opt_copy_propagation_elements.cpp @@ -498,8 +498,11 @@ ir_copy_propagation_elements_visitor::visit_enter(ir_loop *ir) void ir_copy_propagation_elements_visitor::kill(kill_entry *k) { + uint32_t hash = lhs_ht->key_hash_function(k->var); /* removal of lhs entries */ - hash_entry *ht_entry = _mesa_hash_table_search(lhs_ht, k->var); + hash_entry *ht_entry = + _mesa_hash_table_search_pre_hashed(lhs_ht, hash, k->var); + if (ht_entry) { exec_list *lhs_list = (exec_list *) ht_entry->data; foreach_in_list_safe(acp_entry, entry, lhs_list) { @@ -512,7 +515,7 @@ ir_copy_propagation_elements_visitor::kill(kill_entry *k) } /* removal of rhs entries */ - ht_entry = _mesa_hash_table_search(rhs_ht, k->var); + ht_entry = _mesa_hash_table_search_pre_hashed(rhs_ht, hash, k->var); if (ht_entry) { exec_list *rhs_list = (exec_list *) ht_entry->data; acp_ref *ref; -- 2.13.0 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev