1RUN: llvm-readobj -stackmap %p/Inputs/stackmap-test.macho-x86-64 | FileCheck %s
2
3; Note: the macho object file in this test was generated in the following way:
4; llc -mtriple=x86_64-apple-darwin %p/test/CodeGen/X86/stackmap.ll -o stackmap.s
5; clang -c stackmap.s -o %p/test/Object/Inputs/stackmap-test.macho-x86-64
6
7CHECK: LLVM StackMap Version: 2
8CHECK-NEXT: Num Functions: 16
9CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
10CHECK-NEXT:   Function address: 0, stack size: 24, callsite record count: 1
11CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
12CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
13CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
14CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
15CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
16CHECK-NEXT:   Function address: 0, stack size: 56, callsite record count: 1
17CHECK-NEXT:   Function address: 0, stack size: 56, callsite record count: 1
18CHECK-NEXT:   Function address: 0, stack size: 56, callsite record count: 1
19CHECK-NEXT:   Function address: 0, stack size: 56, callsite record count: 1
20CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 1
21CHECK-NEXT:   Function address: 0, stack size: 56, callsite record count: 2
22CHECK-NEXT:   Function address: 0, stack size: 8, callsite record count: 4
23CHECK-NEXT:   Function address: 0, stack size: 56, callsite record count: 1
24CHECK-NEXT:   Function address: 0, stack size: 18446744073709551615, callsite record count: 1
25CHECK-NEXT: Num Constants: 3
26CHECK-NEXT:   #1: 2147483648
27CHECK-NEXT:   #2: 4294967295
28CHECK-NEXT:   #3: 4294967296
29CHECK-NEXT: Num Records: 20
30CHECK-NEXT:   Record ID: 1, instruction offset: 4
31CHECK-NEXT:     12 locations:
32CHECK-NEXT:       #1: Constant 4294967295
33CHECK-NEXT:       #2: Constant 4294967295
34CHECK-NEXT:       #3: Constant 65536
35CHECK-NEXT:       #4: Constant 2000000000
36CHECK-NEXT:       #5: Constant 2147483647
37CHECK-NEXT:       #6: Constant 4294967295
38CHECK-NEXT:       #7: Constant 4294967295
39CHECK-NEXT:       #8: Constant 0
40CHECK-NEXT:       #9: ConstantIndex #0 (2147483648)
41CHECK-NEXT:       #10: ConstantIndex #1 (4294967295)
42CHECK-NEXT:       #11: ConstantIndex #2 (4294967296)
43CHECK-NEXT:       #12: Constant 4294967295
44CHECK-NEXT:     1 live-outs: [ R#7 (8-bytes) ]
45
46CHECK:        Record ID: 3, instruction offset: 22
47CHECK-NEXT:     2 locations:
48CHECK-NEXT:       #1: Register R#3
49CHECK-NEXT:       #2: Register R#14
50CHECK-NEXT:     0 live-outs: [ ]
51
52CHECK:        Record ID: 4, instruction offset: 10
53CHECK-NEXT:     2 locations:
54CHECK-NEXT:       #1: Register R#5
55CHECK-NEXT:       #2: Register R#4
56CHECK-NEXT:     0 live-outs: [ ]
57
58CHECK:        Record ID: 5, instruction offset: 4
59CHECK-NEXT:     2 locations:
60CHECK-NEXT:       #1: Register R#0
61CHECK-NEXT:       #2: Register R#5
62CHECK-NEXT:     2 live-outs: [ R#0 (8-bytes) R#7 (8-bytes) ]
63
64CHECK:        Record ID: 6, instruction offset: 4
65CHECK-NEXT:     2 locations:
66CHECK-NEXT:       #1: Register R#4
67CHECK-NEXT:       #2: Register R#2
68CHECK-NEXT:     1 live-outs: [ R#7 (8-bytes) ]
69
70CHECK:        Record ID: 7, instruction offset: 10
71CHECK-NEXT:     2 locations:
72CHECK-NEXT:       #1: Register R#2
73CHECK-NEXT:       #2: Register R#8
74CHECK-NEXT:     1 live-outs: [ R#7 (8-bytes) ]
75
76CHECK:        Record ID: 8, instruction offset: 10
77CHECK-NEXT:     2 locations:
78CHECK-NEXT:       #1: Register R#2
79CHECK-NEXT:       #2: Register R#8
80CHECK-NEXT:     2 live-outs: [ R#0 (8-bytes) R#7 (8-bytes) ]
81
82CHECK:        Record ID: 11, instruction offset: 42
83CHECK-NEXT:     17 locations:
84CHECK-NEXT:       #1: Register R#9
85CHECK-NEXT:       #2: Register R#14
86CHECK-NEXT:       #3: Register R#10
87CHECK-NEXT:       #4: Register R#3
88CHECK-NEXT:       #5: Register R#0
89CHECK-NEXT:       #6: Register R#13
90CHECK-NEXT:       #7: Register R#12
91CHECK-NEXT:       #8: Register R#15
92CHECK-NEXT:       #9: Indirect [R#6 + 72]
93CHECK-NEXT:       #10: Indirect [R#6 + 80]
94CHECK-NEXT:       #11: Indirect [R#6 + 88]
95CHECK-NEXT:       #12: Indirect [R#6 + 96]
96CHECK-NEXT:       #13: Indirect [R#6 + 104]
97CHECK-NEXT:       #14: Indirect [R#6 + 112]
98CHECK-NEXT:       #15: Indirect [R#6 + 120]
99CHECK-NEXT:       #16: Indirect [R#6 + 128]
100CHECK-NEXT:       #17: Indirect [R#6 + 136]
101CHECK-NEXT:     1 live-outs: [ R#7 (8-bytes) ]
102
103CHECK:        Record ID: 12, instruction offset: 62
104CHECK-NEXT:     17 locations:
105CHECK-NEXT:       #1: Register R#0
106CHECK-NEXT:       #2: Register R#14
107CHECK-NEXT:       #3: Register R#10
108CHECK-NEXT:       #4: Register R#9
109CHECK-NEXT:       #5: Register R#8
110CHECK-NEXT:       #6: Register R#4
111CHECK-NEXT:       #7: Register R#1
112CHECK-NEXT:       #8: Register R#2
113CHECK-NEXT:       #9: Register R#5
114CHECK-NEXT:       #10: Register R#3
115CHECK-NEXT:       #11: Register R#13
116CHECK-NEXT:       #12: Register R#12
117CHECK-NEXT:       #13: Register R#15
118CHECK-NEXT:       #14: Indirect [R#6 + 112]
119CHECK-NEXT:       #15: Indirect [R#6 + 120]
120CHECK-NEXT:       #16: Indirect [R#6 + 128]
121CHECK-NEXT:       #17: Indirect [R#6 + 136]
122CHECK-NEXT:     0 live-outs: [ ]
123
124CHECK:        Record ID: 13, instruction offset: 50
125CHECK-NEXT:     1 locations:
126CHECK-NEXT:       #1: Indirect [R#6 + -48]
127CHECK-NEXT:     0 live-outs: [ ]
128
129CHECK:        Record ID: 14, instruction offset: 24
130CHECK-NEXT:     2 locations:
131CHECK-NEXT:       #1: Register R#0
132CHECK-NEXT:       #2: Register R#3
133CHECK-NEXT:     0 live-outs: [ ]
134
135CHECK:        Record ID: 15, instruction offset: 4
136CHECK-NEXT:     1 locations:
137CHECK-NEXT:       #1: Constant 33
138CHECK-NEXT:     0 live-outs: [ ]
139
140CHECK:        Record ID: 16, instruction offset: 32
141CHECK-NEXT:     1 locations:
142CHECK-NEXT:       #1: Direct R#6 + -32
143CHECK-NEXT:     0 live-outs: [ ]
144
145CHECK:        Record ID: 17, instruction offset: 32
146CHECK-NEXT:     2 locations:
147CHECK-NEXT:       #1: Direct R#6 + -8
148CHECK-NEXT:       #2: Direct R#6 + -40
149CHECK-NEXT:     1 live-outs: [ R#7 (8-bytes) ]
150
151CHECK:        Record ID: 4294967295, instruction offset: 4
152CHECK-NEXT:     0 locations:
153CHECK-NEXT:     0 live-outs: [ ]
154
155CHECK:        Record ID: 4294967296, instruction offset: 4
156CHECK-NEXT:     0 locations:
157CHECK-NEXT:     0 live-outs: [ ]
158
159CHECK:        Record ID: 9223372036854775807, instruction offset: 4
160CHECK-NEXT:     0 locations:
161CHECK-NEXT:     0 live-outs: [ ]
162
163CHECK:        Record ID: 18446744073709551615, instruction offset: 4
164CHECK-NEXT:     0 locations:
165CHECK-NEXT:     1 live-outs: [ R#7 (8-bytes) ]
166
167CHECK:        Record ID: 16, instruction offset: 18
168CHECK-NEXT:     1 locations:
169CHECK-NEXT:       #1: Indirect [R#6 + -44]
170CHECK-NEXT:     0 live-outs: [ ]
171
172CHECK:        Record ID: 0, instruction offset: 26
173CHECK-NEXT:     0 locations:
174CHECK-NEXT:     0 live-outs: [ ]
175