[dpdk-dev] [PATCH v6 0/7] rte_hash_crc reworked to be platform-independent
Yerden Zhumabekov
e_zhumabekov at sts.kz
Thu Jan 29 09:48:11 CET 2015
This is a rework of my previous patches improving performance of rte_hash_crc.
Summary of changes:
* software implementation of CRC32 introduced;
* in the runtime, algorithm can fall back to software version if CPU doesn't support SSE4.2;
* best available algorithm is automatically detected upon application startup;
* redundant compile checks removed from test utilities;
* assembly code for emitting SSE4.2 instructions is used instead of built-in intrinsics;
* rte_hash_crc() function performance significantly improved.
v6 changes:
* added 'const' qualifier to crc32c lookup tables declaration.
v5 changes:
* given up gcc's builtin SSE4.2 intrinsics;
* add assembly code for emitting SSE4.2 instructions.
v4 changes:
* icc-specific compile checks removed.
v3 changes:
* setting default algorithm implementation as a constructor while application startup;
* crc32 software implementation improved;
* removed compile-time checks from test_hash_perf and test_hash.
v2 changes:
* added CRC32 software implementation;
* added rte_hash_crc_set_alg() function to control availability of SSE4.2;
* added fallback to sw crc32 in case SSE4.2 is not available, or if SSE4.2 is intentionally disabled.
Initial version (v1) changes:
* added rte_hash_crc_8byte() function to calculate CRC32 on 8-byte operand;
* reworked rte_hash_crc() function which leverages both versions of CRC32 hash calculation functions with 4 and 8-byte operands.
Yerden Zhumabekov (7):
hash: add software CRC32 implementation
hash: add assembly implementation of CRC32 intrinsics
hash: replace built-in functions implementing SSE4.2
hash: add rte_hash_crc_8byte function
hash: add fallback to software CRC32 implementation
hash: rte_hash_crc() slices data into 8-byte pieces
test: remove redundant compile checks
app/test/test_hash.c | 7 -
app/test/test_hash_perf.c | 11 -
lib/librte_hash/rte_hash_crc.h | 459 +++++++++++++++++++++++++++++++++++++++-
3 files changed, 448 insertions(+), 29 deletions(-)
--
1.7.9.5
More information about the dev
mailing list