[clang] [Clang][AArch64] Fix Pure Scalables Types argument passing and return (PR #112747)

Momchil Velikov via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 24 09:27:52 PDT 2024


================
@@ -303,6 +368,20 @@ AArch64ABIInfo::classifyArgumentType(QualType Ty, bool IsVariadic,
       if (EIT->getNumBits() > 128)
         return getNaturalAlignIndirect(Ty, false);
 
+    if (const BuiltinType *BT = Ty->getAs<BuiltinType>()) {
+      if (BT->isSVEBool() || BT->isSVECount())
+        NPRN = std::min(NPRN + 1, 4u);
+      else if (BT->getKind() == BuiltinType::SveBoolx2)
+        NPRN = std::min(NPRN + 2, 4u);
+      else if (BT->getKind() == BuiltinType::SveBoolx4)
+        NPRN = std::min(NPRN + 4, 4u);
+      else if (BT->isFloatingPoint() || BT->isVectorType())
----------------
momchil-velikov wrote:

Fixed and tests added.

https://github.com/llvm/llvm-project/pull/112747


More information about the cfe-commits mailing list