xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stackmap-liveness.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx -enable-patchpoint-liveness=false | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7-avx                                   | FileCheck -check-prefix=PATCH %s
3*9880d681SAndroid Build Coastguard Worker;
4*9880d681SAndroid Build Coastguard Worker; Note: Print verbose stackmaps using -debug-only=stackmaps.
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .section  __LLVM_STACKMAPS,__llvm_stackmaps
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   __LLVM_StackMaps:
8*9880d681SAndroid Build Coastguard Worker; Header
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte 1
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .byte 0
11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short 0
12*9880d681SAndroid Build Coastguard Worker; Num Functions
13*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long 2
14*9880d681SAndroid Build Coastguard Worker; Num LargeConstants
15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   0
16*9880d681SAndroid Build Coastguard Worker; Num Callsites
17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .long   5
18*9880d681SAndroid Build Coastguard Worker
19*9880d681SAndroid Build Coastguard Worker; Functions and stack size
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad _stackmap_liveness
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad 8
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad _mixed_liveness
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .quad 8
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerdefine void @stackmap_liveness() {
26*9880d681SAndroid Build Coastguard Workerentry:
27*9880d681SAndroid Build Coastguard Worker  %a1 = call <2 x double> asm sideeffect "", "={xmm2}"() nounwind
28*9880d681SAndroid Build Coastguard Worker; StackMap 1 (no liveness information available)
29*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_stackmap_liveness
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
32*9880d681SAndroid Build Coastguard Worker; Padding
33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
34*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 0
35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
36*9880d681SAndroid Build Coastguard Worker; Align
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .p2align  3
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker; StackMap 1 (patchpoint liveness information enabled)
40*9880d681SAndroid Build Coastguard Worker; PATCH-LABEL:  .long L{{.*}}-_stackmap_liveness
41*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
42*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
43*9880d681SAndroid Build Coastguard Worker; Padding
44*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
45*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 1
46*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  1
47*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 1: %YMM2 (16 bytes) --> %XMM2
48*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  19
49*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
50*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 16
51*9880d681SAndroid Build Coastguard Worker; Align
52*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .p2align  3
53*9880d681SAndroid Build Coastguard Worker  call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 1, i32 12, i8* null, i32 0)
54*9880d681SAndroid Build Coastguard Worker  %a2 = call i64 asm sideeffect "", "={r8}"() nounwind
55*9880d681SAndroid Build Coastguard Worker  %a3 = call i8 asm sideeffect "", "={ah}"() nounwind
56*9880d681SAndroid Build Coastguard Worker  %a4 = call <4 x double> asm sideeffect "", "={ymm0}"() nounwind
57*9880d681SAndroid Build Coastguard Worker  %a5 = call <4 x double> asm sideeffect "", "={ymm1}"() nounwind
58*9880d681SAndroid Build Coastguard Worker
59*9880d681SAndroid Build Coastguard Worker; StackMap 2 (no liveness information available)
60*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_stackmap_liveness
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
63*9880d681SAndroid Build Coastguard Worker; Padding
64*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
65*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 0
66*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
67*9880d681SAndroid Build Coastguard Worker; Align
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .p2align  3
69*9880d681SAndroid Build Coastguard Worker
70*9880d681SAndroid Build Coastguard Worker; StackMap 2 (patchpoint liveness information enabled)
71*9880d681SAndroid Build Coastguard Worker; PATCH-LABEL:  .long L{{.*}}-_stackmap_liveness
72*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
73*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
74*9880d681SAndroid Build Coastguard Worker; Padding
75*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
76*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 5
77*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  5
78*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 1: %RAX (1 bytes) --> %AL or %AH
79*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
80*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
81*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 1
82*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 2: %R8 (8 bytes)
83*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  8
84*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
85*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 8
86*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 3: %YMM0 (32 bytes)
87*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  17
88*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
89*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 32
90*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 4: %YMM1 (32 bytes)
91*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  18
92*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
93*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 32
94*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 5: %YMM2 (16 bytes) --> %XMM2
95*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  19
96*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
97*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 16
98*9880d681SAndroid Build Coastguard Worker; Align
99*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .p2align  3
100*9880d681SAndroid Build Coastguard Worker  call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 2, i32 12, i8* null, i32 0)
101*9880d681SAndroid Build Coastguard Worker  call void asm sideeffect "", "{r8},{ah},{ymm0},{ymm1}"(i64 %a2, i8 %a3, <4 x double> %a4, <4 x double> %a5) nounwind
102*9880d681SAndroid Build Coastguard Worker
103*9880d681SAndroid Build Coastguard Worker; StackMap 3 (no liveness information available)
104*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL:  .long L{{.*}}-_stackmap_liveness
105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
107*9880d681SAndroid Build Coastguard Worker; Padding
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
109*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 0
110*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .short  0
111*9880d681SAndroid Build Coastguard Worker; Align
112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT:   .p2align  3
113*9880d681SAndroid Build Coastguard Worker
114*9880d681SAndroid Build Coastguard Worker; StackMap 3 (patchpoint liveness information enabled)
115*9880d681SAndroid Build Coastguard Worker; PATCH-LABEL:  .long L{{.*}}-_stackmap_liveness
116*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
117*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
118*9880d681SAndroid Build Coastguard Worker; Padding
119*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
120*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 2
121*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  2
122*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 1: %RSP (8 bytes)
123*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  7
124*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
125*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 8
126*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2
127*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  19
128*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
129*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 16
130*9880d681SAndroid Build Coastguard Worker; Align
131*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .p2align  3
132*9880d681SAndroid Build Coastguard Worker  call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 3, i32 12, i8* null, i32 0)
133*9880d681SAndroid Build Coastguard Worker  call void asm sideeffect "", "{xmm2}"(<2 x double> %a1) nounwind
134*9880d681SAndroid Build Coastguard Worker  ret void
135*9880d681SAndroid Build Coastguard Worker}
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Workerdefine void @mixed_liveness() {
138*9880d681SAndroid Build Coastguard Workerentry:
139*9880d681SAndroid Build Coastguard Worker  %a1 = call <2 x double> asm sideeffect "", "={xmm2}"() nounwind
140*9880d681SAndroid Build Coastguard Worker; StackMap 4 (patchpoint liveness information enabled)
141*9880d681SAndroid Build Coastguard Worker; PATCH-LABEL:  .long L{{.*}}-_mixed_liveness
142*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
143*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
144*9880d681SAndroid Build Coastguard Worker; Padding
145*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
146*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 0
147*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
148*9880d681SAndroid Build Coastguard Worker; Align
149*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .p2align  3
150*9880d681SAndroid Build Coastguard Worker
151*9880d681SAndroid Build Coastguard Worker; StackMap 5 (patchpoint liveness information enabled)
152*9880d681SAndroid Build Coastguard Worker; PATCH-LABEL:  .long L{{.*}}-_mixed_liveness
153*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
154*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
155*9880d681SAndroid Build Coastguard Worker; Padding
156*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  0
157*9880d681SAndroid Build Coastguard Worker; Num LiveOut Entries: 2
158*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  2
159*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 1: %RSP (8 bytes)
160*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  7
161*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
162*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 8
163*9880d681SAndroid Build Coastguard Worker; LiveOut Entry 2: %YMM2 (16 bytes) --> %XMM2
164*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .short  19
165*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 0
166*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .byte 16
167*9880d681SAndroid Build Coastguard Worker; Align
168*9880d681SAndroid Build Coastguard Worker; PATCH-NEXT:   .p2align  3
169*9880d681SAndroid Build Coastguard Worker  call void (i64, i32, ...) @llvm.experimental.stackmap(i64 4, i32 5)
170*9880d681SAndroid Build Coastguard Worker  call anyregcc void (i64, i32, i8*, i32, ...) @llvm.experimental.patchpoint.void(i64 5, i32 0, i8* null, i32 0)
171*9880d681SAndroid Build Coastguard Worker  call void asm sideeffect "", "{xmm2}"(<2 x double> %a1) nounwind
172*9880d681SAndroid Build Coastguard Worker  ret void
173*9880d681SAndroid Build Coastguard Worker}
174*9880d681SAndroid Build Coastguard Worker
175*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.experimental.stackmap(i64, i32, ...)
176*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.experimental.patchpoint.void(i64, i32, i8*, i32, ...)
177