rjmccall added a comment.

Implementation LGTM.



================
Comment at: include/clang/Basic/AttrDocs.td:1753
+This means it is more efficient to call such functions from code that performs
+extensive floating-point and vector calculations, because fewer live SIMD&FP
+registers need to be saved. This property makes it well-suited for e.g.
----------------
Please spell out "and".


================
Comment at: include/clang/Basic/AttrDocs.td:1758
+
+Using this attribute however, also means that it is more expensive to call
+a function that adheres to the default calling convention from within such
----------------
"However, using this attribute also means..."


================
Comment at: include/clang/Basic/AttrDocs.td:1766
+
+.. _`aarch64_vector_pcs`: 
https://developer.arm.com/products/software-development-tools/hpc/arm-compiler-for-hpc/vector-function-abi
+  }];
----------------
Thanks; other than those two editorial comments, this seems good.


================
Comment at: lib/CodeGen/CGDebugInfo.cpp:1101
   case CC_AAPCS:
+  case CC_AArch64VectorCall:
     return llvm::dwarf::DW_CC_LLVM_AAPCS;
----------------
sdesmalen wrote:
> rjmccall wrote:
> > rnk wrote:
> > > sdesmalen wrote:
> > > > I wasn't really sure whether this requires a corresponding 
> > > > DW_CC_LLVM_AAVPCS record in LLVM, as I couldn't find much about the 
> > > > DW_CC_LLVM_  encodings, specifically whether they align with some 
> > > > agreed encoding that is implemented by GDB/LLDB. Is this defined 
> > > > anywhere, or is it ignored by debuggers at the moment?
> > > DWARF only allows encoding 256 conventions, and we grabbed 0xC[0-F], I 
> > > guess for "clang", so we probably want to be careful about adding 
> > > another. Do you anticipate making debuggers able to call such functions? 
> > > If not, it's probably not worth it.
> > They probably should be callable.
> > 
> > It looks like DWARF reserves the first 64 conventions for general/language 
> > purposes and treats the rest of the range as "user" conventions.   If those 
> > conventions are assumed to be universally unique, that's a really limiting 
> > schema once you started dividing it up by vendor.  If I might make a 
> > suggestion, while there are certainly many calling conventions that are 
> > meant to have universal meaning (e.g. most language-specific conventions), 
> > there are also a large number that are inherently target-specific.  DWARF 
> > already uses a lot of numbers that only make sense in the context of a 
> > target (like register numbers); it would make sense for DWARF to carve out 
> > a range of the encoding space (maybe 16 or 32 numbers) for target-specific 
> > CCs.  This is hardly the first example; consider also all the variant ARM32 
> > CCs or the i386 fastcall CC.
> Great feedback. I think this discussion has a wider scope than this patch and 
> I think its probably best to keep this change as-is for now. We'll first work 
> to add a section to the 'DWARF for the ARM 64-bit Architecture' document 
> describing a DW_AT_calling_convention value for the AArch64 vector PCS and 
> will create a separate patch to LLVM/Clang to implement its support. I've 
> also asked @keith.walker.arm to raise this (encoding space) as a topic with 
> the DWARF standardization committee.
Thank you, I appreciate that.


https://reviews.llvm.org/D54425



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to