xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/stackmap-nops.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Workerdefine void @nop_test() {
4*9880d681SAndroid Build Coastguard Workerentry:
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: nop_test:
6*9880d681SAndroid Build Coastguard Worker; CHECK:      nop
7*9880d681SAndroid Build Coastguard Worker; CHECK:      xchgw %ax, %ax
8*9880d681SAndroid Build Coastguard Worker; CHECK:      nopl (%rax)
9*9880d681SAndroid Build Coastguard Worker; CHECK:      nopl 8(%rax)
10*9880d681SAndroid Build Coastguard Worker; CHECK:      nopl 8(%rax,%rax)
11*9880d681SAndroid Build Coastguard Worker; CHECK:      nopw 8(%rax,%rax)
12*9880d681SAndroid Build Coastguard Worker; CHECK:      nopl 512(%rax)
13*9880d681SAndroid Build Coastguard Worker; CHECK:      nopl 512(%rax,%rax)
14*9880d681SAndroid Build Coastguard Worker; CHECK:      nopw 512(%rax,%rax)
15*9880d681SAndroid Build Coastguard Worker; CHECK:      nopw %cs:512(%rax,%rax)
16*9880d681SAndroid Build Coastguard Worker
17*9880d681SAndroid Build Coastguard Worker; 11
18*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
19*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Worker; 12
22*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
23*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
25*9880d681SAndroid Build Coastguard Worker
26*9880d681SAndroid Build Coastguard Worker; 13
27*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Worker; 14
33*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
35*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
36*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
37*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
38*9880d681SAndroid Build Coastguard Worker
39*9880d681SAndroid Build Coastguard Worker; 15
40*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
41*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
42*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
43*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
44*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
45*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
46*9880d681SAndroid Build Coastguard Worker
47*9880d681SAndroid Build Coastguard Worker; 16
48*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
49*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
50*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
51*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
52*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
53*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
54*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nop
55*9880d681SAndroid Build Coastguard Worker
56*9880d681SAndroid Build Coastguard Worker; 17
57*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
58*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
59*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
60*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
61*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
62*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
63*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xchgw %ax, %ax
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Worker; 18
66*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
67*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
68*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
69*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
70*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
71*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
72*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopl (%rax)
73*9880d681SAndroid Build Coastguard Worker
74*9880d681SAndroid Build Coastguard Worker; 19
75*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
76*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
77*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
78*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
79*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
80*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
81*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopl 8(%rax)
82*9880d681SAndroid Build Coastguard Worker
83*9880d681SAndroid Build Coastguard Worker; 20
84*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
85*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
86*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
87*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
88*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
89*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
90*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopl 8(%rax,%rax)
91*9880d681SAndroid Build Coastguard Worker
92*9880d681SAndroid Build Coastguard Worker; 21
93*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
94*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
95*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
96*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
97*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
98*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
99*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw 8(%rax,%rax)
100*9880d681SAndroid Build Coastguard Worker
101*9880d681SAndroid Build Coastguard Worker; 22
102*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
103*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
104*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
105*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
106*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
107*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
108*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopl 512(%rax)
109*9880d681SAndroid Build Coastguard Worker
110*9880d681SAndroid Build Coastguard Worker; 23
111*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
112*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
113*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
114*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
115*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
116*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
117*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopl 512(%rax,%rax)
118*9880d681SAndroid Build Coastguard Worker
119*9880d681SAndroid Build Coastguard Worker; 24
120*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
121*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
122*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
123*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
124*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
125*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
126*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw 512(%rax,%rax)
127*9880d681SAndroid Build Coastguard Worker
128*9880d681SAndroid Build Coastguard Worker; 25
129*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
130*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
131*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
132*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
133*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
134*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
135*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
136*9880d681SAndroid Build Coastguard Worker
137*9880d681SAndroid Build Coastguard Worker; 26
138*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
139*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
140*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
141*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
142*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
143*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
144*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
145*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
146*9880d681SAndroid Build Coastguard Worker
147*9880d681SAndroid Build Coastguard Worker; 27
148*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
149*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
150*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
151*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
152*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
153*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
154*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
155*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
156*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
157*9880d681SAndroid Build Coastguard Worker
158*9880d681SAndroid Build Coastguard Worker; 28
159*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
160*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
161*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
162*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
163*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
164*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
165*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
166*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
167*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
168*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
169*9880d681SAndroid Build Coastguard Worker
170*9880d681SAndroid Build Coastguard Worker;29
171*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
172*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
173*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
174*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
175*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
176*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
177*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
178*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
179*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
180*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
181*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
182*9880d681SAndroid Build Coastguard Worker
183*9880d681SAndroid Build Coastguard Worker; 30
184*9880d681SAndroid Build Coastguard Worker; CHECK:      .byte 102
185*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
186*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
187*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
188*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
189*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
190*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
191*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
192*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
193*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
194*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: .byte 102
195*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: nopw %cs:512(%rax,%rax)
196*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  0, i32  0)
197*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  1, i32  1)
198*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  2, i32  2)
199*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  3, i32  3)
200*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  4, i32  4)
201*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  5, i32  5)
202*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  6, i32  6)
203*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  7, i32  7)
204*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  8, i32  8)
205*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  9, i32  9)
206*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)
207*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 11, i32 11)
208*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)
209*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 13, i32 13)
210*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)
211*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 15)
212*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)
213*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 17, i32 17)
214*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)
215*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 19, i32 19)
216*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)
217*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 21, i32 21)
218*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)
219*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 23, i32 23)
220*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)
221*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 25, i32 25)
222*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)
223*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 27, i32 27)
224*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)
225*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 29, i32 29)
226*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)
227*9880d681SAndroid Build Coastguard Worker; Add an extra stackmap with a zero-length shadow to thwart the shadow
228*9880d681SAndroid Build Coastguard Worker; optimization. This will force all 15 bytes of the previous shadow to be
229*9880d681SAndroid Build Coastguard Worker; padded with nops.
230*9880d681SAndroid Build Coastguard Worker  tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
231*9880d681SAndroid Build Coastguard Worker  ret void
232*9880d681SAndroid Build Coastguard Worker}
233*9880d681SAndroid Build Coastguard Worker
234*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.experimental.stackmap(i64, i32, ...)
235