13b0846e8STim Northover; RUN: llc < %s -mtriple=arm64-linux-gnu | FileCheck %s
23b0846e8STim Northover
33b0846e8STim Northoverdefine i64 @get_stack() nounwind {
43b0846e8STim Northoverentry:
53b0846e8STim Northover; CHECK-LABEL: get_stack:
63b0846e8STim Northover; CHECK: mov   x0, sp
73b0846e8STim Northover	%sp = call i64 @llvm.read_register.i64(metadata !0)
83b0846e8STim Northover  ret i64 %sp
93b0846e8STim Northover}
103b0846e8STim Northover
113b0846e8STim Northoverdefine void @set_stack(i64 %val) nounwind {
123b0846e8STim Northoverentry:
133b0846e8STim Northover; CHECK-LABEL: set_stack:
143b0846e8STim Northover; CHECK: mov   sp, x0
153b0846e8STim Northover  call void @llvm.write_register.i64(metadata !0, i64 %val)
163b0846e8STim Northover  ret void
173b0846e8STim Northover}
183b0846e8STim Northover
193b0846e8STim Northoverdeclare i64 @llvm.read_register.i64(metadata) nounwind
203b0846e8STim Northoverdeclare void @llvm.write_register.i64(metadata, i64) nounwind
213b0846e8STim Northover
223b0846e8STim Northover; register unsigned long current_stack_pointer asm("sp");
233b0846e8STim Northover; CHECK-NOT: .asciz  "sp"
24*be7ea19bSDuncan P. N. Exon Smith!0 = !{!"sp\00"}
25