From: Daniel Gregory <[email protected]>

When the RISC-V Zbc (carryless multiplication) extension is present, an
implementation of CRC hashing using hardware instructions is available.
Use it rather than jhash.

Signed-off-by: Daniel Gregory <[email protected]>
Signed-off-by: Daniel Gregory <[email protected]>
---
 lib/hash/rte_cuckoo_hash.c | 3 +++
 lib/hash/rte_fbk_hash.c    | 3 +++
 2 files changed, 6 insertions(+)

diff --git a/lib/hash/rte_cuckoo_hash.c b/lib/hash/rte_cuckoo_hash.c
index da12825c6e..ce45760b3e 100644
--- a/lib/hash/rte_cuckoo_hash.c
+++ b/lib/hash/rte_cuckoo_hash.c
@@ -460,6 +460,9 @@ rte_hash_create(const struct rte_hash_parameters *params)
 #elif defined(RTE_ARCH_ARM64)
        if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_CRC32))
                default_hash_func = (rte_hash_function)rte_hash_crc;
+#elif defined(RTE_ARCH_RISCV)
+       if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_RISCV_EXT_ZBC))
+               default_hash_func = (rte_hash_function)rte_hash_crc;
 #endif
        /* Setup hash context */
        strlcpy(h->name, params->name, sizeof(h->name));
diff --git a/lib/hash/rte_fbk_hash.c b/lib/hash/rte_fbk_hash.c
index 45d4a13427..4266bb5198 100644
--- a/lib/hash/rte_fbk_hash.c
+++ b/lib/hash/rte_fbk_hash.c
@@ -148,6 +148,9 @@ rte_fbk_hash_create(const struct rte_fbk_hash_params 
*params)
 #elif defined(RTE_ARCH_ARM64)
        if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_CRC32))
                default_hash_func = (rte_fbk_hash_fn)rte_hash_crc_4byte;
+#elif defined(RTE_ARCH_RISCV)
+       if (rte_cpu_get_flag_enabled(RTE_CPUFLAG_RISCV_EXT_ZBC))
+               default_hash_func = (rte_fbk_hash_fn)rte_hash_crc_4byte;
 #endif
 
        /* Set up hash table context. */
-- 
2.53.0

Reply via email to