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