diff options
author | Cullen Rhodes <cullen.rhodes@arm.com> | 2020-09-08 17:14:17 +0000 |
---|---|---|
committer | Cullen Rhodes <cullen.rhodes@arm.com> | 2020-09-11 09:46:35 +0000 |
commit | 002f5ab3b171c7d9c9ea192b04a5303be78f6e52 (patch) | |
tree | 48759434cfeae83e05d77fd4ec9d6f4c5d004151 /clang/lib/Frontend/CreateInvocationFromCommandLine.cpp | |
parent | 70a05ee2880e0ad88416ae4b4bed3cadc53e5cd1 (diff) | |
download | llvm-002f5ab3b171c7d9c9ea192b04a5303be78f6e52.zip llvm-002f5ab3b171c7d9c9ea192b04a5303be78f6e52.tar.gz llvm-002f5ab3b171c7d9c9ea192b04a5303be78f6e52.tar.bz2 |
[clang][aarch64] Fix ILP32 ABI for arm_sve_vector_bits
The element types of scalable vectors are defined in terms of stdint
types in the ACLE. This patch fixes the mapping to builtin types for the
ILP32 ABI when creating VLS types with the arm_sve_vector_bits, where
the mapping is as follows:
int32_t -> LongTy
int64_t -> LongLongTy
uint32_t -> UnsignedLongTy
uint64_t -> UnsignedLongLongTy
This is implemented by leveraging getBuiltinVectorTypeInfo which is
target agnostic since it calls ASTContext::getIntTypeForBitwidth for
integer types. The element type for svfloat16_t is changed from
Float16Ty to HalfTy when creating VLS types since this is what is used
elsewhere.
For more information, see:
https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst#types-varying-by-data-model
https://github.com/ARM-software/abi-aa/blob/master/aapcs64/aapcs64.rst#appendix-support-for-scalable-vectors
Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D87358
Diffstat (limited to 'clang/lib/Frontend/CreateInvocationFromCommandLine.cpp')
0 files changed, 0 insertions, 0 deletions