[PATCH] D95443: IR/AArch64/X86: add "swifttailcc" calling convention.

Jon Roelofs via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed May 5 08:46:55 PDT 2021


jroelofs added subscribers: compnerd, jroelofs.
jroelofs added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:196
 
-/// Returns the argument pop size.
-static uint64_t getArgumentPopSize(MachineFunction &MF,
-                                   MachineBasicBlock &MBB) {
+// Returns how much of the incoming argument stack area we should clean up in an
+// epilogue. For the C calling convention this will be 0, for guaranteed tail
----------------
measured in bytes?


================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:320
   } else {
+    assert(AFI->getTailCallReservedStack() == 0 &&
+           "don't know how guaranteed tail calls might work on Win64");
----------------
@compnerd might know?


================
Comment at: llvm/lib/Target/AArch64/AArch64FrameLowering.cpp:1751
+    // may clobber), convert it to a post-index ldp.
+    if (OffsetOp.getImm() == 0 && AfterCSRPopSize >= 0)
       convertCalleeSaveRestoreToSPPrePostIncDec(
----------------
What if the pop size is larger than the immediate field in the ldp is able to encode?


================
Comment at: llvm/test/CodeGen/ARM/swifttailcc.ll:3
+
+define float @verify_aapcs_vfp(float %in) {
+; CHECK: vadd.f32 s0, s0, s0
----------------
Is the swifttail attribute implicit here?

Seems like there should be tighter CHECKs for what is expected around the `vadd.f32`.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D95443/new/

https://reviews.llvm.org/D95443



More information about the llvm-commits mailing list