[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
Loading
Please register or sign in to comment