1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
4 define i1000 @square(i1000 %A) nounwind {
7 ; CHECK-NEXT: pushq %rbp
8 ; CHECK-NEXT: pushq %r15
9 ; CHECK-NEXT: pushq %r14
10 ; CHECK-NEXT: pushq %r13
11 ; CHECK-NEXT: pushq %r12
12 ; CHECK-NEXT: pushq %rbx
13 ; CHECK-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
14 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %r10
15 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbx
16 ; CHECK-NEXT: bswapq %rbx
17 ; CHECK-NEXT: movabsq $1085102592571150095, %rdi # imm = 0xF0F0F0F0F0F0F0F
18 ; CHECK-NEXT: movq %rbx, %rbp
19 ; CHECK-NEXT: andq %rdi, %rbp
20 ; CHECK-NEXT: shlq $4, %rbp
21 ; CHECK-NEXT: movabsq $-1085102592571150096, %r11 # imm = 0xF0F0F0F0F0F0F0F0
22 ; CHECK-NEXT: andq %r11, %rbx
23 ; CHECK-NEXT: movq %r11, %rax
24 ; CHECK-NEXT: shrq $4, %rbx
25 ; CHECK-NEXT: orq %rbp, %rbx
26 ; CHECK-NEXT: movabsq $3689348814741910323, %r11 # imm = 0x3333333333333333
27 ; CHECK-NEXT: movq %rbx, %r14
28 ; CHECK-NEXT: andq %r11, %r14
29 ; CHECK-NEXT: movabsq $-3689348814741910324, %rbp # imm = 0xCCCCCCCCCCCCCCCC
30 ; CHECK-NEXT: andq %rbp, %rbx
31 ; CHECK-NEXT: movq %rbp, %r15
32 ; CHECK-NEXT: shrq $2, %rbx
33 ; CHECK-NEXT: leaq (%rbx,%r14,4), %r14
34 ; CHECK-NEXT: movabsq $6148914691230924800, %rbx # imm = 0x5555555555000000
35 ; CHECK-NEXT: andq %r14, %rbx
36 ; CHECK-NEXT: movabsq $-6148914691247702016, %rbp # imm = 0xAAAAAAAAAA000000
37 ; CHECK-NEXT: andq %r14, %rbp
38 ; CHECK-NEXT: shrq %rbp
39 ; CHECK-NEXT: leaq (%rbp,%rbx,2), %rbx
40 ; CHECK-NEXT: movq %rbx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
41 ; CHECK-NEXT: bswapq %r10
42 ; CHECK-NEXT: movq %r10, %rbx
43 ; CHECK-NEXT: andq %rdi, %rbx
44 ; CHECK-NEXT: shlq $4, %rbx
45 ; CHECK-NEXT: andq %rax, %r10
46 ; CHECK-NEXT: shrq $4, %r10
47 ; CHECK-NEXT: orq %rbx, %r10
48 ; CHECK-NEXT: movq %r10, %rbx
49 ; CHECK-NEXT: andq %r11, %rbx
50 ; CHECK-NEXT: andq %r15, %r10
51 ; CHECK-NEXT: shrq $2, %r10
52 ; CHECK-NEXT: leaq (%r10,%rbx,4), %rbp
53 ; CHECK-NEXT: movabsq $6148914691236517205, %rbx # imm = 0x5555555555555555
54 ; CHECK-NEXT: movq %rbp, %r10
55 ; CHECK-NEXT: andq %rbx, %r10
56 ; CHECK-NEXT: movabsq $-6148914691236517206, %r13 # imm = 0xAAAAAAAAAAAAAAAA
57 ; CHECK-NEXT: andq %r13, %rbp
58 ; CHECK-NEXT: shrq %rbp
59 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
60 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
61 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
62 ; CHECK-NEXT: bswapq %rbp
63 ; CHECK-NEXT: movq %rbp, %r10
64 ; CHECK-NEXT: andq %rdi, %r10
65 ; CHECK-NEXT: shlq $4, %r10
66 ; CHECK-NEXT: andq %rax, %rbp
67 ; CHECK-NEXT: shrq $4, %rbp
68 ; CHECK-NEXT: orq %r10, %rbp
69 ; CHECK-NEXT: movq %rbp, %r10
70 ; CHECK-NEXT: andq %r11, %r10
71 ; CHECK-NEXT: andq %r15, %rbp
72 ; CHECK-NEXT: shrq $2, %rbp
73 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
74 ; CHECK-NEXT: movq %rbp, %r10
75 ; CHECK-NEXT: andq %rbx, %r10
76 ; CHECK-NEXT: andq %r13, %rbp
77 ; CHECK-NEXT: shrq %rbp
78 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
79 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
80 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
81 ; CHECK-NEXT: bswapq %rbp
82 ; CHECK-NEXT: movq %rbp, %r10
83 ; CHECK-NEXT: andq %rdi, %r10
84 ; CHECK-NEXT: shlq $4, %r10
85 ; CHECK-NEXT: andq %rax, %rbp
86 ; CHECK-NEXT: shrq $4, %rbp
87 ; CHECK-NEXT: orq %r10, %rbp
88 ; CHECK-NEXT: movq %rbp, %r10
89 ; CHECK-NEXT: andq %r11, %r10
90 ; CHECK-NEXT: andq %r15, %rbp
91 ; CHECK-NEXT: shrq $2, %rbp
92 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
93 ; CHECK-NEXT: movq %rbp, %r10
94 ; CHECK-NEXT: andq %rbx, %r10
95 ; CHECK-NEXT: andq %r13, %rbp
96 ; CHECK-NEXT: shrq %rbp
97 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
98 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
99 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
100 ; CHECK-NEXT: bswapq %rbp
101 ; CHECK-NEXT: movq %rbp, %r10
102 ; CHECK-NEXT: andq %rdi, %r10
103 ; CHECK-NEXT: shlq $4, %r10
104 ; CHECK-NEXT: andq %rax, %rbp
105 ; CHECK-NEXT: shrq $4, %rbp
106 ; CHECK-NEXT: orq %r10, %rbp
107 ; CHECK-NEXT: movq %rbp, %r10
108 ; CHECK-NEXT: andq %r11, %r10
109 ; CHECK-NEXT: andq %r15, %rbp
110 ; CHECK-NEXT: shrq $2, %rbp
111 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
112 ; CHECK-NEXT: movq %rbp, %r10
113 ; CHECK-NEXT: andq %rbx, %r10
114 ; CHECK-NEXT: andq %r13, %rbp
115 ; CHECK-NEXT: shrq %rbp
116 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
117 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
118 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
119 ; CHECK-NEXT: bswapq %rbp
120 ; CHECK-NEXT: movq %rbp, %r10
121 ; CHECK-NEXT: andq %rdi, %r10
122 ; CHECK-NEXT: shlq $4, %r10
123 ; CHECK-NEXT: andq %rax, %rbp
124 ; CHECK-NEXT: movq %rax, %r14
125 ; CHECK-NEXT: shrq $4, %rbp
126 ; CHECK-NEXT: orq %r10, %rbp
127 ; CHECK-NEXT: movq %rbp, %r10
128 ; CHECK-NEXT: andq %r11, %r10
129 ; CHECK-NEXT: andq %r15, %rbp
130 ; CHECK-NEXT: shrq $2, %rbp
131 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
132 ; CHECK-NEXT: movq %rbp, %r10
133 ; CHECK-NEXT: andq %rbx, %r10
134 ; CHECK-NEXT: andq %r13, %rbp
135 ; CHECK-NEXT: shrq %rbp
136 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rax
137 ; CHECK-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
138 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
139 ; CHECK-NEXT: bswapq %rbp
140 ; CHECK-NEXT: movq %rbp, %r10
141 ; CHECK-NEXT: andq %rdi, %r10
142 ; CHECK-NEXT: shlq $4, %r10
143 ; CHECK-NEXT: andq %r14, %rbp
144 ; CHECK-NEXT: shrq $4, %rbp
145 ; CHECK-NEXT: orq %r10, %rbp
146 ; CHECK-NEXT: movq %rbp, %r10
147 ; CHECK-NEXT: andq %r11, %r10
148 ; CHECK-NEXT: andq %r15, %rbp
149 ; CHECK-NEXT: shrq $2, %rbp
150 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
151 ; CHECK-NEXT: movq %rbp, %r10
152 ; CHECK-NEXT: andq %rbx, %r10
153 ; CHECK-NEXT: andq %r13, %rbp
154 ; CHECK-NEXT: shrq %rbp
155 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
156 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
157 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
158 ; CHECK-NEXT: bswapq %rbp
159 ; CHECK-NEXT: movq %rbp, %r10
160 ; CHECK-NEXT: andq %rdi, %r10
161 ; CHECK-NEXT: shlq $4, %r10
162 ; CHECK-NEXT: andq %r14, %rbp
163 ; CHECK-NEXT: shrq $4, %rbp
164 ; CHECK-NEXT: orq %r10, %rbp
165 ; CHECK-NEXT: movq %rbp, %r10
166 ; CHECK-NEXT: andq %r11, %r10
167 ; CHECK-NEXT: andq %r15, %rbp
168 ; CHECK-NEXT: shrq $2, %rbp
169 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
170 ; CHECK-NEXT: movq %rbp, %r10
171 ; CHECK-NEXT: andq %rbx, %r10
172 ; CHECK-NEXT: andq %r13, %rbp
173 ; CHECK-NEXT: shrq %rbp
174 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
175 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
176 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
177 ; CHECK-NEXT: bswapq %rbp
178 ; CHECK-NEXT: movq %rbp, %r10
179 ; CHECK-NEXT: andq %rdi, %r10
180 ; CHECK-NEXT: shlq $4, %r10
181 ; CHECK-NEXT: andq %r14, %rbp
182 ; CHECK-NEXT: shrq $4, %rbp
183 ; CHECK-NEXT: orq %r10, %rbp
184 ; CHECK-NEXT: movq %rbp, %r10
185 ; CHECK-NEXT: andq %r11, %r10
186 ; CHECK-NEXT: andq %r15, %rbp
187 ; CHECK-NEXT: shrq $2, %rbp
188 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
189 ; CHECK-NEXT: movq %rbp, %r10
190 ; CHECK-NEXT: andq %rbx, %r10
191 ; CHECK-NEXT: andq %r13, %rbp
192 ; CHECK-NEXT: shrq %rbp
193 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
194 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
195 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
196 ; CHECK-NEXT: bswapq %rbp
197 ; CHECK-NEXT: movq %rbp, %r10
198 ; CHECK-NEXT: andq %rdi, %r10
199 ; CHECK-NEXT: shlq $4, %r10
200 ; CHECK-NEXT: andq %r14, %rbp
201 ; CHECK-NEXT: shrq $4, %rbp
202 ; CHECK-NEXT: orq %r10, %rbp
203 ; CHECK-NEXT: movq %rbp, %r10
204 ; CHECK-NEXT: andq %r11, %r10
205 ; CHECK-NEXT: andq %r15, %rbp
206 ; CHECK-NEXT: shrq $2, %rbp
207 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
208 ; CHECK-NEXT: movq %rbp, %r10
209 ; CHECK-NEXT: andq %rbx, %r10
210 ; CHECK-NEXT: andq %r13, %rbp
211 ; CHECK-NEXT: shrq %rbp
212 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
213 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
214 ; CHECK-NEXT: movq {{[0-9]+}}(%rsp), %rbp
215 ; CHECK-NEXT: bswapq %rbp
216 ; CHECK-NEXT: movq %rbp, %r10
217 ; CHECK-NEXT: andq %rdi, %r10
218 ; CHECK-NEXT: shlq $4, %r10
219 ; CHECK-NEXT: andq %r14, %rbp
220 ; CHECK-NEXT: shrq $4, %rbp
221 ; CHECK-NEXT: orq %r10, %rbp
222 ; CHECK-NEXT: movq %rbp, %r10
223 ; CHECK-NEXT: andq %r11, %r10
224 ; CHECK-NEXT: andq %r15, %rbp
225 ; CHECK-NEXT: shrq $2, %rbp
226 ; CHECK-NEXT: leaq (%rbp,%r10,4), %rbp
227 ; CHECK-NEXT: movq %rbp, %r10
228 ; CHECK-NEXT: andq %rbx, %r10
229 ; CHECK-NEXT: andq %r13, %rbp
230 ; CHECK-NEXT: shrq %rbp
231 ; CHECK-NEXT: leaq (%rbp,%r10,2), %rbp
232 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
233 ; CHECK-NEXT: bswapq %r9
234 ; CHECK-NEXT: movq %r9, %rbp
235 ; CHECK-NEXT: andq %rdi, %rbp
236 ; CHECK-NEXT: shlq $4, %rbp
237 ; CHECK-NEXT: andq %r14, %r9
238 ; CHECK-NEXT: shrq $4, %r9
239 ; CHECK-NEXT: orq %rbp, %r9
240 ; CHECK-NEXT: movq %r9, %rbp
241 ; CHECK-NEXT: andq %r11, %rbp
242 ; CHECK-NEXT: andq %r15, %r9
243 ; CHECK-NEXT: shrq $2, %r9
244 ; CHECK-NEXT: leaq (%r9,%rbp,4), %rbp
245 ; CHECK-NEXT: movq %rbp, %r9
246 ; CHECK-NEXT: andq %rbx, %r9
247 ; CHECK-NEXT: andq %r13, %rbp
248 ; CHECK-NEXT: shrq %rbp
249 ; CHECK-NEXT: leaq (%rbp,%r9,2), %rbp
250 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
251 ; CHECK-NEXT: bswapq %r8
252 ; CHECK-NEXT: movq %r8, %rbp
253 ; CHECK-NEXT: andq %rdi, %rbp
254 ; CHECK-NEXT: shlq $4, %rbp
255 ; CHECK-NEXT: andq %r14, %r8
256 ; CHECK-NEXT: shrq $4, %r8
257 ; CHECK-NEXT: orq %rbp, %r8
258 ; CHECK-NEXT: movq %r8, %rbp
259 ; CHECK-NEXT: andq %r11, %rbp
260 ; CHECK-NEXT: andq %r15, %r8
261 ; CHECK-NEXT: movq %r15, %r9
262 ; CHECK-NEXT: shrq $2, %r8
263 ; CHECK-NEXT: leaq (%r8,%rbp,4), %rbp
264 ; CHECK-NEXT: movq %rbp, %r8
265 ; CHECK-NEXT: andq %rbx, %r8
266 ; CHECK-NEXT: andq %r13, %rbp
267 ; CHECK-NEXT: shrq %rbp
268 ; CHECK-NEXT: leaq (%rbp,%r8,2), %rbp
269 ; CHECK-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
270 ; CHECK-NEXT: bswapq %rcx
271 ; CHECK-NEXT: movq %rcx, %rbp
272 ; CHECK-NEXT: andq %rdi, %rbp
273 ; CHECK-NEXT: shlq $4, %rbp
274 ; CHECK-NEXT: andq %r14, %rcx
275 ; CHECK-NEXT: shrq $4, %rcx
276 ; CHECK-NEXT: orq %rbp, %rcx
277 ; CHECK-NEXT: movq %rcx, %rbp
278 ; CHECK-NEXT: andq %r11, %rbp
279 ; CHECK-NEXT: andq %r15, %rcx
280 ; CHECK-NEXT: shrq $2, %rcx
281 ; CHECK-NEXT: leaq (%rcx,%rbp,4), %rcx
282 ; CHECK-NEXT: movq %rcx, %rbp
283 ; CHECK-NEXT: andq %rbx, %rbp
284 ; CHECK-NEXT: andq %r13, %rcx
285 ; CHECK-NEXT: shrq %rcx
286 ; CHECK-NEXT: leaq (%rcx,%rbp,2), %r15
287 ; CHECK-NEXT: bswapq %rdx
288 ; CHECK-NEXT: movq %rdx, %rbp
289 ; CHECK-NEXT: andq %rdi, %rbp
290 ; CHECK-NEXT: shlq $4, %rbp
291 ; CHECK-NEXT: andq %r14, %rdx
292 ; CHECK-NEXT: shrq $4, %rdx
293 ; CHECK-NEXT: orq %rbp, %rdx
294 ; CHECK-NEXT: movq %rdx, %rbp
295 ; CHECK-NEXT: andq %r11, %rbp
296 ; CHECK-NEXT: andq %r9, %rdx
297 ; CHECK-NEXT: shrq $2, %rdx
298 ; CHECK-NEXT: leaq (%rdx,%rbp,4), %rdx
299 ; CHECK-NEXT: movq %rdx, %rbp
300 ; CHECK-NEXT: andq %rbx, %rbp
301 ; CHECK-NEXT: andq %r13, %rdx
302 ; CHECK-NEXT: shrq %rdx
303 ; CHECK-NEXT: leaq (%rdx,%rbp,2), %rdx
304 ; CHECK-NEXT: bswapq %rsi
305 ; CHECK-NEXT: andq %rsi, %rdi
306 ; CHECK-NEXT: andq %r14, %rsi
307 ; CHECK-NEXT: shlq $4, %rdi
308 ; CHECK-NEXT: shrq $4, %rsi
309 ; CHECK-NEXT: orq %rdi, %rsi
310 ; CHECK-NEXT: andq %rsi, %r11
311 ; CHECK-NEXT: andq %r9, %rsi
312 ; CHECK-NEXT: shrq $2, %rsi
313 ; CHECK-NEXT: leaq (%rsi,%r11,4), %rsi
314 ; CHECK-NEXT: andq %rsi, %rbx
315 ; CHECK-NEXT: andq %r13, %rsi
316 ; CHECK-NEXT: shrq %rsi
317 ; CHECK-NEXT: leaq (%rsi,%rbx,2), %r13
318 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r11 # 8-byte Reload
319 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
320 ; CHECK-NEXT: shrdq $24, %rax, %r11
321 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
322 ; CHECK-NEXT: shrdq $24, %rcx, %rax
323 ; CHECK-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
324 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Reload
325 ; CHECK-NEXT: shrdq $24, %rbp, %rcx
326 ; CHECK-NEXT: movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
327 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r12 # 8-byte Reload
328 ; CHECK-NEXT: shrdq $24, %r12, %rbp
329 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Reload
330 ; CHECK-NEXT: shrdq $24, %r14, %r12
331 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx # 8-byte Reload
332 ; CHECK-NEXT: shrdq $24, %rbx, %r14
333 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r10 # 8-byte Reload
334 ; CHECK-NEXT: shrdq $24, %r10, %rbx
335 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r9 # 8-byte Reload
336 ; CHECK-NEXT: shrdq $24, %r9, %r10
337 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 # 8-byte Reload
338 ; CHECK-NEXT: shrdq $24, %r8, %r9
339 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
340 ; CHECK-NEXT: shrdq $24, %rdi, %r8
341 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
342 ; CHECK-NEXT: shrdq $24, %rsi, %rdi
343 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
344 ; CHECK-NEXT: shrdq $24, %rax, %rsi
345 ; CHECK-NEXT: shrdq $24, %r15, %rax
346 ; CHECK-NEXT: movq %rax, %rcx
347 ; CHECK-NEXT: shrdq $24, %rdx, %r15
348 ; CHECK-NEXT: shrdq $24, %r13, %rdx
349 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
350 ; CHECK-NEXT: movq %rdx, 112(%rax)
351 ; CHECK-NEXT: movq %r15, 104(%rax)
352 ; CHECK-NEXT: movq %rcx, 96(%rax)
353 ; CHECK-NEXT: movq %rsi, 88(%rax)
354 ; CHECK-NEXT: movq %rdi, 80(%rax)
355 ; CHECK-NEXT: movq %r8, 72(%rax)
356 ; CHECK-NEXT: movq %r9, 64(%rax)
357 ; CHECK-NEXT: movq %r10, 56(%rax)
358 ; CHECK-NEXT: movq %rbx, 48(%rax)
359 ; CHECK-NEXT: movq %r14, 40(%rax)
360 ; CHECK-NEXT: movq %r12, 32(%rax)
361 ; CHECK-NEXT: movq %rbp, 24(%rax)
362 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
363 ; CHECK-NEXT: movq %rcx, 16(%rax)
364 ; CHECK-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
365 ; CHECK-NEXT: movq %rcx, 8(%rax)
366 ; CHECK-NEXT: movq %r11, (%rax)
367 ; CHECK-NEXT: movq %r13, %rcx
368 ; CHECK-NEXT: shrq $56, %r13
369 ; CHECK-NEXT: movb %r13b, 124(%rax)
370 ; CHECK-NEXT: shrq $24, %rcx
371 ; CHECK-NEXT: movl %ecx, 120(%rax)
372 ; CHECK-NEXT: popq %rbx
373 ; CHECK-NEXT: popq %r12
374 ; CHECK-NEXT: popq %r13
375 ; CHECK-NEXT: popq %r14
376 ; CHECK-NEXT: popq %r15
377 ; CHECK-NEXT: popq %rbp
379 %Z = call i1000 @llvm.bitreverse.i1000(i1000 %A)
383 declare i1000 @llvm.bitreverse.i1000(i1000)