; RUN: llc < %s -mtriple=arm64-apple-ios-8.0.0 | FileCheck %s declare void @standard_cc_func() declare preserve_mostcc void @preserve_mostcc_func() ; Registers r9-r15 should be saved before the call of a function ; with a standard calling convention. define preserve_mostcc void @preserve_mostcc1() nounwind { entry: ;CHECK-LABEL: preserve_mostcc1 ;CHECK-NOT: stp ;CHECK-NOT: str ;CHECK: str x15 ;CHECK-NEXT: stp x14, x13, ;CHECK-NEXT: stp x12, x11, ;CHECK-NEXT: stp x10, x9, ;CHECK: bl _standard_cc_func call void @standard_cc_func() ;CHECK: ldp x10, x9, ;CHECK-NEXT: ldp x12, x11, ;CHECK-NEXT: ldp x14, x13, ;CHECK-NEXT: ldr x15 ret void } ; Registers r9-r15 don't need to be saved if one ; function with preserve_mostcc calling convention calls another ; function with preserve_mostcc calling convention, because the ; callee wil save these registers anyways. define preserve_mostcc void @preserve_mostcc2() nounwind { entry: ;CHECK-LABEL: preserve_mostcc2 ;CHECK-NOT: x14 ;CHECK: stp x29, x30, ;CHECK-NOT: x14 ;CHECK: bl _preserve_mostcc_func call preserve_mostcc void @preserve_mostcc_func() ret void }