Go to file
Jerry Yu 183385f02f multibinary: Add run-time cpu feature detect for aarch64
Some CPUs  report "illegal instruction" error for the crc test because
they do not support the relevant optional feature . This can be fixed by
introducing CPU feature detection for AArch64 .

The difference with the x86 implementation is the dispatcher . It is based
on the glibc function `getauxval(AT_HWCAP)` and `getauxval(AT_HWCAP2)` , not
registers or instructions .

On a  heterogeneous system (big.LITTLE) , it is dangerous to detect CPU
features using identification registers . And while it is possible to use
architectural feature registers from userspace on recent kernels, this
won't necessarily work with older platforms . Thus we use the HW_CAPs
exported from the kernel (and visible in getauxval) as the solution.

- According to kernel suggestion , getauxval should be used for this purpose .
  - [CPU Feature detection](https://github.com/torvalds/linux/blob/master/Documentation/arm64/cpu-feature-registers.rst)
- According to  AAPCS result/paramter registers should be saved/restore for function call
  - [AAPCS](http://infocenter.arm.com/help/topic/com.arm.doc.ihi0055b/IHI0055B_aapcs64.pdf)
  - [GLibc](https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=blob;f=sysdeps/aarch64/dl-trampoline.S)

Signed-off-by: Jerry Yu <jerry.h.yu@arm.com>
Change-Id: Ic9abe0d2268ac95537e1abf10acc642fc58a5054
2019-08-26 17:58:42 +08:00
crc multibinary: Add run-time cpu feature detect for aarch64 2019-08-26 17:58:42 +08:00
erasure_code ec: Fix incorrect min size stated for gf_vect_mad 2019-07-16 15:41:34 -07:00
examples/ec all: Revamp performance testing to be time based 2019-03-07 09:28:04 -07:00
igzip igzip: optimize convert_dist_to_dist_sym to branchless 2019-08-13 11:02:53 +08:00
include multibinary: Add run-time cpu feature detect for aarch64 2019-08-26 17:58:42 +08:00
mem multibinary: Add run-time cpu feature detect for aarch64 2019-08-26 17:58:42 +08:00
programs Format only changes for new indent version 2019-07-03 15:17:02 -07:00
raid multibinary: Add run-time cpu feature detect for aarch64 2019-08-26 17:58:42 +08:00
tests/fuzz aarch64: Cleanup build issues 2019-03-20 10:15:40 +08:00
tools ci: add drone.io for arm64 verification 2019-08-19 11:21:10 -07:00
.drone.yml ci: add drone.io for arm64 verification 2019-08-19 11:21:10 -07:00
.gitignore build: Add gitignore 2019-05-01 16:48:10 -07:00
.travis.yml Update travis with more nasm builds 2019-07-16 16:09:16 -07:00
autogen.sh Initial commit isa-l v2.14.1 2016-02-24 14:54:34 -07:00
configure.ac build: Bump revision to 2.27 2019-06-24 10:47:15 -07:00
CONTRIBUTING.md build: Add format checking script 2017-08-25 13:37:13 -07:00
Doxyfile doc: Add contributing and mainpage to doxygen 2018-06-21 14:39:08 -07:00
isa-l.def build: Bump revision to 2.27 2019-06-24 10:47:15 -07:00
libisal.pc.in Initial commit isa-l v2.14.1 2016-02-24 14:54:34 -07:00
LICENSE build: Bump revision to 2.19 2017-06-26 04:47:40 -04:00
make.inc multibinary: Add run-time cpu feature detect for aarch64 2019-08-26 17:58:42 +08:00
Makefile.am multibinary: Add run-time cpu feature detect for aarch64 2019-08-26 17:58:42 +08:00
Makefile.nmake igzip: Remove igzip_inflate_perf 2019-03-07 09:28:04 -07:00
Makefile.unx mem: Add zero detect memory functions 2018-09-25 14:33:31 -07:00
README.md doc: Update references to new github group 2019-05-01 18:27:24 -07:00
Release_notes.txt Update release notes for v2.27 additions 2019-06-24 13:13:07 -07:00

Intel(R) Intelligent Storage Acceleration Library

Build Status

ISA-L is a collection of optimized low-level functions targeting storage applications. ISA-L includes:

  • Erasure codes - Fast block Reed-Solomon type erasure codes for any encode/decode matrix in GF(2^8).
  • CRC - Fast implementations of cyclic redundancy check. Six different polynomials supported.
    • iscsi32, ieee32, t10dif, ecma64, iso64, jones64.
  • Raid - calculate and operate on XOR and P+Q parity found in common RAID implementations.
  • Compression - Fast deflate-compatible data compression.
  • De-compression - Fast inflate-compatible data compression.

Also see:

Building ISA-L

Prerequisites

  • Assembler: nasm v2.11.01 or later (nasm v2.13 or better suggested for building in AVX512 support) or yasm version 1.2.0 or later.
  • Compiler: gcc, clang, icc or VC compiler.
  • Make: GNU 'make' or 'nmake' (Windows).
  • Optional: Building with autotools requires autoconf/automake packages.

Autotools

To build and install the library with autotools it is usually sufficient to run:

./autogen.sh
./configure
make
sudo make install

Makefile

To use a standard makefile run:

make -f Makefile.unx

Windows

On Windows use nmake to build dll and static lib:

nmake -f Makefile.nmake

Other make targets

Other targets include:

  • make check : create and run tests
  • make tests : create additional unit tests
  • make perfs : create included performance tests
  • make ex : build examples
  • make other : build other utilities such as compression file tests
  • make doc : build API manual