[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