summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYanqin Wei <Yanqin.Wei@arm.com>2019-02-27 17:44:06 +0800
committerBen Pfaff <blp@ovn.org>2019-02-27 10:22:52 -0800
commitd74c920219e3df88a9f535d7e3d2df279463a048 (patch)
tree6b2d2af29bfe9beb2c400eae116a4cda26e23b23 /lib
parentec9895b210f6206cfa7ae2fa665b0192e7e0f184 (diff)
downloadopenvswitch-d74c920219e3df88a9f535d7e3d2df279463a048.tar.gz
hash: Enable hash_bytes128 optimization for aarch64.
"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@arm.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/hash.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/hash.c b/lib/hash.c
index c64f25e63..06f83395c 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__*/