diff options
author | Andrew Trick <atrick@apple.com> | 2013-10-31 22:12:01 +0000 |
---|---|---|
committer | Andrew Trick <atrick@apple.com> | 2013-10-31 22:12:01 +0000 |
commit | 2ddc56dec8e523cee56d36e2e4c9a1c469e72e1c (patch) | |
tree | 906a1efff93297e5c940148443feee7366a1b8aa /test | |
parent | 3d74dea4bddc84d1881efc21eb5eefbddbfa9aed (diff) | |
download | llvm-2ddc56dec8e523cee56d36e2e4c9a1c469e72e1c.tar.gz llvm-2ddc56dec8e523cee56d36e2e4c9a1c469e72e1c.tar.bz2 llvm-2ddc56dec8e523cee56d36e2e4c9a1c469e72e1c.tar.xz |
Add new calling convention for WebKit Java Script.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193812 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/patchpoint.ll | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/CodeGen/X86/patchpoint.ll b/test/CodeGen/X86/patchpoint.ll index 9226adfdae..36cca84932 100644 --- a/test/CodeGen/X86/patchpoint.ll +++ b/test/CodeGen/X86/patchpoint.ll @@ -42,6 +42,26 @@ entry: ret void } +; Test the webkit_jscc calling convention. +; Two arguments will be pushed on the stack. +; Return value in $rax. +define void @jscall_patchpoint_codegen(i64 %p1, i64 %p2, i64 %p3, i64 %p4) { +entry: +; CHECK-LABEL: _jscall_patchpoint_codegen: +; CHECK: Ltmp +; CHECK: movq %r{{.+}}, 8(%rsp) +; CHECK: movq %r{{.+}}, (%rsp) +; CHECK: movq $-559038736, %rax +; CHECK: Ltmp +; CHECK: callq *%rax +; CHECK: movq %rax, 8(%rsp) +; CHECK: callq + %resolveCall2 = inttoptr i64 -559038736 to i8* + %result = tail call webkit_jscc i64 (i32, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.i64(i32 5, i32 12, i8* %resolveCall2, i32 2, i64 %p1, i64 %p2) + %resolveCall3 = inttoptr i64 -559038737 to i8* + tail call webkit_jscc void (i32, i32, i8*, i32, ...)* @llvm.experimental.patchpoint.void(i32 6, i32 12, i8* %resolveCall3, i32 2, i64 %p1, i64 %result) + ret void +} declare void @llvm.experimental.stackmap(i32, i32, ...) declare void @llvm.experimental.patchpoint.void(i32, i32, i8*, i32, ...) |