diff options
author | Gabriel Ganne <gabriel.ganne@enea.com> | 2017-12-14 16:20:37 +0100 |
---|---|---|
committer | Damjan Marion <dmarion.lists@gmail.com> | 2017-12-16 19:32:25 +0000 |
commit | 8e66b9bf4ba90279631e6a0e8ccc2eab5f9156c2 (patch) | |
tree | e76209cf954906eda9c0f50b029f87637bdb9099 /src/plugins | |
parent | f9dc9c4629bb9756013f7c727d67e0d3990cff3c (diff) |
Use crc32 wrapper (VPP-1086)
This allows arm platforms to also take advantage of crc32 hardware
acceleration.
* add a wrapper for crc32_u64. It's the only one really used. Using it
instead of a call to clib_crc32c() eases building symmetrical hash
functions.
* replace #ifdef on SSE4 by a test on clib_crc32c_uses_intrinsics.
Note: keep the test on i386
* fix typo in lb test log
Change-Id: I03a0897b70f6c1717e6901d93cf0fe024d5facb5
Signed-off-by: Gabriel Ganne <gabriel.ganne@enea.com>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/lb/lbhash.h | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/plugins/lb/lbhash.h b/src/plugins/lb/lbhash.h index c514fb57d75..10d3beab13b 100644 --- a/src/plugins/lb/lbhash.h +++ b/src/plugins/lb/lbhash.h @@ -101,16 +101,16 @@ void lb_hash_free(lb_hash_t *h) vec_free(mem); } -#if __SSE4_2__ && !defined (__i386__) +#if defined(clib_crc32c_uses_intrinsics) && !defined (__i386__) static_always_inline u32 lb_hash_hash(u64 k0, u64 k1, u64 k2, u64 k3, u64 k4) { u64 val = 0; - val = _mm_crc32_u64(val, k0); - val = _mm_crc32_u64(val, k1); - val = _mm_crc32_u64(val, k2); - val = _mm_crc32_u64(val, k3); - val = _mm_crc32_u64(val, k4); + val = crc32_u64(val, k0); + val = crc32_u64(val, k1); + val = crc32_u64(val, k2); + val = crc32_u64(val, k3); + val = crc32_u64(val, k4); return (u32) val; } #else |