brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.7 KiB · f77ada4 Raw
51 lines · plain
1; RUN: llc < %s -mtriple=arm64-apple-ios-8.0.0 | FileCheck -check-prefix CHECK -check-prefix CHECK-DARWIN %s2; RUN: llc < %s -mtriple=aarch64-unknown-windows-msvc | FileCheck -check-prefix CHECK -check-prefix CHECK-WIN %s3 4declare void @standard_cc_func()5declare preserve_mostcc void @preserve_mostcc_func()6 7; Registers r9-r15 should be saved before the call of a function8; with a standard calling convention.9define preserve_mostcc void @preserve_mostcc1() nounwind {10entry:11;CHECK-LABEL: preserve_mostcc112;CHECK-DARWIN-NOT:   stp13;CHECK-DARWIN-NOT:   str14;CHECK-DARWIN:       str     x1515;CHECK-DARWIN-NEXT:  stp     x14, x13,16;CHECK-DARWIN-NEXT:  stp     x12, x11,17;CHECK-DARWIN-NEXT:  stp     x10, x9,18;CHECK-WIN:       stp     x15, x1419;CHECK-WIN-NEXT:  stp     x13, x12,20;CHECK-WIN-NEXT:  stp     x11, x10,21;CHECK-WIN-NEXT:  stp     x9, x3022;CHECK:       bl      {{_?}}standard_cc_func23  call void @standard_cc_func()24;CHECK-DARWIN:       ldp     x10, x9,25;CHECK-DARWIN-NEXT:  ldp     x12, x11,26;CHECK-DARWIN-NEXT:  ldp     x14, x13,27;CHECK-DARWIN-NEXT:  ldr     x1528;CHECK-WIN:       ldp     x9, x3029;CHECK-WIN-NEXT:  ldp     x11, x10,30;CHECK-WIN-NEXT:  ldp     x13, x12,31;CHECK-WIN-NEXT:  ldp     x15, x14,32  ret void33}34 35; Registers r9-r15 don't need to be saved if one36; function with preserve_mostcc calling convention calls another37; function with preserve_mostcc calling convention, because the38; callee wil save these registers anyways.39define preserve_mostcc void @preserve_mostcc2() nounwind {40entry:41;CHECK-LABEL: preserve_mostcc242;CHECK-NOT: x1443;CHECK-DARWIN:     stp     x29, x30,44;CHECK-WIN:     str     x3045;CHECK-NOT: x1446;CHECK:     bl      {{_?}}preserve_mostcc_func47  call preserve_mostcc void @preserve_mostcc_func()48  ret void49}50 51