]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crc32c: add aarch64 optimized crc32c implementation 3604/head
authorYazen Ghannam <yazen.ghannam@linaro.org>
Wed, 21 Jan 2015 03:29:05 +0000 (21:29 -0600)
committerYazen Ghannam <yazen.ghannam@linaro.org>
Tue, 17 Mar 2015 18:56:52 +0000 (13:56 -0500)
commit60762338a2bf888d2c20dc221f67c1bbc3142748
treee7f881e9b869258240d5ca02b295a568e8928894
parentbebf8e9a830d998eeaab55f86bb256d4360dd3c4
crc32c: add aarch64 optimized crc32c implementation

ARMv8 defines a set of optional CRC32/CRC32C instructions.
This patch defines an optimized function that uses these
instructions when available rather than table-based lookup.
Optimized function based on a Hadoop patch by Ed Nevill.

Autotools updated to check for compiler support.
Optimized function is selected at runtime based on HWCAP_CRC32.
Added crc32c "performance" unit test and arch unit test.

Tested on AMD Seattle.
Passes all crc32c unit tests.
Unit test shows ~4x performance increase versus sctp.

Signed-off-by: Yazen Ghannam <yazen.ghannam@linaro.org>
Reviewed-by: Steve Capper <steve.capper@linaro.org>
configure.ac
m4/ax_arm.m4
src/arch/arm.c
src/arch/arm.h
src/common/Makefile.am
src/common/crc32c.cc
src/common/crc32c_aarch64.c [new file with mode: 0644]
src/common/crc32c_aarch64.h [new file with mode: 0644]
src/test/common/test_crc32c.cc
src/test/test_arch.cc