[all-commits] [llvm/llvm-project] 5637ec: [ARM64EC 4/?] Add LLVM support for varargs calling...
Eli Friedman via All-commits
all-commits at lists.llvm.org
Mon Sep 5 13:10:19 PDT 2022
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: 5637ec0983041b26cdcd2064d8ec6636f352e3c9
https://github.com/llvm/llvm-project/commit/5637ec0983041b26cdcd2064d8ec6636f352e3c9
Author: Eli Friedman <efriedma at quicinc.com>
Date: 2022-09-05 (Mon, 05 Sep 2022)
Changed paths:
M llvm/lib/Target/AArch64/AArch64CallingConvention.h
M llvm/lib/Target/AArch64/AArch64CallingConvention.td
M llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
M llvm/lib/Target/AArch64/AArch64MachineFunctionInfo.h
M llvm/lib/Target/AArch64/GISel/AArch64CallLowering.cpp
A llvm/test/CodeGen/AArch64/arm64ec-varargs.ll
Log Message:
-----------
[ARM64EC 4/?] Add LLVM support for varargs calling convention.
Part of patchset to add initial support for ARM64EC.
The ARM64EC calling convention is the same as ARM64 for non-varargs
functions, but for varargs, the convention is significantly different.
Basically, only x0-x3 registers are used for passing arguments, and x4
and x5 describe the address/size of the arguments passed in memory. (See
https://docs.microsoft.com/en-us/windows/uwp/porting/arm64ec-abi for
more details; see
https://docs.microsoft.com/en-us/cpp/build/x64-calling-convention for
the x64 calling convention rules, which this convention needs to match.)
Note that this currently doesn't handle i128 arguments correctly; as
noted in review, that's sort of complicated to handle, so I'm leaving it
for a followup.
Differential Revision: https://reviews.llvm.org/D125415
More information about the All-commits
mailing list