hash: use armv8-a CRC32 instructions
authorJerin Jacob <jerin.jacob@caviumnetworks.com>
Mon, 23 Nov 2015 18:45:36 +0000 (00:15 +0530)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 25 Nov 2015 21:13:15 +0000 (22:13 +0100)
commitda8dcc27f644bf5d895adb4a1d7a5aa38c12a10f
treefc8a06d4e3fabd126175f8ed3ee09702ff28015c
parentf123e3d2ca920ded04aa4346756b937ab88ff699
hash: use armv8-a CRC32 instructions

armv8-a has optional CRC32 extension, march=armv8-a+crc enables code
generation for the ARMv8-A architecture together with
the optional CRC32 extensions.

added RTE_MACHINE_CPUFLAG_CRC32 to detect the availability of
CRC32  extension in compile time. At run-time, The RTE_CPUFLAG_CRC32
can be used to find the availability.

armv8-a+crc target support added in GCC 4.9,
Used inline assembly and emulated __ARM_FEATURE_CRC32 to work
with tool-chain < 4.9

Signed-off-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
app/test/test_hash.c
lib/librte_hash/Makefile
lib/librte_hash/rte_crc_arm64.h [new file with mode: 0644]
lib/librte_hash/rte_hash_crc.h
mk/machine/armv8a/rte.vars.mk
mk/machine/thunderx/rte.vars.mk
mk/rte.cpuflags.mk
mk/toolchain/gcc/rte.toolchain-compat.mk