9 rte_hash_k16_cmp_eq(
const void *key1,
const void *key2,
size_t key_len
__rte_unused)
11 xmm_t tmp, tmp1, v_zeros = {.u64 = {0, 0} };
13 tmp.v2i64 = __msa_ld_d((
const xmm_t *) key1, 0);
15 tmp.v2i64 = __msa_ld_d((
const xmm_t *) key2, 0);
17 tmp.v16u8 = __msa_xor_v(k1.v16u8, k2.v16u8);
20 tmp1.v2i64 = __msa_ceq_d(x.v2i64, v_zeros.v2i64);
21 tmp.v2i64 = __msa_pcnt_d(tmp1.v2i64);
22 cnt += __msa_copy_u_d(tmp.v2i64, 0);
23 cnt += __msa_copy_u_d(tmp.v2i64, 1);
24 cnt = ((cnt == 128) ? 0 : 1);
29 rte_hash_k32_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
31 return rte_hash_k16_cmp_eq(key1, key2, key_len) ||
32 rte_hash_k16_cmp_eq((
const char *) key1 + 16,
33 (
const char *) key2 + 16, key_len);
37 rte_hash_k48_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
39 return rte_hash_k16_cmp_eq(key1, key2, key_len) ||
40 rte_hash_k16_cmp_eq((
const char *) key1 + 16,
41 (
const char *) key2 + 16, key_len) ||
42 rte_hash_k16_cmp_eq((
const char *) key1 + 32,
43 (
const char *) key2 + 32, key_len);
47 rte_hash_k64_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
49 return rte_hash_k32_cmp_eq(key1, key2, key_len) ||
50 rte_hash_k32_cmp_eq((
const char *) key1 + 32,
51 (
const char *) key2 + 32, key_len);
55 rte_hash_k80_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
57 return rte_hash_k64_cmp_eq(key1, key2, key_len) ||
58 rte_hash_k16_cmp_eq((
const char *) key1 + 64,
59 (
const char *) key2 + 64, key_len);
63 rte_hash_k96_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
65 return rte_hash_k64_cmp_eq(key1, key2, key_len) ||
66 rte_hash_k32_cmp_eq((
const char *) key1 + 64,
67 (
const char *) key2 + 64, key_len);
71 rte_hash_k112_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
73 return rte_hash_k64_cmp_eq(key1, key2, key_len) ||
74 rte_hash_k32_cmp_eq((
const char *) key1 + 64,
75 (
const char *) key2 + 64, key_len) ||
76 rte_hash_k16_cmp_eq((
const char *) key1 + 96,
77 (
const char *) key2 + 96, key_len);
81 rte_hash_k128_cmp_eq(
const void *key1,
const void *key2,
size_t key_len)
83 return rte_hash_k64_cmp_eq(key1, key2, key_len) ||
84 rte_hash_k64_cmp_eq((
const char *) key1 + 64,
85 (
const char *) key2 + 64, key_len);