[SVE] Add support for the SVE target. #180
Merged
+920
−93
Conversation
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] #142
Looks good to me. |
Did you use |
yes |
Might be a good idea to report the |
Here you are.
|
Thanks. What system are you using? |
This one is Firefly-RK3399. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
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:
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.
'__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].
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] #142