1 ; RUN: llc < %s -mtriple=aarch64-apple-darwin | FileCheck %s 2 3 target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128" 4 5 ; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps 6 ; CHECK-NEXT: __LLVM_StackMaps: 7 ; Header 8 ; CHECK-NEXT: .byte 1 9 ; CHECK-NEXT: .byte 0 10 ; CHECK-NEXT: .short 0 11 ; Num Functions 12 ; CHECK-NEXT: .long 1 13 ; Num LargeConstants 14 ; CHECK-NEXT: .long 0 15 ; Num Callsites 16 ; CHECK-NEXT: .long 1 17 18 ; Functions and stack size 19 ; CHECK-NEXT: .quad _stackmap_liveness 20 ; CHECK-NEXT: .quad 16 21 22 ; Test that the return register is recognized as an live-out. 23 define i64 @stackmap_liveness(i1 %c) { 24 ; CHECK-LABEL: .long L{{.*}}-_stackmap_liveness 25 ; CHECK-NEXT: .short 0 26 ; CHECK-NEXT: .short 0 27 ; Padding 28 ; CHECK-NEXT: .short 0 29 ; Num LiveOut Entries: 1 30 ; CHECK-NEXT: .short 2 31 ; LiveOut Entry 0: X0 32 ; CHECK-NEXT: .short 0 33 ; CHECK-NEXT: .byte 0 34 ; CHECK-NEXT: .byte 8 35 ; LiveOut Entry 1: SP 36 ; CHECK-NEXT: .short 31 37 ; CHECK-NEXT: .byte 0 38 ; CHECK-NEXT: .byte 8 39 ; Align 40 ; CHECK-NEXT: .p2align 3 41 %1 = select i1 %c, i64 1, i64 2 42 call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 32, i8* null, i32 0) 43 ret i64 %1 44 } 45 46 declare void @llvm.experimental.patchpoint.void(i64, i32, i8*, i32, ...) 47 48