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

Reply via email to