[PATCH] D153659: [RISCV] Fix name mangling for LMUL!=1 vector types with attribute(rvv_vector_bits)
Craig Topper via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Mon Jul 10 13:29:26 PDT 2023
craig.topper added inline comments.
================
Comment at: clang/lib/AST/ItaniumMangle.cpp:3879
+
+ Out << "9__RVV_VLSI" << 'u' << TypeNameStr.size() << TypeNameStr << "Lj"
<< VecSizeInBits << "EE";
----------------
aaron.ballman wrote:
> CC @rjmccall for ABI review -- naïve, possibly dumb question: shouldn't we be using the vendor extended builtin type encoding for this sort of thing? (https://itanium-cxx-abi.github.io/cxx-abi/abi.html#mangle.builtin-type)
I copied what SVE did and changed to use `__RVV_VLSI` as the name.
Here's the text from ACLE
14.2.6.3.5 C++ mangling of fixed-length SVE types Let VLST be a valid C++ type:
```
VLAT __attribute__((arm_sve_vector_bits(N)))
```
for some SVE vector type or SVE predicate type VLAT. VLST is mangled in the same way as a template:
```
template<typename, unsigned> struct __SVE_VLS;
with the arguments:
__SVE_VLS<VLAT, N>
```
For example:
```
#if __ARM_FEATURE_SVE_BITS==512
// Mangled as 9__SVE_VLSIu11__SVInt32_tLj512EE
typedef svint32_t vec __attribute__((arm_sve_vector_bits(512)));
// Mangled as 9__SVE_VLSIu10__SVBool_tLj512EE
typedef svbool_t pred __attribute__((arm_sve_vector_bits(512)));
#endif
```
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D153659/new/
https://reviews.llvm.org/D153659
More information about the cfe-commits
mailing list