[ovs-dev] [PATCH v1 1/1] hash: Enable hash_bytes128 optimization for aarch64.
Yanqin Wei
Yanqin.Wei at arm.com
Wed Feb 27 09:44:06 UTC 2019
"hash_bytes128" has two versions for 64 bits and 32 bits system. This
should be common optimization for their respective platforms. But 64 bits
version was only enabled in x86-64. This patch enable it for aarch64
platform.
Micro benchmarking test was run in two kinds of arm platform. It was
observed that 50% performance improvement in thunderX2 and 40% improvement
in TaiShan(Cortex-A72).
Signed-off-by: Yanqin Wei <Yanqin.Wei at arm.com>
---
lib/hash.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/lib/hash.c b/lib/hash.c
index c64f25e..06f8339 100644
--- a/lib/hash.c
+++ b/lib/hash.c
@@ -72,7 +72,7 @@ hash_words64__(const uint64_t p[], size_t n_words, uint32_t basis)
return hash_words64_inline(p, n_words, basis);
}
-#if !(defined(__x86_64__))
+#if !(defined(__x86_64__)) && !(defined(__aarch64__))
void
hash_bytes128(const void *p_, size_t len, uint32_t basis, ovs_u128 *out)
{
@@ -233,7 +233,7 @@ hash_bytes128(const void *p_, size_t len, uint32_t basis, ovs_u128 *out)
out->u32[3] = h4;
}
-#else /* __x86_64__ */
+#else /* __x86_64__ or __aarch64__*/
static inline uint64_t
hash_rot64(uint64_t x, int8_t r)
@@ -361,4 +361,4 @@ hash_bytes128(const void *p_, size_t len, uint32_t basis, ovs_u128 *out)
out->u64.lo = h1;
out->u64.hi = h2;
}
-#endif /* __x86_64__ */
+#endif /* __x86_64__ or __aarch64__*/
--
2.7.4
More information about the dev
mailing list