Module: Mesa
Branch: master
Commit: 0a89c9779a835331dab33dfb852e4b0ab4269de1
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=0a89c9779a835331dab33dfb852e4b0ab4269de1

Author: Timothy Arceri <[email protected]>
Date:   Wed Feb 13 15:17:44 2019 +1100

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 <[email protected]>
Reviewed-by: Jason Ekstrand <[email protected]>

---

 src/compiler/nir/nir_instr_set.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/compiler/nir/nir_instr_set.c b/src/compiler/nir/nir_instr_set.c
index 060bd9eee0..61476c0b03 100644
--- a/src/compiler/nir/nir_instr_set.c
+++ b/src/compiler/nir/nir_instr_set.c
@@ -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;
 }
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to