Add Highway CRC implementation
Description
This MR adds a Highway ported implementation of the armral CRC function set. The merge includes the following changes:
- Added a Google Highway submodule
- Updated the build process to compile Google Highway, when selected
- Split the acle and highway build targets using custom cmake files:
armral_acle.cmake.in
andarmral_hwy.cmake.in
- Added a Highway implementation for the functions in
crc_common.hpp
, this was done by moving theacle
implementation to its own subfolder and adding the Highway implementation to ahighway
subdirectory. A commoncrc_common.hpp
selects the appropriate implementation. - Added a
hwy_types.hpp
header file. - Benchmarks and unit-tests have been added.
Checklist
- [] Contribution meets RAL's licence terms
- [] New functions adhere to RAL's naming scheme
- [] Contribution conforms to RAL's directory structure
- [] Documentation updated
- [] "Unreleased" section of the Changelog updated
- []
clang-format
andclang-tidy
run and changes included (C/C++ code) - []
flake8
run and changes included (Python code) - []
cmake-format
run and changes included (CMake code) - [] Tests added or updated
- [] Tests pass when run with AddressSanitizer
- [] Benchmarks added or updated
For any items that are not checked, please provide details.