HomePhabricator

[AArch64][SVE] Enable __ARM_FEATURE_SVE macros.

Authored by sdesmalen on Jun 24 2020, 8:52 AM.

Description

[AArch64][SVE] Enable __ARM_FEATURE_SVE macros.

This patch enables the following macros when their corresponding
target attributes are set:

__ARM_FEATURE_SVE (+sve)
__ARM_FEATURE_SVE2 (+sve2)
__ARM_FEATURE_SVE2_AES (+sve2-aes)
__ARM_FEATURE_SVE2_BITPERM (+sve2-bitperm)
__ARM_FEATURE_SVE2_SHA3 (+sve2-sha3)
__ARM_FEATURE_SVE2_SM4 (+sve2-sm4)

This implies that the base SVE and SVE2 ACLE (00bet2) are now feature
complete, meaning that all intrinsics are implemented in LLVM and Clang.

Disclaimer:

To implement the ACLE we have had to fix up many parts of LLVM to make it
support scalable vectors. We have also used many target-specific intrinsics
to reduce reliance on parts of LLVM where we know scalable vectors may
not yet be handled properly (e.g. some transformation might drop the
'scalable' flag on a vector type). While we've done a best effort with
the limited testing that is available to us, we're still working to improve the
stability of the implementation. Additionally, Clang may print warnings
that code may have miscompiled. We find this often to be a false alarm
where the wrong interfaces have been used in LLVM and where resulting
code is not actually incorrect. However, this warrants a bug report
and investigation. If you find any bugs or issues, please raise them on
bugs.llvm.org and let us know!

Reviewers: rengolin, efriedma, david-arm, SjoerdMeijer

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D81725

Details

Committed
sdesmalenJun 25 2020, 12:14 AM
Reviewer
SjoerdMeijer
Differential Revision
D81725: [AArch64][SVE] Enable __ARM_FEATURE_SVE macros.
Parents
rG2bfce22a924a: [OpenMP] Upgrade default version of OpenMP to 5.0
Branches
Unknown
Tags
Unknown