summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2013-10-31 22:12:01 +0000
committerAndrew Trick <atrick@apple.com>2013-10-31 22:12:01 +0000
commit2ddc56dec8e523cee56d36e2e4c9a1c469e72e1c (patch)
tree906a1efff93297e5c940148443feee7366a1b8aa /test
parent3d74dea4bddc84d1881efc21eb5eefbddbfa9aed (diff)
downloadllvm-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.ll20
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, ...)