1 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 -fast-isel -fast-isel-abort=1 | FileCheck %s
4 ; CHECK-LABEL: .section __LLVM_STACKMAPS,__llvm_stackmaps
5 ; CHECK-NEXT: __LLVM_StackMaps:
17 ; Functions and stack size
18 ; CHECK-NEXT: .quad _constantargs
21 ; CHECK-NEXT: .quad _liveConstant
24 ; CHECK-NEXT: .quad _directFrameIdx
25 ; CHECK-NEXT: .quad 40
27 ; CHECK-NEXT: .quad _longid
32 ; CHECK-NEXT: .quad 2147483648
33 ; CHECK-NEXT: .quad 4294967295
34 ; CHECK-NEXT: .quad 4294967296
40 ; CHECK-NEXT: .long L{{.*}}-_constantargs
41 ; CHECK-NEXT: .short 0
42 ; CHECK-NEXT: .short 12
46 ; CHECK-NEXT: .short 0
47 ; CHECK-NEXT: .long -1
51 ; CHECK-NEXT: .short 0
52 ; CHECK-NEXT: .long -1
56 ; CHECK-NEXT: .short 0
57 ; CHECK-NEXT: .long 65536
61 ; CHECK-NEXT: .short 0
62 ; CHECK-NEXT: .long 2000000000
66 ; CHECK-NEXT: .short 0
67 ; CHECK-NEXT: .long 2147483647
71 ; CHECK-NEXT: .short 0
72 ; CHECK-NEXT: .long -1
76 ; CHECK-NEXT: .short 0
77 ; CHECK-NEXT: .long -1
81 ; CHECK-NEXT: .short 0
83 ; LargeConstant at index 0
86 ; CHECK-NEXT: .short 0
88 ; LargeConstant at index 1
91 ; CHECK-NEXT: .short 0
93 ; LargeConstant at index 2
96 ; CHECK-NEXT: .short 0
100 ; CHECK-NEXT: .byte 8
101 ; CHECK-NEXT: .short 0
102 ; CHECK-NEXT: .long -1
104 define void @constantargs() {
106 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 1, i32 15, i16 65535, i16 -1, i32 65536, i32 2000000000, i32 2147483647, i32 -1, i32 4294967295, i32 4294967296, i64 2147483648, i64 4294967295, i64 4294967296, i64 -1)
110 ; Map a constant value.
112 ; CHECK-LABEL: .long L{{.*}}-_liveConstant
113 ; CHECK-NEXT: .short 0
115 ; CHECK-NEXT: .short 1
116 ; Loc 0: SmallConstant
117 ; CHECK-NEXT: .byte 4
118 ; CHECK-NEXT: .byte 8
119 ; CHECK-NEXT: .short 0
120 ; CHECK-NEXT: .long 33
122 define void @liveConstant() {
123 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 5, i32 33)
127 ; Directly map an alloca's address.
130 ; CHECK-LABEL: .long L{{.*}}-_directFrameIdx
131 ; CHECK-NEXT: .short 0
133 ; CHECK-NEXT: .short 1
134 ; Loc 0: Direct RBP - ofs
135 ; CHECK-NEXT: .byte 2
136 ; CHECK-NEXT: .byte 8
137 ; CHECK-NEXT: .short 6
140 define void @directFrameIdx() {
142 %metadata1 = alloca i64, i32 3, align 8
143 store i64 11, i64* %metadata1
144 store i64 12, i64* %metadata1
145 store i64 13, i64* %metadata1
146 call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 0, i64* %metadata1)
152 ; CHECK: .quad 4294967295
153 ; CHECK-LABEL: .long L{{.*}}-_longid
154 ; CHECK: .quad 4294967296
155 ; CHECK-LABEL: .long L{{.*}}-_longid
156 ; CHECK: .quad 9223372036854775807
157 ; CHECK-LABEL: .long L{{.*}}-_longid
159 ; CHECK-LABEL: .long L{{.*}}-_longid
160 define void @longid() {
162 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967295, i32 0)
163 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4294967296, i32 0)
164 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 9223372036854775807, i32 0)
165 tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 -1, i32 0)
169 declare void @llvm.experimental.stackmap(i64, i32, ...)