[PATCH] D125419: [Arm64EC 7/?] clang side of Arm64EC varargs ABI.

John McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Mon Sep 5 19:49:35 PDT 2022


rjmccall added inline comments.


================
Comment at: clang/lib/CodeGen/TargetInfo.cpp:2457
+                    /*IsVectorCall=*/false, /*IsRegCall=*/false);
+  }
+
----------------
efriedma wrote:
> rjmccall wrote:
> > Hmm.  Doesn't EC ABI lowering need to preserve this same state, or else you'll get incompatibilities when you exhaust SSE registers?
> > 
> > Should you just be calling over to this at a higher-level point, like in `computeInfo`?
> If both IsVectorCall and IsRegCall are false, WinX86_64ABIInfo doesn't use FreeSSERegs, so we don't need to preserve its state.  There isn't any other relevant state to preserve.
> 
> Return values follow the Arm64 ABI rules, not the x64 rules, so using computeInfo() as an entry point doesn't really make sense.
That's odd.  I assume this whole thing is about matching the CC you would get from an instruction-by-instruction translation of x86_64 assembly so that arm64-compiled code can call / be called from translated assembly as long as it uses this special CC.  Are there just no functions with interesting return types that anybody happens to care about calling across such a boundary?  I would be amazed if the standard arm64 and x64 return rules just happily match for all types.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D125419



More information about the cfe-commits mailing list