[clang] [llvm] [LLVMABI][AARCH64] Handle vector types (PR #225201)

Madhur Amilkanthwar via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 28 01:47:20 PDT 2026


================
@@ -79,9 +89,15 @@ ArgInfo AArch64TargetInfo::classifyReturnType(const Type *RetTy,
   if (RetTy->isVoid())
     return ArgInfo::getIgnore();
 
-  if (RetTy->isVector()) {
-    reportNYI("Vector return type handling");
-    return ArgInfo::getIgnore();
+  if (const auto *VT = dyn_cast<VectorType>(RetTy)) {
+    if (VT->isFixedLengthSVEData() || VT->isFixedLengthSVEPredicate()) {
+      unsigned NSRN = 0, NPRN = 0;
+      return coerceIllegalVector(VT, NSRN, NPRN);
+    }
+
+    // Large vector types should be returned via memory.
+    if (VT->getABISizeInBits() > 128)
+      return getNaturalAlignIndirect(RetTy);
----------------
madhur13490 wrote:

Same rebase issue here. This one won't compile against main because AddrSpace has no default:
`return getNaturalAlignIndirect(RetTy, getAllocaAddrSpace());`

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


More information about the llvm-commits mailing list