On Thu, Jan 29, 2015 at 02:48:11PM +0600, Yerden Zhumabekov wrote:
> 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
>
>
Just to be clear, this does build if you compile it against the "default"
machine type, correct?
Neil