Revert " [LoongArch][ISel] Check the number of sign bits in `PatGprGpr_32` (#107432)"
[llvm-project.git] / llvm / test / CodeGen / X86 / stackmap-nops.ll
blobe0f40d1d3ef8f34f7a0a09ec289c8fc9cb61f399
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=corei7 | FileCheck %s
3 ; RUN: llc < %s -mtriple=x86_64-apple-darwin -mcpu=znver1 | FileCheck --check-prefix=CHECK-AMD %s
5 ; Check that we get a fast sequence of nops on each platform.
7 define void @nop_test() {
8 ; CHECK-LABEL: nop_test:
9 ; CHECK:       ## %bb.0: ## %entry
10 ; CHECK-NEXT:    pushq %rbp
11 ; CHECK-NEXT:    .cfi_def_cfa_offset 16
12 ; CHECK-NEXT:    .cfi_offset %rbp, -16
13 ; CHECK-NEXT:    movq %rsp, %rbp
14 ; CHECK-NEXT:    .cfi_def_cfa_register %rbp
15 ; CHECK-NEXT:  Ltmp0:
16 ; CHECK-NEXT:  Ltmp1:
17 ; CHECK-NEXT:    nop
18 ; CHECK-NEXT:  Ltmp2:
19 ; CHECK-NEXT:    xchgw %ax, %ax
20 ; CHECK-NEXT:  Ltmp3:
21 ; CHECK-NEXT:    nopl (%rax)
22 ; CHECK-NEXT:  Ltmp4:
23 ; CHECK-NEXT:    nopl 8(%rax)
24 ; CHECK-NEXT:  Ltmp5:
25 ; CHECK-NEXT:    nopl 8(%rax,%rax)
26 ; CHECK-NEXT:  Ltmp6:
27 ; CHECK-NEXT:    nopw 8(%rax,%rax)
28 ; CHECK-NEXT:  Ltmp7:
29 ; CHECK-NEXT:    nopl 512(%rax)
30 ; CHECK-NEXT:  Ltmp8:
31 ; CHECK-NEXT:    nopl 512(%rax,%rax)
32 ; CHECK-NEXT:  Ltmp9:
33 ; CHECK-NEXT:    nopw 512(%rax,%rax)
34 ; CHECK-NEXT:  Ltmp10:
35 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
36 ; CHECK-NEXT:  Ltmp11:
37 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
38 ; CHECK-NEXT:    nop
39 ; CHECK-NEXT:  Ltmp12:
40 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
41 ; CHECK-NEXT:    xchgw %ax, %ax
42 ; CHECK-NEXT:  Ltmp13:
43 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
44 ; CHECK-NEXT:    nopl (%rax)
45 ; CHECK-NEXT:  Ltmp14:
46 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
47 ; CHECK-NEXT:    nopl 8(%rax)
48 ; CHECK-NEXT:  Ltmp15:
49 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
50 ; CHECK-NEXT:    nopl 8(%rax,%rax)
51 ; CHECK-NEXT:  Ltmp16:
52 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
53 ; CHECK-NEXT:    nopw 8(%rax,%rax)
54 ; CHECK-NEXT:  Ltmp17:
55 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
56 ; CHECK-NEXT:    nopl 512(%rax)
57 ; CHECK-NEXT:  Ltmp18:
58 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
59 ; CHECK-NEXT:    nopl 512(%rax,%rax)
60 ; CHECK-NEXT:  Ltmp19:
61 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
62 ; CHECK-NEXT:    nopw 512(%rax,%rax)
63 ; CHECK-NEXT:  Ltmp20:
64 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
65 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
66 ; CHECK-NEXT:  Ltmp21:
67 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
68 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
69 ; CHECK-NEXT:    nop
70 ; CHECK-NEXT:  Ltmp22:
71 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
72 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
73 ; CHECK-NEXT:    xchgw %ax, %ax
74 ; CHECK-NEXT:  Ltmp23:
75 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
76 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
77 ; CHECK-NEXT:    nopl (%rax)
78 ; CHECK-NEXT:  Ltmp24:
79 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
80 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
81 ; CHECK-NEXT:    nopl 8(%rax)
82 ; CHECK-NEXT:  Ltmp25:
83 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
84 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
85 ; CHECK-NEXT:    nopl 8(%rax,%rax)
86 ; CHECK-NEXT:  Ltmp26:
87 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
88 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
89 ; CHECK-NEXT:    nopw 8(%rax,%rax)
90 ; CHECK-NEXT:  Ltmp27:
91 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
92 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
93 ; CHECK-NEXT:    nopl 512(%rax)
94 ; CHECK-NEXT:  Ltmp28:
95 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
96 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
97 ; CHECK-NEXT:    nopl 512(%rax,%rax)
98 ; CHECK-NEXT:  Ltmp29:
99 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
100 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
101 ; CHECK-NEXT:    nopw 512(%rax,%rax)
102 ; CHECK-NEXT:  Ltmp30:
103 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
104 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
105 ; CHECK-NEXT:    nopw %cs:512(%rax,%rax)
106 ; CHECK-NEXT:  Ltmp31:
107 ; CHECK-NEXT:    popq %rbp
108 ; CHECK-NEXT:    retq
110 ; CHECK-AMD-LABEL: nop_test:
111 ; CHECK-AMD:       ## %bb.0: ## %entry
112 ; CHECK-AMD-NEXT:    pushq %rbp
113 ; CHECK-AMD-NEXT:    .cfi_def_cfa_offset 16
114 ; CHECK-AMD-NEXT:    .cfi_offset %rbp, -16
115 ; CHECK-AMD-NEXT:    movq %rsp, %rbp
116 ; CHECK-AMD-NEXT:    .cfi_def_cfa_register %rbp
117 ; CHECK-AMD-NEXT:  Ltmp0:
118 ; CHECK-AMD-NEXT:  Ltmp1:
119 ; CHECK-AMD-NEXT:    nop
120 ; CHECK-AMD-NEXT:  Ltmp2:
121 ; CHECK-AMD-NEXT:    xchgw %ax, %ax
122 ; CHECK-AMD-NEXT:  Ltmp3:
123 ; CHECK-AMD-NEXT:    nopl (%rax)
124 ; CHECK-AMD-NEXT:  Ltmp4:
125 ; CHECK-AMD-NEXT:    nopl 8(%rax)
126 ; CHECK-AMD-NEXT:  Ltmp5:
127 ; CHECK-AMD-NEXT:    nopl 8(%rax,%rax)
128 ; CHECK-AMD-NEXT:  Ltmp6:
129 ; CHECK-AMD-NEXT:    nopw 8(%rax,%rax)
130 ; CHECK-AMD-NEXT:  Ltmp7:
131 ; CHECK-AMD-NEXT:    nopl 512(%rax)
132 ; CHECK-AMD-NEXT:  Ltmp8:
133 ; CHECK-AMD-NEXT:    nopl 512(%rax,%rax)
134 ; CHECK-AMD-NEXT:  Ltmp9:
135 ; CHECK-AMD-NEXT:    nopw 512(%rax,%rax)
136 ; CHECK-AMD-NEXT:  Ltmp10:
137 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
138 ; CHECK-AMD-NEXT:  Ltmp11:
139 ; CHECK-AMD-NEXT:    .byte 102
140 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
141 ; CHECK-AMD-NEXT:  Ltmp12:
142 ; CHECK-AMD-NEXT:    .byte 102
143 ; CHECK-AMD-NEXT:    .byte 102
144 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
145 ; CHECK-AMD-NEXT:  Ltmp13:
146 ; CHECK-AMD-NEXT:    .byte 102
147 ; CHECK-AMD-NEXT:    .byte 102
148 ; CHECK-AMD-NEXT:    .byte 102
149 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
150 ; CHECK-AMD-NEXT:  Ltmp14:
151 ; CHECK-AMD-NEXT:    .byte 102
152 ; CHECK-AMD-NEXT:    .byte 102
153 ; CHECK-AMD-NEXT:    .byte 102
154 ; CHECK-AMD-NEXT:    .byte 102
155 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
156 ; CHECK-AMD-NEXT:  Ltmp15:
157 ; CHECK-AMD-NEXT:    .byte 102
158 ; CHECK-AMD-NEXT:    .byte 102
159 ; CHECK-AMD-NEXT:    .byte 102
160 ; CHECK-AMD-NEXT:    .byte 102
161 ; CHECK-AMD-NEXT:    .byte 102
162 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
163 ; CHECK-AMD-NEXT:  Ltmp16:
164 ; CHECK-AMD-NEXT:    .byte 102
165 ; CHECK-AMD-NEXT:    .byte 102
166 ; CHECK-AMD-NEXT:    .byte 102
167 ; CHECK-AMD-NEXT:    .byte 102
168 ; CHECK-AMD-NEXT:    .byte 102
169 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
170 ; CHECK-AMD-NEXT:    nop
171 ; CHECK-AMD-NEXT:  Ltmp17:
172 ; CHECK-AMD-NEXT:    .byte 102
173 ; CHECK-AMD-NEXT:    .byte 102
174 ; CHECK-AMD-NEXT:    .byte 102
175 ; CHECK-AMD-NEXT:    .byte 102
176 ; CHECK-AMD-NEXT:    .byte 102
177 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
178 ; CHECK-AMD-NEXT:    xchgw %ax, %ax
179 ; CHECK-AMD-NEXT:  Ltmp18:
180 ; CHECK-AMD-NEXT:    .byte 102
181 ; CHECK-AMD-NEXT:    .byte 102
182 ; CHECK-AMD-NEXT:    .byte 102
183 ; CHECK-AMD-NEXT:    .byte 102
184 ; CHECK-AMD-NEXT:    .byte 102
185 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
186 ; CHECK-AMD-NEXT:    nopl (%rax)
187 ; CHECK-AMD-NEXT:  Ltmp19:
188 ; CHECK-AMD-NEXT:    .byte 102
189 ; CHECK-AMD-NEXT:    .byte 102
190 ; CHECK-AMD-NEXT:    .byte 102
191 ; CHECK-AMD-NEXT:    .byte 102
192 ; CHECK-AMD-NEXT:    .byte 102
193 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
194 ; CHECK-AMD-NEXT:    nopl 8(%rax)
195 ; CHECK-AMD-NEXT:  Ltmp20:
196 ; CHECK-AMD-NEXT:    .byte 102
197 ; CHECK-AMD-NEXT:    .byte 102
198 ; CHECK-AMD-NEXT:    .byte 102
199 ; CHECK-AMD-NEXT:    .byte 102
200 ; CHECK-AMD-NEXT:    .byte 102
201 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
202 ; CHECK-AMD-NEXT:    nopl 8(%rax,%rax)
203 ; CHECK-AMD-NEXT:  Ltmp21:
204 ; CHECK-AMD-NEXT:    .byte 102
205 ; CHECK-AMD-NEXT:    .byte 102
206 ; CHECK-AMD-NEXT:    .byte 102
207 ; CHECK-AMD-NEXT:    .byte 102
208 ; CHECK-AMD-NEXT:    .byte 102
209 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
210 ; CHECK-AMD-NEXT:    nopw 8(%rax,%rax)
211 ; CHECK-AMD-NEXT:  Ltmp22:
212 ; CHECK-AMD-NEXT:    .byte 102
213 ; CHECK-AMD-NEXT:    .byte 102
214 ; CHECK-AMD-NEXT:    .byte 102
215 ; CHECK-AMD-NEXT:    .byte 102
216 ; CHECK-AMD-NEXT:    .byte 102
217 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
218 ; CHECK-AMD-NEXT:    nopl 512(%rax)
219 ; CHECK-AMD-NEXT:  Ltmp23:
220 ; CHECK-AMD-NEXT:    .byte 102
221 ; CHECK-AMD-NEXT:    .byte 102
222 ; CHECK-AMD-NEXT:    .byte 102
223 ; CHECK-AMD-NEXT:    .byte 102
224 ; CHECK-AMD-NEXT:    .byte 102
225 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
226 ; CHECK-AMD-NEXT:    nopl 512(%rax,%rax)
227 ; CHECK-AMD-NEXT:  Ltmp24:
228 ; CHECK-AMD-NEXT:    .byte 102
229 ; CHECK-AMD-NEXT:    .byte 102
230 ; CHECK-AMD-NEXT:    .byte 102
231 ; CHECK-AMD-NEXT:    .byte 102
232 ; CHECK-AMD-NEXT:    .byte 102
233 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
234 ; CHECK-AMD-NEXT:    nopw 512(%rax,%rax)
235 ; CHECK-AMD-NEXT:  Ltmp25:
236 ; CHECK-AMD-NEXT:    .byte 102
237 ; CHECK-AMD-NEXT:    .byte 102
238 ; CHECK-AMD-NEXT:    .byte 102
239 ; CHECK-AMD-NEXT:    .byte 102
240 ; CHECK-AMD-NEXT:    .byte 102
241 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
242 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
243 ; CHECK-AMD-NEXT:  Ltmp26:
244 ; CHECK-AMD-NEXT:    .byte 102
245 ; CHECK-AMD-NEXT:    .byte 102
246 ; CHECK-AMD-NEXT:    .byte 102
247 ; CHECK-AMD-NEXT:    .byte 102
248 ; CHECK-AMD-NEXT:    .byte 102
249 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
250 ; CHECK-AMD-NEXT:    .byte 102
251 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
252 ; CHECK-AMD-NEXT:  Ltmp27:
253 ; CHECK-AMD-NEXT:    .byte 102
254 ; CHECK-AMD-NEXT:    .byte 102
255 ; CHECK-AMD-NEXT:    .byte 102
256 ; CHECK-AMD-NEXT:    .byte 102
257 ; CHECK-AMD-NEXT:    .byte 102
258 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
259 ; CHECK-AMD-NEXT:    .byte 102
260 ; CHECK-AMD-NEXT:    .byte 102
261 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
262 ; CHECK-AMD-NEXT:  Ltmp28:
263 ; CHECK-AMD-NEXT:    .byte 102
264 ; CHECK-AMD-NEXT:    .byte 102
265 ; CHECK-AMD-NEXT:    .byte 102
266 ; CHECK-AMD-NEXT:    .byte 102
267 ; CHECK-AMD-NEXT:    .byte 102
268 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
269 ; CHECK-AMD-NEXT:    .byte 102
270 ; CHECK-AMD-NEXT:    .byte 102
271 ; CHECK-AMD-NEXT:    .byte 102
272 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
273 ; CHECK-AMD-NEXT:  Ltmp29:
274 ; CHECK-AMD-NEXT:    .byte 102
275 ; CHECK-AMD-NEXT:    .byte 102
276 ; CHECK-AMD-NEXT:    .byte 102
277 ; CHECK-AMD-NEXT:    .byte 102
278 ; CHECK-AMD-NEXT:    .byte 102
279 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
280 ; CHECK-AMD-NEXT:    .byte 102
281 ; CHECK-AMD-NEXT:    .byte 102
282 ; CHECK-AMD-NEXT:    .byte 102
283 ; CHECK-AMD-NEXT:    .byte 102
284 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
285 ; CHECK-AMD-NEXT:  Ltmp30:
286 ; CHECK-AMD-NEXT:    .byte 102
287 ; CHECK-AMD-NEXT:    .byte 102
288 ; CHECK-AMD-NEXT:    .byte 102
289 ; CHECK-AMD-NEXT:    .byte 102
290 ; CHECK-AMD-NEXT:    .byte 102
291 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
292 ; CHECK-AMD-NEXT:    .byte 102
293 ; CHECK-AMD-NEXT:    .byte 102
294 ; CHECK-AMD-NEXT:    .byte 102
295 ; CHECK-AMD-NEXT:    .byte 102
296 ; CHECK-AMD-NEXT:    .byte 102
297 ; CHECK-AMD-NEXT:    nopw %cs:512(%rax,%rax)
298 ; CHECK-AMD-NEXT:  Ltmp31:
299 ; CHECK-AMD-NEXT:    popq %rbp
300 ; CHECK-AMD-NEXT:    retq
301 entry:
302   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  0, i32  0)
303   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  1, i32  1)
304   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  2, i32  2)
305   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  3, i32  3)
306   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  4, i32  4)
307   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  5, i32  5)
308   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  6, i32  6)
309   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  7, i32  7)
310   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  8, i32  8)
311   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64  9, i32  9)
312   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 10, i32 10)
313   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 11, i32 11)
314   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 12, i32 12)
315   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 13, i32 13)
316   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 14, i32 14)
317   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 15, i32 15)
318   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 16, i32 16)
319   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 17, i32 17)
320   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 18, i32 18)
321   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 19, i32 19)
322   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 20, i32 20)
323   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 21, i32 21)
324   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 22, i32 22)
325   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 23, i32 23)
326   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 24, i32 24)
327   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 25, i32 25)
328   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 26, i32 26)
329   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 27, i32 27)
330   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 28, i32 28)
331   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 29, i32 29)
332   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 30, i32 30)
333 ; Add an extra stackmap with a zero-length shadow to thwart the shadow
334 ; optimization. This will force all 15 bytes of the previous shadow to be
335 ; padded with nops.
336   tail call void (i64, i32, ...) @llvm.experimental.stackmap(i64 31, i32 0)
337   ret void
340 declare void @llvm.experimental.stackmap(i64, i32, ...)