Skip to content
Commit d132fdd7 authored by Francesco Petrogalli's avatar Francesco Petrogalli
Browse files

[SVE] Add support for the SVE target.

This commit adds support for the AArch64 Scalable Vector Extension
(SVE) [1]. The vector functions are provided to target Vector Length
Agnostic (VLA) execution [2].

To build SLEEF with SVE support, a compiler that support the SVE Arm C
Language Extensions (ACLE) [2] must be used.

At the time of publishing this patch, the only compiler with SVE ACLE
support is Arm Compiler for HPC [3].

The Cmake configuration expectes Arm Instruction Emulator (ArmIE) [4]
to execute the tests on native AArch64 hardware without SVE support.

The SVE target is build without taking advantage of the native masking
capabilities of SVE. This will be targeted in a upcoming release of
SLEEF, together with the AVX512F native masking capabilities [5].

Additional changes introduced in this patch are:

1. The mkrename* script have been modified to support VLA names in the
   functions. In particular, 'x' is used to represent the vector
   length of the SVE symbols.

2. '__sizeless_struct' is a prototype language extension only
   implemented by Arm Compiler For HPC [3] to allow the declaration of
   SVE tuple types as described in section 3.4 of Arm C Language
   Extensions for SVE [2].

3. A new 'iutsve' executable is generated to test the SVE functions.

[1] https://developer.arm.com/products/software-development-tools/hpc/sve
[2] https://developer.arm.com/docs/100987/0000
[3] https://developer.arm.com/products/software-development-tools/hpc/arm-compiler-for-hpc
[4] https://developer.arm.com/products/software-development-tools/hpc/arm-instruction-emulator
[5] https://github.com/shibatch/sleef/issues/142
parent e743af59
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment