From 2fcebf2f1e153d7799c0375d301e020bc7570bec Mon Sep 17 00:00:00 2001 From: Felix DeGrood Date: Wed, 11 Sep 2024 22:11:17 +0000 Subject: [PATCH] util: add hash functions for u64 data type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reviewed-by: José Roberto de Souza Part-of: --- src/util/hash_table.c | 12 ++++++++++++ src/util/hash_table.h | 2 ++ 2 files changed, 14 insertions(+) diff --git a/src/util/hash_table.c b/src/util/hash_table.c index 3835ead9255..25b16cd3f31 100644 --- a/src/util/hash_table.c +++ b/src/util/hash_table.c @@ -663,6 +663,12 @@ _mesa_hash_u32(const void *key) return XXH32(key, 4, 0); } +uint32_t +_mesa_hash_u64(const void *key) +{ + return XXH32(key, 8, 0); +} + /** FNV-1a string hash implementation */ uint32_t _mesa_hash_string(const void *_key) @@ -709,6 +715,12 @@ _mesa_key_u32_equal(const void *a, const void *b) return *((const uint32_t *)a) == *((const uint32_t *)b); } +bool +_mesa_key_u64_equal(const void *a, const void *b) +{ + return *((const uint64_t *)a) == *((const uint64_t *)b); +} + /** * String compare function for use as the comparison callback in * _mesa_hash_table_create(). diff --git a/src/util/hash_table.h b/src/util/hash_table.h index 31441e28c6e..928f3db7d0d 100644 --- a/src/util/hash_table.h +++ b/src/util/hash_table.h @@ -117,6 +117,7 @@ uint32_t _mesa_hash_data_with_seed(const void *data, size_t size, uint32_t seed) uint32_t _mesa_hash_int(const void *key); uint32_t _mesa_hash_uint(const void *key); uint32_t _mesa_hash_u32(const void *key); +uint32_t _mesa_hash_u64(const void *key); uint32_t _mesa_hash_string(const void *key); uint32_t _mesa_hash_string_with_length(const void *_key, unsigned length); uint32_t _mesa_hash_pointer(const void *pointer); @@ -124,6 +125,7 @@ uint32_t _mesa_hash_pointer(const void *pointer); bool _mesa_key_int_equal(const void *a, const void *b); bool _mesa_key_uint_equal(const void *a, const void *b); bool _mesa_key_u32_equal(const void *a, const void *b); +bool _mesa_key_u64_equal(const void *a, const void *b); bool _mesa_key_string_equal(const void *a, const void *b); bool _mesa_key_pointer_equal(const void *a, const void *b);