diff options
author | Tilmann Scheller <tilmann.scheller@googlemail.com> | 2011-03-02 19:29:22 +0000 |
---|---|---|
committer | Tilmann Scheller <tilmann.scheller@googlemail.com> | 2011-03-02 19:29:22 +0000 |
commit | f1cc70ca9356b23369b689e17b89c5596d4c913f (patch) | |
tree | d6b4920eec7c5fcaf760fc47949faa3eba18970e /lib/Target/X86/X86CallingConv.td | |
parent | 0dddbc3d1be415afafffff8c95b8e1d7a1631106 (diff) | |
download | llvm-f1cc70ca9356b23369b689e17b89c5596d4c913f.tar.gz llvm-f1cc70ca9356b23369b689e17b89c5596d4c913f.tar.bz2 llvm-f1cc70ca9356b23369b689e17b89c5596d4c913f.tar.xz |
Add Win64 thiscall calling convention.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@126862 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86CallingConv.td')
-rw-r--r-- | lib/Target/X86/X86CallingConv.td | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/Target/X86/X86CallingConv.td b/lib/Target/X86/X86CallingConv.td index a44fb694e7..ad71d8fd22 100644 --- a/lib/Target/X86/X86CallingConv.td +++ b/lib/Target/X86/X86CallingConv.td @@ -215,6 +215,13 @@ def CC_X86_Win64_C : CallingConv<[ // The first 4 integer arguments are passed in integer registers. CCIfType<[i32], CCAssignToRegWithShadow<[ECX , EDX , R8D , R9D ], [XMM0, XMM1, XMM2, XMM3]>>, + + // Do not pass the sret argument in RCX, the Win64 thiscall calling + // convention requires "this" to be passed in RCX. + CCIfCC<"CallingConv::Win64_ThisCall", + CCIfSRet<CCIfType<[i64], CCAssignToRegWithShadow<[RDX , R8 , R9 ], + [XMM1, XMM2, XMM3]>>>>, + CCIfType<[i64], CCAssignToRegWithShadow<[RCX , RDX , R8 , R9 ], [XMM0, XMM1, XMM2, XMM3]>>, |