diff options
author | Juergen Ributzka <juergen@apple.com> | 2014-01-17 19:47:03 +0000 |
---|---|---|
committer | Juergen Ributzka <juergen@apple.com> | 2014-01-17 19:47:03 +0000 |
commit | ceaf829339bcd0719a43b3e8c22eaab7a973d37d (patch) | |
tree | 1bbfa7182c8258a9231fc0c0292e6885d274f4e9 /lib/Target/X86/X86CallingConv.td | |
parent | 41e1c04201875373f67717c639a6972e23b3816e (diff) | |
download | llvm-ceaf829339bcd0719a43b3e8c22eaab7a973d37d.tar.gz llvm-ceaf829339bcd0719a43b3e8c22eaab7a973d37d.tar.bz2 llvm-ceaf829339bcd0719a43b3e8c22eaab7a973d37d.tar.xz |
Add two new calling conventions for runtime calls
This patch adds two new target-independent calling conventions for runtime
calls - PreserveMost and PreserveAll.
The target-specific implementation for X86-64 is defined as following:
- Arguments are passed as for the default C calling convention
- The same applies for the return value(s)
- PreserveMost preserves all GPRs - except R11
- PreserveAll preserves all GPRs and all XMMs/YMMs - except R11
Reviewed by Lang and Philip
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@199508 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86CallingConv.td')
-rw-r--r-- | lib/Target/X86/X86CallingConv.td | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/Target/X86/X86CallingConv.td b/lib/Target/X86/X86CallingConv.td index e733420e09..5b51a1e8e0 100644 --- a/lib/Target/X86/X86CallingConv.td +++ b/lib/Target/X86/X86CallingConv.td @@ -620,6 +620,16 @@ def CSR_64EHRet : CalleeSavedRegs<(add RAX, RDX, CSR_64)>; def CSR_Win64 : CalleeSavedRegs<(add RBX, RBP, RDI, RSI, R12, R13, R14, R15, (sequence "XMM%u", 6, 15))>; +// All GPRs - except r11 +def CSR_64_RT_MostRegs : CalleeSavedRegs<(add CSR_64, RAX, RCX, RDX, RSI, RDI, + R8, R9, R10, RSP)>; + +// All registers - except r11 +def CSR_64_RT_AllRegs : CalleeSavedRegs<(add CSR_64_RT_MostRegs, + (sequence "XMM%u", 0, 15))>; +def CSR_64_RT_AllRegs_AVX : CalleeSavedRegs<(add CSR_64_RT_MostRegs, + (sequence "YMM%u", 0, 15))>; + def CSR_64_MostRegs : CalleeSavedRegs<(add RBX, RCX, RDX, RSI, RDI, R8, R9, R10, R11, R12, R13, R14, R15, RBP, (sequence "XMM%u", 0, 15))>; |