Lines Matching full:no

2 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse2,-bmi2,+slow-shld | FileCheck %s --check-prefixes=ALL,X64,X64-NO-BMI2,X64-NO-SHLD,X64-NO-BMI2-NO-SHLD
3 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse2,-bmi2,-slow-shld | FileCheck %s --check-prefixes=ALL,X64,X64-NO-BMI2,X64-SHLD,X64-NO-BMI2-HAVE-SHLD
4 ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -mattr=+sse2,+bmi2,+slow-shld | FileCheck %s --check-prefixes=ALL,X64,X64-BMI2,X64-NO-SHLD,X64-HAVE-BMI2-NO-SHLD
6 ; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -mattr=+sse2,-bmi2,+slow-shld | FileCheck %s --check-prefixes=ALL,X86,X86-NO-BMI2,X86-NO-SHLD,X86-NO-BMI2-NO-SHLD
7 ; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -mattr=+sse2,-bmi2,-slow-shld | FileCheck %s --check-prefixes=ALL,X86,X86-NO-BMI2,X86-SHLD,X86-NO-BMI2-HAVE-SHLD
8 ; RUN: llc < %s -mtriple=i686-unknown-linux-gnu -mattr=+sse2,+bmi2,+slow-shld | FileCheck %s --check-prefixes=ALL,X86,X86-BMI2,X86-NO-SHLD,X86-HAVE-BMI2-NO-SHLD
12 ; X64-NO-BMI2-LABEL: lshr_4bytes:
13 ; X64-NO-BMI2: # %bb.0:
14 ; X64-NO-BMI2-NEXT: movl (%rdi), %eax
15 ; X64-NO-BMI2-NEXT: movzbl (%rsi), %ecx
16 ; X64-NO-BMI2-NEXT: shrl %cl, %eax
17 ; X64-NO-BMI2-NEXT: movl %eax, (%rdx)
18 ; X64-NO-BMI2-NEXT: retq
27 ; X86-NO-BMI2-LABEL: lshr_4bytes:
28 ; X86-NO-BMI2: # %bb.0:
29 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
30 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %ecx
31 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
32 ; X86-NO-BMI2-NEXT: movl (%edx), %edx
33 ; X86-NO-BMI2-NEXT: movzbl (%ecx), %ecx
34 ; X86-NO-BMI2-NEXT: shrl %cl, %edx
35 ; X86-NO-BMI2-NEXT: movl %edx, (%eax)
36 ; X86-NO-BMI2-NEXT: retl
54 ; X64-NO-BMI2-LABEL: shl_4bytes:
55 ; X64-NO-BMI2: # %bb.0:
56 ; X64-NO-BMI2-NEXT: movl (%rdi), %eax
57 ; X64-NO-BMI2-NEXT: movzbl (%rsi), %ecx
58 ; X64-NO-BMI2-NEXT: shll %cl, %eax
59 ; X64-NO-BMI2-NEXT: movl %eax, (%rdx)
60 ; X64-NO-BMI2-NEXT: retq
69 ; X86-NO-BMI2-LABEL: shl_4bytes:
70 ; X86-NO-BMI2: # %bb.0:
71 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
72 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %ecx
73 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
74 ; X86-NO-BMI2-NEXT: movl (%edx), %edx
75 ; X86-NO-BMI2-NEXT: movzbl (%ecx), %ecx
76 ; X86-NO-BMI2-NEXT: shll %cl, %edx
77 ; X86-NO-BMI2-NEXT: movl %edx, (%eax)
78 ; X86-NO-BMI2-NEXT: retl
96 ; X64-NO-BMI2-LABEL: ashr_4bytes:
97 ; X64-NO-BMI2: # %bb.0:
98 ; X64-NO-BMI2-NEXT: movl (%rdi), %eax
99 ; X64-NO-BMI2-NEXT: movzbl (%rsi), %ecx
100 ; X64-NO-BMI2-NEXT: sarl %cl, %eax
101 ; X64-NO-BMI2-NEXT: movl %eax, (%rdx)
102 ; X64-NO-BMI2-NEXT: retq
111 ; X86-NO-BMI2-LABEL: ashr_4bytes:
112 ; X86-NO-BMI2: # %bb.0:
113 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %eax
114 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %ecx
115 ; X86-NO-BMI2-NEXT: movl {{[0-9]+}}(%esp), %edx
116 ; X86-NO-BMI2-NEXT: movl (%edx), %edx
117 ; X86-NO-BMI2-NEXT: movzbl (%ecx), %ecx
118 ; X86-NO-BMI2-NEXT: sarl %cl, %edx
119 ; X86-NO-BMI2-NEXT: movl %edx, (%eax)
120 ; X86-NO-BMI2-NEXT: retl
139 ; X64-NO-BMI2-LABEL: lshr_8bytes:
140 ; X64-NO-BMI2: # %bb.0:
141 ; X64-NO-BMI2-NEXT: movq (%rdi), %rax
142 ; X64-NO-BMI2-NEXT: movzbl (%rsi), %ecx
143 ; X64-NO-BMI2-NEXT: shrq %cl, %rax
144 ; X64-NO-BMI2-NEXT: movq %rax, (%rdx)
145 ; X64-NO-BMI2-NEXT: retq
154 ; X86-NO-BMI2-NO-SHLD-LABEL: lshr_8bytes:
155 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
156 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
157 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
158 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
159 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
160 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
161 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
162 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ecx), %ebx
163 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
164 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
165 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
166 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
167 ; X86-NO-BMI2-NO-SHLD-NEXT: notb %cl
168 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %edi
169 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
170 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %edi
171 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
172 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
173 ; X86-NO-BMI2-NO-SHLD-NEXT: xorl %ecx, %ecx
174 ; X86-NO-BMI2-NO-SHLD-NEXT: testb $32, %al
175 ; X86-NO-BMI2-NO-SHLD-NEXT: cmovnel %esi, %edi
176 ; X86-NO-BMI2-NO-SHLD-NEXT: cmovel %esi, %ecx
177 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%edx)
178 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, (%edx)
179 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
180 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
181 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
182 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
184 ; X86-NO-BMI2-HAVE-SHLD-LABEL: lshr_8bytes:
185 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
186 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
187 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
188 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
189 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
190 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
191 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esi), %edx
192 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%esi), %esi
193 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
194 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, %edi
195 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl %cl, %edi
196 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %edx
197 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorl %esi, %esi
198 ; X86-NO-BMI2-HAVE-SHLD-NEXT: testb $32, %cl
199 ; X86-NO-BMI2-HAVE-SHLD-NEXT: cmovnel %edi, %edx
200 ; X86-NO-BMI2-HAVE-SHLD-NEXT: cmovel %edi, %esi
201 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 4(%eax)
202 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, (%eax)
203 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
204 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
205 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
207 ; X86-HAVE-BMI2-NO-SHLD-LABEL: lshr_8bytes:
208 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
209 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
210 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
211 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
212 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
213 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
214 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
215 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%edx), %esi
216 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%ecx), %ecx
217 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ecx, (%edx), %edx
218 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %ebx
219 ; X86-HAVE-BMI2-NO-SHLD-NEXT: notb %bl
220 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %edi
221 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %edi, %edi
222 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edx, %edi
223 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ecx, %esi, %edx
224 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorl %esi, %esi
225 ; X86-HAVE-BMI2-NO-SHLD-NEXT: testb $32, %cl
226 ; X86-HAVE-BMI2-NO-SHLD-NEXT: cmovnel %edx, %edi
227 ; X86-HAVE-BMI2-NO-SHLD-NEXT: cmovel %edx, %esi
228 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, 4(%eax)
229 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, (%eax)
230 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
231 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
232 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
233 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
263 ; X64-NO-BMI2-LABEL: shl_8bytes:
264 ; X64-NO-BMI2: # %bb.0:
265 ; X64-NO-BMI2-NEXT: movq (%rdi), %rax
266 ; X64-NO-BMI2-NEXT: movzbl (%rsi), %ecx
267 ; X64-NO-BMI2-NEXT: shlq %cl, %rax
268 ; X64-NO-BMI2-NEXT: movq %rax, (%rdx)
269 ; X64-NO-BMI2-NEXT: retq
278 ; X86-NO-BMI2-NO-SHLD-LABEL: shl_8bytes:
279 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
280 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
281 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
282 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
283 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
284 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
285 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
286 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ecx), %esi
287 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %ebx
288 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
289 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
290 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
291 ; X86-NO-BMI2-NO-SHLD-NEXT: notb %cl
292 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %edi
293 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
294 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
295 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %edi
296 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
297 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
298 ; X86-NO-BMI2-NO-SHLD-NEXT: xorl %ecx, %ecx
299 ; X86-NO-BMI2-NO-SHLD-NEXT: testb $32, %al
300 ; X86-NO-BMI2-NO-SHLD-NEXT: cmovnel %esi, %edi
301 ; X86-NO-BMI2-NO-SHLD-NEXT: cmovel %esi, %ecx
302 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, (%edx)
303 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 4(%edx)
304 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
305 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
306 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
307 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
309 ; X86-NO-BMI2-HAVE-SHLD-LABEL: shl_8bytes:
310 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
311 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
312 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
313 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
314 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
315 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
316 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%edx), %esi
317 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%edx), %edx
318 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
319 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, %edi
320 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shll %cl, %edi
321 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edx
322 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorl %esi, %esi
323 ; X86-NO-BMI2-HAVE-SHLD-NEXT: testb $32, %cl
324 ; X86-NO-BMI2-HAVE-SHLD-NEXT: cmovnel %edi, %edx
325 ; X86-NO-BMI2-HAVE-SHLD-NEXT: cmovel %edi, %esi
326 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 4(%eax)
327 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, (%eax)
328 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
329 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
330 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
332 ; X86-HAVE-BMI2-NO-SHLD-LABEL: shl_8bytes:
333 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
334 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
335 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
336 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
337 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
338 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
339 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
340 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%edx), %esi
341 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%ecx), %ecx
342 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, 4(%edx), %edx
343 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %ebx
344 ; X86-HAVE-BMI2-NO-SHLD-NEXT: notb %bl
345 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %esi, %edi
346 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %esi
347 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %esi, %esi
348 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edx, %esi
349 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorl %edx, %edx
350 ; X86-HAVE-BMI2-NO-SHLD-NEXT: testb $32, %cl
351 ; X86-HAVE-BMI2-NO-SHLD-NEXT: cmovnel %edi, %esi
352 ; X86-HAVE-BMI2-NO-SHLD-NEXT: cmovel %edi, %edx
353 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, (%eax)
354 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, 4(%eax)
355 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
356 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
357 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
358 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
388 ; X64-NO-BMI2-LABEL: ashr_8bytes:
389 ; X64-NO-BMI2: # %bb.0:
390 ; X64-NO-BMI2-NEXT: movq (%rdi), %rax
391 ; X64-NO-BMI2-NEXT: movzbl (%rsi), %ecx
392 ; X64-NO-BMI2-NEXT: sarq %cl, %rax
393 ; X64-NO-BMI2-NEXT: movq %rax, (%rdx)
394 ; X64-NO-BMI2-NEXT: retq
403 ; X86-NO-BMI2-NO-SHLD-LABEL: ashr_8bytes:
404 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
405 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
406 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
407 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
408 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
409 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
410 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
411 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ecx), %ebx
412 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
413 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
414 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
415 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
416 ; X86-NO-BMI2-NO-SHLD-NEXT: notb %cl
417 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %edi
418 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
419 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %edi
420 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ebx
421 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
422 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl %cl, %ebx
423 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl $31, %esi
424 ; X86-NO-BMI2-NO-SHLD-NEXT: testb $32, %al
425 ; X86-NO-BMI2-NO-SHLD-NEXT: cmovnel %ebx, %edi
426 ; X86-NO-BMI2-NO-SHLD-NEXT: cmovel %ebx, %esi
427 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 4(%edx)
428 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, (%edx)
429 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
430 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
431 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
432 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
434 ; X86-NO-BMI2-HAVE-SHLD-LABEL: ashr_8bytes:
435 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
436 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
437 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
438 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
439 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
440 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
441 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esi), %edx
442 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%esi), %esi
443 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
444 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, %edi
445 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl %cl, %edi
446 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %edx
447 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl $31, %esi
448 ; X86-NO-BMI2-HAVE-SHLD-NEXT: testb $32, %cl
449 ; X86-NO-BMI2-HAVE-SHLD-NEXT: cmovnel %edi, %edx
450 ; X86-NO-BMI2-HAVE-SHLD-NEXT: cmovel %edi, %esi
451 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 4(%eax)
452 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, (%eax)
453 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
454 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
455 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
457 ; X86-HAVE-BMI2-NO-SHLD-LABEL: ashr_8bytes:
458 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
459 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
460 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
461 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
462 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
463 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
464 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
465 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%esi), %ecx
466 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%edx), %edx
467 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, (%esi), %esi
468 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, %ebx
469 ; X86-HAVE-BMI2-NO-SHLD-NEXT: notb %bl
470 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%ecx,%ecx), %edi
471 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %edi, %edi
472 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %edi
473 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarxl %edx, %ecx, %esi
474 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarl $31, %ecx
475 ; X86-HAVE-BMI2-NO-SHLD-NEXT: testb $32, %dl
476 ; X86-HAVE-BMI2-NO-SHLD-NEXT: cmovnel %esi, %edi
477 ; X86-HAVE-BMI2-NO-SHLD-NEXT: cmovel %esi, %ecx
478 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
479 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, (%eax)
480 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
481 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
482 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
483 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
514 ; X64-NO-BMI2-NO-SHLD-LABEL: lshr_16bytes:
515 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
516 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %r8
517 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rdi
518 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
519 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
520 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r8
521 ; X64-NO-BMI2-NO-SHLD-NEXT: notb %cl
522 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rdi,%rdi), %rsi
523 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rsi
524 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r8, %rsi
525 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
526 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rdi
527 ; X64-NO-BMI2-NO-SHLD-NEXT: xorl %ecx, %ecx
528 ; X64-NO-BMI2-NO-SHLD-NEXT: testb $64, %al
529 ; X64-NO-BMI2-NO-SHLD-NEXT: cmovneq %rdi, %rsi
530 ; X64-NO-BMI2-NO-SHLD-NEXT: cmoveq %rdi, %rcx
531 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, 8(%rdx)
532 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rsi, (%rdx)
533 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
535 ; X64-NO-BMI2-HAVE-SHLD-LABEL: lshr_16bytes:
536 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
537 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
538 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %rdi
539 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%rsi), %ecx
540 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, %rsi
541 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrq %cl, %rsi
542 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rdi, %rax
543 ; X64-NO-BMI2-HAVE-SHLD-NEXT: xorl %edi, %edi
544 ; X64-NO-BMI2-HAVE-SHLD-NEXT: testb $64, %cl
545 ; X64-NO-BMI2-HAVE-SHLD-NEXT: cmovneq %rsi, %rax
546 ; X64-NO-BMI2-HAVE-SHLD-NEXT: cmoveq %rsi, %rdi
547 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 8(%rdx)
548 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, (%rdx)
549 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
551 ; X64-HAVE-BMI2-NO-SHLD-LABEL: lshr_16bytes:
552 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
553 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rax
554 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %ecx
555 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, (%rdi), %rsi
556 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %edi
557 ; X64-HAVE-BMI2-NO-SHLD-NEXT: notb %dil
558 ; X64-HAVE-BMI2-NO-SHLD-NEXT: leaq (%rax,%rax), %r8
559 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rdi, %r8, %rdi
560 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rsi, %rdi
561 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %rax, %rax
562 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorl %esi, %esi
563 ; X64-HAVE-BMI2-NO-SHLD-NEXT: testb $64, %cl
564 ; X64-HAVE-BMI2-NO-SHLD-NEXT: cmovneq %rax, %rdi
565 ; X64-HAVE-BMI2-NO-SHLD-NEXT: cmoveq %rax, %rsi
566 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rsi, 8(%rdx)
567 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, (%rdx)
568 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
585 ; X86-NO-BMI2-NO-SHLD-LABEL: lshr_16bytes:
586 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
587 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
588 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
589 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
590 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
591 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $44, %esp
592 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
593 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
594 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ecx), %ebx
595 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
596 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%ecx), %edi
597 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%ecx), %ecx
598 ; X86-NO-BMI2-NO-SHLD-NEXT: movb (%eax), %dh
599 ; X86-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
600 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
601 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
602 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
603 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
604 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, (%esp)
605 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
606 ; X86-NO-BMI2-NO-SHLD-NEXT: shrb $3, %cl
607 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $12, %cl
608 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl %cl, %eax
609 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%esp,%eax), %esi
610 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ebx
611 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
612 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
613 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %dl
614 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $31, %dl
615 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %dl
616 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%esp,%eax), %ebp
617 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ebp,%ebp), %edi
618 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
619 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
620 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %edi
621 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%esp,%eax), %ebx
622 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
623 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
624 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %esi, %esi
625 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
626 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
627 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %esi
628 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
629 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
630 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%esp,%eax), %ebx
631 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ebx,%ebx), %eax
632 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
633 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
634 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
635 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
636 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
637 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
638 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, 12(%ebp)
639 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 8(%ebp)
640 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, (%ebp)
641 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 4(%ebp)
642 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $44, %esp
643 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
644 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
645 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
646 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
647 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
649 ; X86-NO-BMI2-HAVE-SHLD-LABEL: lshr_16bytes:
650 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
651 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
652 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
653 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
654 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
655 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $44, %esp
656 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
657 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
658 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
659 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%edx), %esi
660 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%edx), %edi
661 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%edx), %ebx
662 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%edx), %edx
663 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
664 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
665 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
666 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
667 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
668 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
669 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, (%esp)
670 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %edx
671 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrb $3, %dl
672 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andb $12, %dl
673 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl %dl, %ebx
674 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%esp,%ebx), %esi
675 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp,%ebx), %edx
676 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%esp,%ebx), %ebp
677 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, %edi
678 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %edi
679 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%esp,%ebx), %ebx
680 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %esi
681 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebp, %edx
682 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl %cl, %ebx
683 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 8(%eax)
684 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, 12(%eax)
685 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, (%eax)
686 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 4(%eax)
687 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $44, %esp
688 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
689 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
690 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
691 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
692 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
694 ; X86-HAVE-BMI2-NO-SHLD-LABEL: lshr_16bytes:
695 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
696 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
697 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
698 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
699 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
700 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $44, %esp
701 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
702 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
703 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%ecx), %edx
704 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
705 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%ecx), %edi
706 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%ecx), %ecx
707 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
708 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
709 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
710 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
711 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
712 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
713 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, (%esp)
714 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
715 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrb $3, %cl
716 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $12, %cl
717 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl %cl, %esi
718 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%esp,%esi), %ebx
719 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%esp,%esi), %edi
720 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ebx, %ebp
721 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
722 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $31, %cl
723 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %cl
724 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%edi,%edi), %edx
725 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %edx, %edx
726 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %edx
727 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, (%esp,%esi), %ebp
728 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
729 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebx, %ebx
730 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %ebx
731 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %edi, %edi
732 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%esp,%esi), %esi
733 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %esi, %eax
734 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
735 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %esi, %ecx
736 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ecx
737 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
738 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 12(%esi)
739 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%esi)
740 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, (%esi)
741 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 4(%esi)
742 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $44, %esp
743 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
744 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
745 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
746 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
747 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
801 ; X64-NO-BMI2-NO-SHLD-LABEL: shl_16bytes:
802 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
803 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %r8
804 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rdi
805 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
806 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
807 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rdi
808 ; X64-NO-BMI2-NO-SHLD-NEXT: notb %cl
809 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, %rsi
810 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %rsi
811 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rsi
812 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rdi, %rsi
813 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
814 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r8
815 ; X64-NO-BMI2-NO-SHLD-NEXT: xorl %ecx, %ecx
816 ; X64-NO-BMI2-NO-SHLD-NEXT: testb $64, %al
817 ; X64-NO-BMI2-NO-SHLD-NEXT: cmovneq %r8, %rsi
818 ; X64-NO-BMI2-NO-SHLD-NEXT: cmoveq %r8, %rcx
819 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, (%rdx)
820 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rsi, 8(%rdx)
821 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
823 ; X64-NO-BMI2-HAVE-SHLD-LABEL: shl_16bytes:
824 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
825 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
826 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %rdi
827 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%rsi), %ecx
828 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, %rsi
829 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shlq %cl, %rsi
830 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %rax, %rdi
831 ; X64-NO-BMI2-HAVE-SHLD-NEXT: xorl %eax, %eax
832 ; X64-NO-BMI2-HAVE-SHLD-NEXT: testb $64, %cl
833 ; X64-NO-BMI2-HAVE-SHLD-NEXT: cmovneq %rsi, %rdi
834 ; X64-NO-BMI2-HAVE-SHLD-NEXT: cmoveq %rsi, %rax
835 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 8(%rdx)
836 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, (%rdx)
837 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
839 ; X64-HAVE-BMI2-NO-SHLD-LABEL: shl_16bytes:
840 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
841 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rax
842 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %ecx
843 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rcx, 8(%rdi), %rsi
844 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %edi
845 ; X64-HAVE-BMI2-NO-SHLD-NEXT: notb %dil
846 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rcx, %rax, %r8
847 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %rax
848 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rdi, %rax, %rax
849 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rsi, %rax
850 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorl %esi, %esi
851 ; X64-HAVE-BMI2-NO-SHLD-NEXT: testb $64, %cl
852 ; X64-HAVE-BMI2-NO-SHLD-NEXT: cmovneq %r8, %rax
853 ; X64-HAVE-BMI2-NO-SHLD-NEXT: cmoveq %r8, %rsi
854 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rsi, (%rdx)
855 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 8(%rdx)
856 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
873 ; X86-NO-BMI2-NO-SHLD-LABEL: shl_16bytes:
874 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
875 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
876 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
877 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
878 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
879 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $60, %esp
880 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
881 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
882 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ecx), %ebx
883 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
884 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%ecx), %edi
885 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%ecx), %ecx
886 ; X86-NO-BMI2-NO-SHLD-NEXT: movb (%eax), %dh
887 ; X86-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
888 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
889 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
890 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
891 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
892 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
893 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
894 ; X86-NO-BMI2-NO-SHLD-NEXT: shrb $3, %cl
895 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $12, %cl
896 ; X86-NO-BMI2-NO-SHLD-NEXT: negb %cl
897 ; X86-NO-BMI2-NO-SHLD-NEXT: movsbl %cl, %ebp
898 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%esp,%ebp), %ebx
899 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
900 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%esp,%ebp), %esi
901 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %edi
902 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
903 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
904 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %dl
905 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $31, %dl
906 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %dl
907 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebx
908 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
909 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
910 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %ebx
911 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%esp,%ebp), %eax
912 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
913 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
914 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%esp,%ebp), %edi
915 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ebp
916 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebp
917 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
918 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
919 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
920 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
921 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
922 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %esi
923 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
924 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
925 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %esi
926 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
927 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
928 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
929 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
930 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, (%eax)
931 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 8(%eax)
932 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 12(%eax)
933 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, 4(%eax)
934 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $60, %esp
935 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
936 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
937 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
938 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
939 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
941 ; X86-NO-BMI2-HAVE-SHLD-LABEL: shl_16bytes:
942 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
943 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
944 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
945 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
946 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $32, %esp
947 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
948 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
949 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
950 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%edx), %esi
951 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%edx), %edi
952 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%edx), %ebx
953 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%edx), %edx
954 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
955 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
956 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, (%esp)
957 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
958 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
959 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
960 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
961 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %edx
962 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrb $3, %dl
963 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andb $12, %dl
964 ; X86-NO-BMI2-HAVE-SHLD-NEXT: negb %dl
965 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movsbl %dl, %edi
966 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%esp,%edi), %esi
967 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%esp,%edi), %edx
968 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edx
969 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%esp,%edi), %ebx
970 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%esp,%edi), %edi
971 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %esi
972 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %ebx, %edi
973 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shll %cl, %ebx
974 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 8(%eax)
975 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 12(%eax)
976 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, (%eax)
977 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 4(%eax)
978 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $32, %esp
979 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
980 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
981 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
982 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
984 ; X86-HAVE-BMI2-NO-SHLD-LABEL: shl_16bytes:
985 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
986 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
987 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
988 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
989 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
990 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $44, %esp
991 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
992 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
993 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%ecx), %edx
994 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
995 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%ecx), %edi
996 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%ecx), %ecx
997 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%eax), %ebx
998 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
999 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, (%esp)
1000 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1001 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1002 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
1003 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1004 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
1005 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrb $3, %al
1006 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $12, %al
1007 ; X86-HAVE-BMI2-NO-SHLD-NEXT: negb %al
1008 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movsbl %al, %edx
1009 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%esp,%edx), %edi
1010 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%esp,%edx), %ecx
1011 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %ecx, %esi
1012 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %edi, %ebp
1013 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
1014 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $31, %al
1015 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %al
1016 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %edi
1017 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %edi, %edi
1018 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %edi
1019 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, 28(%esp,%edx), %esi
1020 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%esp,%edx), %edx
1021 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %edx, %ebx
1022 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %edx
1023 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %edx, %edx
1024 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %edx
1025 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
1026 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ecx, %eax
1027 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebx, %eax
1028 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1029 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, (%ecx)
1030 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 8(%ecx)
1031 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 12(%ecx)
1032 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, 4(%ecx)
1033 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $44, %esp
1034 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
1035 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
1036 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
1037 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
1038 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
1089 ; X64-NO-BMI2-NO-SHLD-LABEL: ashr_16bytes:
1090 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
1091 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %r8
1092 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rdi
1093 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
1094 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1095 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r8
1096 ; X64-NO-BMI2-NO-SHLD-NEXT: notb %cl
1097 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rdi,%rdi), %rsi
1098 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rsi
1099 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r8, %rsi
1100 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, %r8
1101 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1102 ; X64-NO-BMI2-NO-SHLD-NEXT: sarq %cl, %r8
1103 ; X64-NO-BMI2-NO-SHLD-NEXT: sarq $63, %rdi
1104 ; X64-NO-BMI2-NO-SHLD-NEXT: testb $64, %al
1105 ; X64-NO-BMI2-NO-SHLD-NEXT: cmovneq %r8, %rsi
1106 ; X64-NO-BMI2-NO-SHLD-NEXT: cmoveq %r8, %rdi
1107 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, 8(%rdx)
1108 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rsi, (%rdx)
1109 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
1111 ; X64-NO-BMI2-HAVE-SHLD-LABEL: ashr_16bytes:
1112 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
1113 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
1114 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %rdi
1115 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%rsi), %ecx
1116 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, %rsi
1117 ; X64-NO-BMI2-HAVE-SHLD-NEXT: sarq %cl, %rsi
1118 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rdi, %rax
1119 ; X64-NO-BMI2-HAVE-SHLD-NEXT: sarq $63, %rdi
1120 ; X64-NO-BMI2-HAVE-SHLD-NEXT: testb $64, %cl
1121 ; X64-NO-BMI2-HAVE-SHLD-NEXT: cmovneq %rsi, %rax
1122 ; X64-NO-BMI2-HAVE-SHLD-NEXT: cmoveq %rsi, %rdi
1123 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 8(%rdx)
1124 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, (%rdx)
1125 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
1127 ; X64-HAVE-BMI2-NO-SHLD-LABEL: ashr_16bytes:
1128 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
1129 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rax
1130 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %ecx
1131 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, (%rdi), %rsi
1132 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %edi
1133 ; X64-HAVE-BMI2-NO-SHLD-NEXT: notb %dil
1134 ; X64-HAVE-BMI2-NO-SHLD-NEXT: leaq (%rax,%rax), %r8
1135 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rdi, %r8, %rdi
1136 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rsi, %rdi
1137 ; X64-HAVE-BMI2-NO-SHLD-NEXT: sarxq %rcx, %rax, %rsi
1138 ; X64-HAVE-BMI2-NO-SHLD-NEXT: sarq $63, %rax
1139 ; X64-HAVE-BMI2-NO-SHLD-NEXT: testb $64, %cl
1140 ; X64-HAVE-BMI2-NO-SHLD-NEXT: cmovneq %rsi, %rdi
1141 ; X64-HAVE-BMI2-NO-SHLD-NEXT: cmoveq %rsi, %rax
1142 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 8(%rdx)
1143 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, (%rdx)
1144 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
1161 ; X86-NO-BMI2-NO-SHLD-LABEL: ashr_16bytes:
1162 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
1163 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
1164 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
1165 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
1166 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
1167 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $44, %esp
1168 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
1169 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1170 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ecx), %ebx
1171 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
1172 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%ecx), %edi
1173 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%ecx), %ecx
1174 ; X86-NO-BMI2-NO-SHLD-NEXT: movb (%eax), %dh
1175 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1176 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1177 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
1178 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, (%esp)
1179 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl $31, %ecx
1180 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1181 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1182 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1183 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1184 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
1185 ; X86-NO-BMI2-NO-SHLD-NEXT: shrb $3, %cl
1186 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $12, %cl
1187 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl %cl, %ebx
1188 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%esp,%ebx), %esi
1189 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %eax
1190 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
1191 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1192 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %dl
1193 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $31, %dl
1194 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %dl
1195 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%esp,%ebx), %ebp
1196 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ebp,%ebp), %edi
1197 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
1198 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
1199 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
1200 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%esp,%ebx), %eax
1201 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
1202 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1203 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %esi, %esi
1204 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
1205 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
1206 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
1207 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
1208 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
1209 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%esp,%ebx), %eax
1210 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebx
1211 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
1212 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
1213 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebp, %ebx
1214 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
1215 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dh, %cl
1216 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl %cl, %eax
1217 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 12(%ebp)
1218 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, 8(%ebp)
1219 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, (%ebp)
1220 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 4(%ebp)
1221 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $44, %esp
1222 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
1223 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
1224 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
1225 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
1226 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
1228 ; X86-NO-BMI2-HAVE-SHLD-LABEL: ashr_16bytes:
1229 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
1230 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
1231 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
1232 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
1233 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
1234 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $44, %esp
1235 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
1236 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1237 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
1238 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%edx), %esi
1239 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%edx), %edi
1240 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%edx), %ebx
1241 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%edx), %edx
1242 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
1243 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1244 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
1245 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1246 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, (%esp)
1247 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl $31, %edx
1248 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1249 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1250 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1251 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1252 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %edx
1253 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrb $3, %dl
1254 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andb $12, %dl
1255 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl %dl, %ebx
1256 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%esp,%ebx), %esi
1257 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp,%ebx), %edx
1258 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%esp,%ebx), %ebp
1259 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, %edi
1260 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %edi
1261 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%esp,%ebx), %ebx
1262 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %esi
1263 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebp, %edx
1264 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl %cl, %ebx
1265 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 8(%eax)
1266 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, 12(%eax)
1267 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, (%eax)
1268 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 4(%eax)
1269 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $44, %esp
1270 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
1271 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
1272 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
1273 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
1274 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
1276 ; X86-HAVE-BMI2-NO-SHLD-LABEL: ashr_16bytes:
1277 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
1278 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
1279 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
1280 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
1281 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
1282 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $44, %esp
1283 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
1284 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1285 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%ecx), %edx
1286 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%ecx), %esi
1287 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%ecx), %edi
1288 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%ecx), %ecx
1289 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
1290 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1291 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1292 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
1293 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, (%esp)
1294 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarl $31, %ecx
1295 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1296 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1297 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1298 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1299 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1300 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrb $3, %cl
1301 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $12, %cl
1302 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl %cl, %esi
1303 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%esp,%esi), %ebx
1304 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%esp,%esi), %edi
1305 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ebx, %ebp
1306 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1307 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $31, %cl
1308 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %cl
1309 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%edi,%edi), %edx
1310 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %edx, %edx
1311 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %edx
1312 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, (%esp,%esi), %ebp
1313 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
1314 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebx, %ebx
1315 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %ebx
1316 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %edi, %edi
1317 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%esp,%esi), %esi
1318 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarxl %eax, %esi, %eax
1319 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
1320 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %esi, %ecx
1321 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ecx
1322 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
1323 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 12(%esi)
1324 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%esi)
1325 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, (%esi)
1326 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 4(%esi)
1327 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $44, %esp
1328 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
1329 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
1330 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
1331 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
1332 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
1390 ; X64-NO-BMI2-NO-SHLD-LABEL: lshr_32bytes:
1391 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
1392 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbx
1393 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
1394 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
1395 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
1396 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %rdi
1397 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
1398 ; X64-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
1399 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1400 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1401 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
1402 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
1403 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
1404 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
1405 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1406 ; X64-NO-BMI2-NO-SHLD-NEXT: shrb $6, %cl
1407 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl %cl, %r8d
1408 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -64(%rsp,%r8,8), %r10
1409 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -56(%rsp,%r8,8), %rdi
1410 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, %r11
1411 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1412 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r11
1413 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
1414 ; X64-NO-BMI2-NO-SHLD-NEXT: andb $63, %sil
1415 ; X64-NO-BMI2-NO-SHLD-NEXT: xorb $63, %sil
1416 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -48(%rsp,%r8,8), %rbx
1417 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rbx,%rbx), %r9
1418 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
1419 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r9
1420 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r11, %r9
1421 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1422 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r10
1423 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %rdi, %rdi
1424 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
1425 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rdi
1426 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r10, %rdi
1427 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1428 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rbx
1429 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -40(%rsp,%r8,8), %r8
1430 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%r8,%r8), %r10
1431 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
1432 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r10
1433 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rbx, %r10
1434 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1435 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r8
1436 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, 24(%rdx)
1437 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, 16(%rdx)
1438 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, (%rdx)
1439 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, 8(%rdx)
1440 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbx
1441 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
1443 ; X64-NO-BMI2-HAVE-SHLD-LABEL: lshr_32bytes:
1444 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
1445 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
1446 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %r8
1447 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 16(%rdi), %r9
1448 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 24(%rdi), %rdi
1449 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%rsi), %ecx
1450 ; X64-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
1451 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1452 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1453 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
1454 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
1455 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
1456 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
1457 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %eax
1458 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrb $6, %al
1459 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl %al, %eax
1460 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -56(%rsp,%rax,8), %rsi
1461 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -72(%rsp,%rax,8), %rdi
1462 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -64(%rsp,%rax,8), %r8
1463 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, %r9
1464 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rsi, %r9
1465 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -48(%rsp,%rax,8), %rax
1466 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rax, %rsi
1467 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r8, %rdi
1468 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrq %cl, %rax
1469 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rsi, 16(%rdx)
1470 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, 24(%rdx)
1471 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, (%rdx)
1472 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, 8(%rdx)
1473 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
1475 ; X64-HAVE-BMI2-NO-SHLD-LABEL: lshr_32bytes:
1476 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
1477 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
1478 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
1479 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
1480 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %rdi
1481 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
1482 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
1483 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1484 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1485 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
1486 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
1487 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
1488 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
1489 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1490 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrb $6, %cl
1491 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl %cl, %esi
1492 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -64(%rsp,%rsi,8), %rcx
1493 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -56(%rsp,%rsi,8), %rdi
1494 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rcx, %r8
1495 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, -72(%rsp,%rsi,8), %r9
1496 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rdi, %r10
1497 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -48(%rsp,%rsi,8), %rsi
1498 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rsi, %r11
1499 ; X64-HAVE-BMI2-NO-SHLD-NEXT: # kill: def $al killed $al killed $rax def $rax
1500 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andb $63, %al
1501 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorb $63, %al
1502 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rdi, %rdi
1503 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rdi, %rdi
1504 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r8, %rdi
1505 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rcx, %rcx
1506 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rcx, %rcx
1507 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r9, %rcx
1508 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rsi, %rsi
1509 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rsi, %rax
1510 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r10, %rax
1511 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, 24(%rdx)
1512 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 16(%rdx)
1513 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, (%rdx)
1514 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, 8(%rdx)
1515 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
1549 ; X86-NO-BMI2-NO-SHLD-LABEL: lshr_32bytes:
1550 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
1551 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
1552 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
1553 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
1554 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
1555 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $108, %esp
1556 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1557 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
1558 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ebp), %eax
1559 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1560 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ebp), %eax
1561 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1562 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%ebp), %esi
1563 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%ebp), %edi
1564 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%ebp), %ebx
1565 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%ecx), %edx
1566 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%ebp), %ecx
1567 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%ebp), %eax
1568 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%ebp), %ebp
1569 ; X86-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
1570 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
1571 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
1572 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
1573 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
1574 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1575 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
1576 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1577 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
1578 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1579 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
1580 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1581 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
1582 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %eax
1583 ; X86-NO-BMI2-NO-SHLD-NEXT: shrb $5, %al
1584 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl %al, %edi
1585 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%esp,%edi,4), %esi
1586 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%esp,%edi,4), %ebx
1587 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1588 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
1589 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
1590 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1591 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %ch
1592 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $31, %ch
1593 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %ch
1594 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%esp,%edi,4), %edi
1595 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edi,%edi), %ebp
1596 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1597 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
1598 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
1599 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1600 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
1601 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
1602 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
1603 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1604 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
1605 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebx
1606 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1607 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1608 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%esp,%esi,4), %ebp
1609 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %eax
1610 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
1611 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ebx
1612 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1613 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 48(%esp,%esi,4), %edx
1614 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1615 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edx,%edx), %esi
1616 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1617 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
1618 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
1619 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1620 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %edx
1621 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
1622 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
1623 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
1624 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1625 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
1626 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %ebp
1627 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1628 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 52(%esp,%esi,4), %edi
1629 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %eax
1630 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
1631 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1632 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 56(%esp,%esi,4), %ebx
1633 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ebx,%ebx), %esi
1634 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1635 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
1636 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
1637 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1638 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
1639 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1640 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1641 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %edi, %edi
1642 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1643 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
1644 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
1645 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
1646 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
1647 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1648 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 60(%esp,%eax,4), %eax
1649 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %edx
1650 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
1651 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
1652 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %edx
1653 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1654 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
1655 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1656 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 28(%ecx)
1657 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, 24(%ecx)
1658 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 16(%ecx)
1659 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 20(%ecx)
1660 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 8(%ecx)
1661 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1662 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 12(%ecx)
1663 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1664 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, (%ecx)
1665 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1666 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 4(%ecx)
1667 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $108, %esp
1668 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
1669 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
1670 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
1671 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
1672 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
1674 ; X86-NO-BMI2-HAVE-SHLD-LABEL: lshr_32bytes:
1675 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
1676 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
1677 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
1678 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
1679 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
1680 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $92, %esp
1681 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
1682 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
1683 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%ebp), %eax
1684 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1685 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%ebp), %eax
1686 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
1687 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%ebp), %esi
1688 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%ebp), %edi
1689 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%ebp), %ebx
1690 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
1691 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%ebp), %edx
1692 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%ebp), %eax
1693 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%ebp), %ebp
1694 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
1695 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
1696 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
1697 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
1698 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
1699 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1700 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
1701 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1702 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
1703 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
1704 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
1705 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1706 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
1707 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %eax
1708 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrb $5, %al
1709 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl %al, %ebp
1710 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%esp,%ebp,4), %edx
1711 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%esp,%ebp,4), %eax
1712 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
1713 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %eax
1714 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1715 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 32(%esp,%ebp,4), %ebx
1716 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%esp,%ebp,4), %eax
1717 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %esi
1718 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %esi
1719 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1720 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %eax, %edx
1721 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1722 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 40(%esp,%ebp,4), %edx
1723 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 36(%esp,%ebp,4), %eax
1724 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %edi
1725 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %edi
1726 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %eax, %ebx
1727 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%esp,%ebp,4), %esi
1728 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 44(%esp,%ebp,4), %eax
1729 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %eax, %edx
1730 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
1731 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 24(%ebp)
1732 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %edx # 4-byte Reload
1733 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
1734 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl %cl, %eax
1735 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 28(%ebp)
1736 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, 16(%ebp)
1737 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 20(%ebp)
1738 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1739 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 8(%ebp)
1740 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1741 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 12(%ebp)
1742 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, (%ebp)
1743 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1744 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 4(%ebp)
1745 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $92, %esp
1746 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
1747 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
1748 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
1749 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
1750 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
1752 ; X86-HAVE-BMI2-NO-SHLD-LABEL: lshr_32bytes:
1753 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
1754 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
1755 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
1756 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
1757 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
1758 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $108, %esp
1759 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
1760 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
1761 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1762 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
1763 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1764 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%eax), %esi
1765 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%eax), %edi
1766 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ebx
1767 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%eax), %ebp
1768 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%eax), %edx
1769 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
1770 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
1771 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
1772 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
1773 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
1774 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1775 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
1776 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
1777 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
1778 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
1779 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
1780 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
1781 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1782 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1783 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1784 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
1785 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1786 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrb $5, %cl
1787 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl %cl, %esi
1788 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 36(%esp,%esi,4), %ecx
1789 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 40(%esp,%esi,4), %ebx
1790 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1791 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ecx, %edi
1792 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %edx
1793 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $31, %dl
1794 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %dl
1795 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
1796 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ebx, %ebx
1797 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ebx
1798 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1799 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, 32(%esp,%esi,4), %edi
1800 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ecx, %ecx
1801 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ecx
1802 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ecx
1803 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1804 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 48(%esp,%esi,4), %ecx
1805 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1806 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ecx, %ecx
1807 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %edi
1808 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 44(%esp,%esi,4), %ecx
1809 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ecx, %ebp
1810 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %edi
1811 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1812 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
1813 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ecx, %ecx
1814 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ecx
1815 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ecx
1816 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1817 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 56(%esp,%esi,4), %ebx
1818 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%ebx,%ebx), %ecx
1819 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ecx
1820 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 52(%esp,%esi,4), %edi
1821 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %edi, %ebp
1822 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %ecx
1823 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
1824 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %edi, %edi
1825 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %edi, %edi
1826 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %edi
1827 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ebx, %ebx
1828 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 60(%esp,%esi,4), %esi
1829 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %esi, %eax
1830 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
1831 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %esi, %edx
1832 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebx, %edx
1833 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
1834 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 28(%esi)
1835 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 24(%esi)
1836 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, 16(%esi)
1837 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%esi)
1838 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1839 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 8(%esi)
1840 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1841 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 12(%esi)
1842 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1843 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, (%esi)
1844 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1845 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 4(%esi)
1846 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $108, %esp
1847 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
1848 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
1849 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
1850 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
1851 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
1938 ; X64-NO-BMI2-NO-SHLD-LABEL: shl_32bytes:
1939 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
1940 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbx
1941 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
1942 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
1943 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
1944 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %rdi
1945 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
1946 ; X64-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
1947 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1948 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
1949 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
1950 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
1951 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
1952 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
1953 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1954 ; X64-NO-BMI2-NO-SHLD-NEXT: shrb $3, %cl
1955 ; X64-NO-BMI2-NO-SHLD-NEXT: andb $24, %cl
1956 ; X64-NO-BMI2-NO-SHLD-NEXT: negb %cl
1957 ; X64-NO-BMI2-NO-SHLD-NEXT: movsbq %cl, %r10
1958 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -32(%rsp,%r10), %r8
1959 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -24(%rsp,%r10), %rdi
1960 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, %r11
1961 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1962 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r11
1963 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
1964 ; X64-NO-BMI2-NO-SHLD-NEXT: andb $63, %sil
1965 ; X64-NO-BMI2-NO-SHLD-NEXT: xorb $63, %sil
1966 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, %r9
1967 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r9
1968 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
1969 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r9
1970 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r11, %r9
1971 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -8(%rsp,%r10), %r11
1972 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1973 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r11
1974 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -16(%rsp,%r10), %r10
1975 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, %rbx
1976 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %rbx
1977 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
1978 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rbx
1979 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r11, %rbx
1980 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1981 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r10
1982 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %rdi
1983 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
1984 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rdi
1985 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r10, %rdi
1986 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
1987 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r8
1988 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, (%rdx)
1989 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, 16(%rdx)
1990 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, 24(%rdx)
1991 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, 8(%rdx)
1992 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbx
1993 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
1995 ; X64-NO-BMI2-HAVE-SHLD-LABEL: shl_32bytes:
1996 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
1997 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
1998 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %r8
1999 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 16(%rdi), %r9
2000 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 24(%rdi), %rdi
2001 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%rsi), %ecx
2002 ; X64-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
2003 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
2004 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
2005 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2006 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
2007 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
2008 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
2009 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %eax
2010 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrb $3, %al
2011 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andb $24, %al
2012 ; X64-NO-BMI2-HAVE-SHLD-NEXT: negb %al
2013 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movsbq %al, %rax
2014 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -24(%rsp,%rax), %rsi
2015 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -16(%rsp,%rax), %rdi
2016 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %rsi, %rdi
2017 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -40(%rsp,%rax), %r8
2018 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -32(%rsp,%rax), %rax
2019 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %rax, %rsi
2020 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %r8, %rax
2021 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shlq %cl, %r8
2022 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rsi, 16(%rdx)
2023 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 24(%rdx)
2024 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, (%rdx)
2025 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, 8(%rdx)
2026 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
2028 ; X64-HAVE-BMI2-NO-SHLD-LABEL: shl_32bytes:
2029 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
2030 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
2031 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
2032 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
2033 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %rdi
2034 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
2035 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
2036 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
2037 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
2038 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2039 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
2040 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
2041 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
2042 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2043 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrb $3, %cl
2044 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andb $24, %cl
2045 ; X64-HAVE-BMI2-NO-SHLD-NEXT: negb %cl
2046 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movsbq %cl, %rdi
2047 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -40(%rsp,%rdi), %r8
2048 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -32(%rsp,%rdi), %rcx
2049 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rcx, %rsi
2050 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, -16(%rsp,%rdi), %r9
2051 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -24(%rsp,%rdi), %rdi
2052 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rdi, %r10
2053 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %r8, %r11
2054 ; X64-HAVE-BMI2-NO-SHLD-NEXT: # kill: def $al killed $al killed $rax def $rax
2055 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andb $63, %al
2056 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorb $63, %al
2057 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %r8
2058 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %r8, %r8
2059 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rsi, %r8
2060 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %rdi
2061 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rdi, %rsi
2062 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r9, %rsi
2063 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %rcx
2064 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rcx, %rax
2065 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r10, %rax
2066 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, (%rdx)
2067 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 16(%rdx)
2068 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rsi, 24(%rdx)
2069 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, 8(%rdx)
2070 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
2105 ; X86-NO-BMI2-NO-SHLD-LABEL: shl_32bytes:
2106 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
2107 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
2108 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
2109 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
2110 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
2111 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $108, %esp
2112 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
2113 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
2114 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ebp), %eax
2115 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2116 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%ebp), %eax
2117 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2118 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%ebp), %esi
2119 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%ebp), %edi
2120 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%ebp), %ebx
2121 ; X86-NO-BMI2-NO-SHLD-NEXT: movb (%ecx), %ch
2122 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%ebp), %edx
2123 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%ebp), %eax
2124 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%ebp), %ebp
2125 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
2126 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2127 ; X86-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
2128 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
2129 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
2130 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2131 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
2132 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
2133 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
2134 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2135 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2136 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2137 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2138 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %al
2139 ; X86-NO-BMI2-NO-SHLD-NEXT: shrb $3, %al
2140 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $28, %al
2141 ; X86-NO-BMI2-NO-SHLD-NEXT: negb %al
2142 ; X86-NO-BMI2-NO-SHLD-NEXT: movsbl %al, %ebx
2143 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 64(%esp,%ebx), %ebp
2144 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2145 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 68(%esp,%ebx), %edi
2146 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %eax
2147 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2148 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
2149 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %dl
2150 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $31, %dl
2151 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %dl
2152 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebp
2153 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2154 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
2155 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
2156 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2157 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 76(%esp,%ebx), %esi
2158 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2159 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2160 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
2161 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 72(%esp,%ebx), %eax
2162 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ebp
2163 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebp
2164 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2165 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
2166 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
2167 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2168 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2169 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
2170 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
2171 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2172 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
2173 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
2174 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2175 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 84(%esp,%ebx), %esi
2176 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %edi
2177 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2178 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
2179 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 80(%esp,%ebx), %eax
2180 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ebp
2181 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebp
2182 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2183 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
2184 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %ebp
2185 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2186 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
2187 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
2188 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
2189 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2190 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
2191 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
2192 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2193 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 92(%esp,%ebx), %edi
2194 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2195 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
2196 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 88(%esp,%ebx), %eax
2197 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ebx
2198 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebx
2199 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2200 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
2201 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %ebx
2202 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2203 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
2204 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %esi
2205 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2206 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
2207 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
2208 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2209 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2210 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
2211 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2212 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, (%eax)
2213 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 24(%eax)
2214 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, 28(%eax)
2215 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2216 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 16(%eax)
2217 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 20(%eax)
2218 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2219 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
2220 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2221 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
2222 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2223 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
2224 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $108, %esp
2225 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
2226 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
2227 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
2228 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
2229 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
2231 ; X86-NO-BMI2-HAVE-SHLD-LABEL: shl_32bytes:
2232 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
2233 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
2234 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
2235 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
2236 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
2237 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $92, %esp
2238 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
2239 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
2240 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%ebp), %eax
2241 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2242 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%ebp), %eax
2243 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
2244 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%ebp), %esi
2245 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%ebp), %edi
2246 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%ebp), %ebx
2247 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
2248 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%ebp), %edx
2249 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%ebp), %eax
2250 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%ebp), %ebp
2251 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
2252 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2253 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
2254 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
2255 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
2256 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2257 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
2258 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
2259 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
2260 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
2261 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2262 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2263 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2264 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %eax
2265 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrb $3, %al
2266 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andb $28, %al
2267 ; X86-NO-BMI2-HAVE-SHLD-NEXT: negb %al
2268 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movsbl %al, %eax
2269 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%esp,%eax), %edx
2270 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%esp,%eax), %ebx
2271 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, %esi
2272 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edx, %esi
2273 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2274 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%esp,%eax), %esi
2275 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, (%esp) # 4-byte Spill
2276 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edx
2277 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2278 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 64(%esp,%eax), %edi
2279 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 68(%esp,%eax), %ebp
2280 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2281 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %ebp
2282 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %ebx, %edi
2283 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 48(%esp,%eax), %ebx
2284 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 72(%esp,%eax), %edx
2285 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 76(%esp,%eax), %esi
2286 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edx, %esi
2287 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2288 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %eax, %edx
2289 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2290 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 24(%eax)
2291 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 28(%eax)
2292 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 16(%eax)
2293 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, 20(%eax)
2294 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2295 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 8(%eax)
2296 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2297 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 12(%eax)
2298 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %edx # 4-byte Reload
2299 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %ebx, %edx
2300 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shll %cl, %ebx
2301 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, (%eax)
2302 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 4(%eax)
2303 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $92, %esp
2304 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
2305 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
2306 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
2307 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
2308 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
2310 ; X86-HAVE-BMI2-NO-SHLD-LABEL: shl_32bytes:
2311 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
2312 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
2313 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
2314 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
2315 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
2316 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $108, %esp
2317 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2318 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
2319 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2320 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
2321 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2322 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%eax), %esi
2323 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%eax), %edi
2324 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ebx
2325 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%eax), %ebp
2326 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%eax), %edx
2327 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
2328 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2329 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
2330 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2331 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2332 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
2333 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
2334 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
2335 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
2336 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
2337 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
2338 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
2339 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2340 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2341 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2342 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2343 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2344 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrb $3, %cl
2345 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $28, %cl
2346 ; X86-HAVE-BMI2-NO-SHLD-NEXT: negb %cl
2347 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movsbl %cl, %esi
2348 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 64(%esp,%esi), %ebx
2349 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2350 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 68(%esp,%esi), %ecx
2351 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2352 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, %ecx, %edi
2353 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %edx
2354 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ebp
2355 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $31, %dl
2356 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %dl
2357 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ebx
2358 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebx, %ebx
2359 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ebx
2360 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2361 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 72(%esp,%esi), %ebx
2362 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, %edi
2363 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %edi
2364 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %edi, %eax
2365 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 76(%esp,%esi), %edi
2366 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, %esi
2367 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebp, %edi, %ebp
2368 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
2369 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2370 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %esi, %ebx, %ebx
2371 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
2372 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ecx, %ecx
2373 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebx, %ecx
2374 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2375 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
2376 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 80(%esp,%ebp), %ecx
2377 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %ebx
2378 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ebx
2379 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebx, %eax
2380 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 84(%esp,%ebp), %ebx
2381 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %esi, %ebx, %ebp
2382 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
2383 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2384 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %esi, %ecx, %ecx
2385 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, %eax
2386 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %edi
2387 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %edi, %edi
2388 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ecx, %edi
2389 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %esi, {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
2390 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
2391 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, 92(%esp,%esi), %ebp
2392 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 88(%esp,%esi), %esi
2393 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, %esi, %eax
2394 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %esi
2395 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %esi, %esi
2396 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %esi
2397 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ebx
2398 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebx, %edx
2399 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %edx
2400 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2401 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, (%eax)
2402 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 24(%eax)
2403 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, 28(%eax)
2404 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, 16(%eax)
2405 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2406 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%eax)
2407 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2408 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
2409 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2410 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
2411 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2412 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
2413 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $108, %esp
2414 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
2415 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
2416 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
2417 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
2418 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
2507 ; X64-NO-BMI2-NO-SHLD-LABEL: ashr_32bytes:
2508 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
2509 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbx
2510 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
2511 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
2512 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
2513 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %rdi
2514 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
2515 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2516 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
2517 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
2518 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
2519 ; X64-NO-BMI2-NO-SHLD-NEXT: sarq $63, %rdi
2520 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2521 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2522 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2523 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2524 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2525 ; X64-NO-BMI2-NO-SHLD-NEXT: shrb $6, %cl
2526 ; X64-NO-BMI2-NO-SHLD-NEXT: movzbl %cl, %r8d
2527 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -64(%rsp,%r8,8), %r10
2528 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -56(%rsp,%r8,8), %rdi
2529 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, %r11
2530 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2531 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r11
2532 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
2533 ; X64-NO-BMI2-NO-SHLD-NEXT: andb $63, %sil
2534 ; X64-NO-BMI2-NO-SHLD-NEXT: xorb $63, %sil
2535 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -48(%rsp,%r8,8), %rbx
2536 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rbx,%rbx), %r9
2537 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
2538 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r9
2539 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r11, %r9
2540 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2541 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r10
2542 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %rdi, %rdi
2543 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
2544 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rdi
2545 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r10, %rdi
2546 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2547 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rbx
2548 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -40(%rsp,%r8,8), %r8
2549 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%r8,%r8), %r10
2550 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
2551 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r10
2552 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rbx, %r10
2553 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2554 ; X64-NO-BMI2-NO-SHLD-NEXT: sarq %cl, %r8
2555 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, 24(%rdx)
2556 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, 16(%rdx)
2557 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, (%rdx)
2558 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, 8(%rdx)
2559 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbx
2560 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
2562 ; X64-NO-BMI2-HAVE-SHLD-LABEL: ashr_32bytes:
2563 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
2564 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
2565 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %r8
2566 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 16(%rdi), %r9
2567 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 24(%rdi), %rdi
2568 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%rsi), %ecx
2569 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2570 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
2571 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
2572 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
2573 ; X64-NO-BMI2-HAVE-SHLD-NEXT: sarq $63, %rdi
2574 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2575 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2576 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2577 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2578 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %eax
2579 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrb $6, %al
2580 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movzbl %al, %eax
2581 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -56(%rsp,%rax,8), %rsi
2582 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -72(%rsp,%rax,8), %rdi
2583 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -64(%rsp,%rax,8), %r8
2584 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, %r9
2585 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rsi, %r9
2586 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -48(%rsp,%rax,8), %rax
2587 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rax, %rsi
2588 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r8, %rdi
2589 ; X64-NO-BMI2-HAVE-SHLD-NEXT: sarq %cl, %rax
2590 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rsi, 16(%rdx)
2591 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, 24(%rdx)
2592 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, (%rdx)
2593 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, 8(%rdx)
2594 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
2596 ; X64-HAVE-BMI2-NO-SHLD-LABEL: ashr_32bytes:
2597 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
2598 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
2599 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
2600 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
2601 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %rdi
2602 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%rsi), %eax
2603 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2604 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
2605 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
2606 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
2607 ; X64-HAVE-BMI2-NO-SHLD-NEXT: sarq $63, %rdi
2608 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2609 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2610 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2611 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
2612 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2613 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrb $6, %cl
2614 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movzbl %cl, %esi
2615 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -64(%rsp,%rsi,8), %rcx
2616 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -56(%rsp,%rsi,8), %rdi
2617 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rcx, %r8
2618 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, -72(%rsp,%rsi,8), %r9
2619 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rax, %rdi, %r10
2620 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -48(%rsp,%rsi,8), %rsi
2621 ; X64-HAVE-BMI2-NO-SHLD-NEXT: sarxq %rax, %rsi, %r11
2622 ; X64-HAVE-BMI2-NO-SHLD-NEXT: # kill: def $al killed $al killed $rax def $rax
2623 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andb $63, %al
2624 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorb $63, %al
2625 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rdi, %rdi
2626 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rdi, %rdi
2627 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r8, %rdi
2628 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rcx, %rcx
2629 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rcx, %rcx
2630 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r9, %rcx
2631 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rsi, %rsi
2632 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rsi, %rax
2633 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r10, %rax
2634 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, 24(%rdx)
2635 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 16(%rdx)
2636 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, (%rdx)
2637 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, 8(%rdx)
2638 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
2674 ; X86-NO-BMI2-NO-SHLD-LABEL: ashr_32bytes:
2675 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
2676 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
2677 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
2678 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
2679 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
2680 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $108, %esp
2681 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
2682 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
2683 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%edx), %eax
2684 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2685 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%edx), %eax
2686 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2687 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%edx), %edi
2688 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%edx), %ebx
2689 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%edx), %ebp
2690 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%ecx), %ecx
2691 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%edx), %esi
2692 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%edx), %eax
2693 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%edx), %edx
2694 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2695 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
2696 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2697 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
2698 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
2699 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
2700 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2701 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2702 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2703 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2704 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl $31, %edx
2705 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2706 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2707 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2708 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2709 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2710 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2711 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2712 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2713 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
2714 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, %eax
2715 ; X86-NO-BMI2-NO-SHLD-NEXT: shrb $5, %al
2716 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl %al, %ebp
2717 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%esp,%ebp,4), %esi
2718 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%esp,%ebp,4), %edx
2719 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %eax
2720 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
2721 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %cl, %ch
2722 ; X86-NO-BMI2-NO-SHLD-NEXT: andb $31, %ch
2723 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %ch
2724 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%esp,%ebp,4), %edi
2725 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2726 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edi,%edi), %ebx
2727 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2728 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
2729 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebx
2730 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2731 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 1-byte Folded Reload
2732 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
2733 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
2734 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %edx, %edx
2735 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2736 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
2737 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edx
2738 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2739 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %esi
2740 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%esp,%ebp,4), %ebp
2741 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %eax
2742 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %edx
2743 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
2744 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
2745 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 48(%esp,%esi,4), %edi
2746 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2747 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ebx
2748 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edi,%edi), %esi
2749 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2750 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
2751 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
2752 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2753 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2754 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2755 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
2756 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
2757 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2758 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
2759 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
2760 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2761 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 52(%esp,%ebx,4), %edi
2762 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %eax
2763 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2764 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
2765 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 56(%esp,%ebx,4), %ebx
2766 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ebx,%ebx), %esi
2767 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2768 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
2769 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
2770 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2771 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2772 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
2773 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %edi, %edi
2774 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2775 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
2776 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
2777 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
2778 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
2779 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2780 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 60(%esp,%eax,4), %eax
2781 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %edx
2782 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
2783 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
2784 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %edx
2785 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
2786 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl %cl, %eax
2787 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
2788 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 28(%ecx)
2789 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, 24(%ecx)
2790 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 16(%ecx)
2791 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 20(%ecx)
2792 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 8(%ecx)
2793 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2794 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 12(%ecx)
2795 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2796 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, (%ecx)
2797 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2798 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 4(%ecx)
2799 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $108, %esp
2800 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
2801 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
2802 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
2803 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
2804 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
2806 ; X86-NO-BMI2-HAVE-SHLD-LABEL: ashr_32bytes:
2807 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
2808 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
2809 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
2810 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
2811 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
2812 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $92, %esp
2813 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
2814 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edx
2815 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%edx), %eax
2816 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2817 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%edx), %eax
2818 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
2819 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%edx), %edi
2820 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%edx), %ebx
2821 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%edx), %ebp
2822 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl (%ecx), %ecx
2823 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%edx), %esi
2824 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%edx), %eax
2825 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%edx), %edx
2826 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2827 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
2828 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2829 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
2830 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
2831 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
2832 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
2833 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2834 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2835 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
2836 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl $31, %edx
2837 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2838 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2839 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2840 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2841 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2842 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2843 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2844 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2845 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %eax
2846 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrb $5, %al
2847 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movzbl %al, %ebp
2848 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%esp,%ebp,4), %edx
2849 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%esp,%ebp,4), %eax
2850 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
2851 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %eax
2852 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2853 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 32(%esp,%ebp,4), %ebx
2854 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%esp,%ebp,4), %eax
2855 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %esi
2856 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %esi
2857 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2858 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %eax, %edx
2859 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2860 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 40(%esp,%ebp,4), %edx
2861 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 36(%esp,%ebp,4), %eax
2862 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %edi
2863 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %edi
2864 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %eax, %ebx
2865 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%esp,%ebp,4), %esi
2866 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 44(%esp,%ebp,4), %eax
2867 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %eax, %edx
2868 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
2869 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 24(%ebp)
2870 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %edx # 4-byte Reload
2871 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
2872 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl %cl, %eax
2873 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 28(%ebp)
2874 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, 16(%ebp)
2875 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 20(%ebp)
2876 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2877 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 8(%ebp)
2878 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2879 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 12(%ebp)
2880 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, (%ebp)
2881 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2882 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 4(%ebp)
2883 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $92, %esp
2884 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
2885 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
2886 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
2887 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
2888 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
2890 ; X86-HAVE-BMI2-NO-SHLD-LABEL: ashr_32bytes:
2891 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
2892 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
2893 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
2894 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
2895 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
2896 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $108, %esp
2897 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2898 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
2899 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2900 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
2901 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2902 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%eax), %edi
2903 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%eax), %ebx
2904 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ebp
2905 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%eax), %esi
2906 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%eax), %edx
2907 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
2908 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
2909 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl (%eax), %eax
2910 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2911 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
2912 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2913 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
2914 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
2915 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
2916 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2917 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2918 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2919 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
2920 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarl $31, %ecx
2921 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2922 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2923 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2924 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2925 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2926 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2927 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2928 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
2929 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
2930 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrb $5, %cl
2931 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movzbl %cl, %esi
2932 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 36(%esp,%esi,4), %ecx
2933 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 40(%esp,%esi,4), %ebx
2934 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2935 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ecx, %edi
2936 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %edx
2937 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andb $31, %dl
2938 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %dl
2939 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
2940 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ebx, %ebx
2941 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ebx
2942 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2943 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, 32(%esp,%esi,4), %edi
2944 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ecx, %ecx
2945 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ecx
2946 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ecx
2947 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2948 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 48(%esp,%esi,4), %ecx
2949 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2950 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ecx, %ecx
2951 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %edi
2952 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 44(%esp,%esi,4), %ecx
2953 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ecx, %ebp
2954 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %edi
2955 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2956 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
2957 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ecx, %ecx
2958 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ecx
2959 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %ecx
2960 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
2961 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 56(%esp,%esi,4), %ebx
2962 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%ebx,%ebx), %ecx
2963 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ecx
2964 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 52(%esp,%esi,4), %edi
2965 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %edi, %ebp
2966 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %ecx
2967 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
2968 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %edi, %edi
2969 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %edi, %edi
2970 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %edi
2971 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %eax, %ebx, %ebx
2972 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 60(%esp,%esi,4), %esi
2973 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarxl %eax, %esi, %eax
2974 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
2975 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %esi, %edx
2976 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebx, %edx
2977 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %esi
2978 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 28(%esi)
2979 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 24(%esi)
2980 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, 16(%esi)
2981 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%esi)
2982 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2983 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 8(%esi)
2984 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2985 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 12(%esi)
2986 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2987 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, (%esi)
2988 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2989 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, 4(%esi)
2990 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $108, %esp
2991 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
2992 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
2993 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
2994 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
2995 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
3089 ; X64-NO-BMI2-NO-SHLD-LABEL: lshr_64bytes:
3090 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
3091 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbp
3092 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r15
3093 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r14
3094 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r13
3095 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r12
3096 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbx
3097 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rax
3098 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %rax
3099 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rcx
3100 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
3101 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %r10
3102 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 32(%rdi), %r11
3103 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 40(%rdi), %rbx
3104 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 48(%rdi), %r14
3105 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 56(%rdi), %rdi
3106 ; X64-NO-BMI2-NO-SHLD-NEXT: movl (%rsi), %r8d
3107 ; X64-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
3108 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3109 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3110 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3111 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3112 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
3113 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, -{{[0-9]+}}(%rsp)
3114 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
3115 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
3116 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
3117 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
3118 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
3119 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
3120 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %r8d, %eax
3121 ; X64-NO-BMI2-NO-SHLD-NEXT: andl $63, %eax
3122 ; X64-NO-BMI2-NO-SHLD-NEXT: shrl $3, %r8d
3123 ; X64-NO-BMI2-NO-SHLD-NEXT: andl $56, %r8d
3124 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -128(%rsp,%r8), %r11
3125 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -120(%rsp,%r8), %r9
3126 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, %rsi
3127 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3128 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rsi
3129 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %edi
3130 ; X64-NO-BMI2-NO-SHLD-NEXT: notl %edi
3131 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -112(%rsp,%r8), %r14
3132 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%r14,%r14), %r10
3133 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ecx
3134 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r10
3135 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rsi, %r10
3136 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3137 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r11
3138 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
3139 ; X64-NO-BMI2-NO-SHLD-NEXT: xorb $63, %sil
3140 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %r9, %r9
3141 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
3142 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r9
3143 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r11, %r9
3144 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -104(%rsp,%r8), %r11
3145 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, %r12
3146 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3147 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r12
3148 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -96(%rsp,%r8), %r15
3149 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%r15,%r15), %rbx
3150 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ecx
3151 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rbx
3152 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r12, %rbx
3153 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3154 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r14
3155 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %r11, %r11
3156 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
3157 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r11
3158 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r14, %r11
3159 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -88(%rsp,%r8), %r14
3160 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, %r13
3161 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3162 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r13
3163 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -80(%rsp,%r8), %rbp
3164 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rbp,%rbp), %r12
3165 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ecx
3166 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r12
3167 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r13, %r12
3168 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3169 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r15
3170 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %r14, %r14
3171 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
3172 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r14
3173 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r15, %r14
3174 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3175 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rbp
3176 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -72(%rsp,%r8), %rdi
3177 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rdi,%rdi), %r8
3178 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
3179 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r8
3180 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rbp, %r8
3181 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3182 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rdi
3183 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, 56(%rdx)
3184 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, 48(%rdx)
3185 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, 32(%rdx)
3186 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r12, 40(%rdx)
3187 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, 16(%rdx)
3188 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, 24(%rdx)
3189 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, (%rdx)
3190 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, 8(%rdx)
3191 ; X64-NO-BMI2-NO-SHLD-NEXT: addq $8, %rsp
3192 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbx
3193 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r12
3194 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r13
3195 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r14
3196 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r15
3197 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbp
3198 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
3200 ; X64-NO-BMI2-HAVE-SHLD-LABEL: lshr_64bytes:
3201 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
3202 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %r15
3203 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %r14
3204 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %rbx
3205 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rcx
3206 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %r8
3207 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 16(%rdi), %r9
3208 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 24(%rdi), %r10
3209 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 32(%rdi), %r11
3210 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 40(%rdi), %rbx
3211 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 48(%rdi), %r14
3212 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 56(%rdi), %rdi
3213 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl (%rsi), %eax
3214 ; X64-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
3215 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3216 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3217 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3218 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3219 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
3220 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r14, -{{[0-9]+}}(%rsp)
3221 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
3222 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
3223 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
3224 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
3225 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
3226 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
3227 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %ecx
3228 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andl $63, %ecx
3229 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrl $3, %eax
3230 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andl $56, %eax
3231 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -112(%rsp,%rax), %rdi
3232 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -128(%rsp,%rax), %rsi
3233 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -120(%rsp,%rax), %r9
3234 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, %r8
3235 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rdi, %r8
3236 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -96(%rsp,%rax), %r10
3237 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -104(%rsp,%rax), %r11
3238 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, %rbx
3239 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r10, %rbx
3240 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r11, %rdi
3241 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -80(%rsp,%rax), %r11
3242 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -88(%rsp,%rax), %r14
3243 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r14, %r15
3244 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r11, %r15
3245 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r14, %r10
3246 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -72(%rsp,%rax), %rax
3247 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rax, %r11
3248 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r9, %rsi
3249 ; X64-NO-BMI2-HAVE-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3250 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrq %cl, %rax
3251 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, 48(%rdx)
3252 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, 56(%rdx)
3253 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, 32(%rdx)
3254 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r15, 40(%rdx)
3255 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 16(%rdx)
3256 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rbx, 24(%rdx)
3257 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rsi, (%rdx)
3258 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, 8(%rdx)
3259 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %rbx
3260 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %r14
3261 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %r15
3262 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
3264 ; X64-HAVE-BMI2-NO-SHLD-LABEL: lshr_64bytes:
3265 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
3266 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rbp
3267 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r15
3268 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r14
3269 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r13
3270 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r12
3271 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rbx
3272 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rax
3273 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
3274 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
3275 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
3276 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %r10
3277 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 32(%rdi), %r11
3278 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 40(%rdi), %rbx
3279 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 48(%rdi), %r14
3280 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 56(%rdi), %rdi
3281 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl (%rsi), %eax
3282 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
3283 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3284 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3285 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3286 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
3287 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
3288 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r14, -{{[0-9]+}}(%rsp)
3289 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
3290 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
3291 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
3292 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
3293 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
3294 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
3295 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3296 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andl $63, %ecx
3297 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrl $3, %eax
3298 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andl $56, %eax
3299 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -120(%rsp,%rax), %rdi
3300 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -112(%rsp,%rax), %r8
3301 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %rdi, %r15
3302 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, -128(%rsp,%rax), %rbx
3303 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %esi
3304 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -104(%rsp,%rax), %r9
3305 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r9, %r13
3306 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r8, %r10
3307 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -88(%rsp,%rax), %r11
3308 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r11, %r14
3309 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %r12d
3310 ; X64-HAVE-BMI2-NO-SHLD-NEXT: notl %r12d
3311 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %r8, %r8
3312 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %r12, %r8, %r8
3313 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r15, %r8
3314 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -96(%rsp,%rax), %r15
3315 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r15, %rbp
3316 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorb $63, %sil
3317 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rdi, %rdi
3318 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %rdi, %rdi
3319 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rbx, %rdi
3320 ; X64-HAVE-BMI2-NO-SHLD-NEXT: leaq (%r15,%r15), %rbx
3321 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %r12, %rbx, %rbx
3322 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r13, %rbx
3323 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -80(%rsp,%rax), %r15
3324 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r15, %r13
3325 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -72(%rsp,%rax), %rax
3326 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %rax, %rcx
3327 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %r9, %r9
3328 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %r9, %r9
3329 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r10, %r9
3330 ; X64-HAVE-BMI2-NO-SHLD-NEXT: leaq (%r15,%r15), %r10
3331 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %r12, %r10, %r10
3332 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r14, %r10
3333 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %r11, %r11
3334 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %r11, %r11
3335 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rbp, %r11
3336 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rax, %rax
3337 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %rax, %rax
3338 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r13, %rax
3339 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, 56(%rdx)
3340 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 48(%rdx)
3341 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, 32(%rdx)
3342 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r10, 40(%rdx)
3343 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, 16(%rdx)
3344 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rbx, 24(%rdx)
3345 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, (%rdx)
3346 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, 8(%rdx)
3347 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq $8, %rsp
3348 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %rbx
3349 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r12
3350 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r13
3351 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r14
3352 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r15
3353 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %rbp
3354 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
3419 ; X86-NO-BMI2-NO-SHLD-LABEL: lshr_64bytes:
3420 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
3421 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
3422 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
3423 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
3424 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
3425 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $204, %esp
3426 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edi
3427 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%edi), %eax
3428 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3429 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%edi), %eax
3430 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
3431 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%edi), %eax
3432 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3433 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%edi), %eax
3434 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3435 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%edi), %eax
3436 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3437 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%edi), %eax
3438 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3439 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%edi), %eax
3440 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3441 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%edi), %eax
3442 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3443 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%edi), %eax
3444 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3445 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%edi), %eax
3446 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3447 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%edi), %ebp
3448 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%edi), %ebx
3449 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 48(%edi), %esi
3450 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 52(%edi), %edx
3451 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 56(%edi), %ecx
3452 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 60(%edi), %eax
3453 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %edi
3454 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%edi), %edi
3455 ; X86-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
3456 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3457 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3458 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3459 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3460 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3461 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
3462 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
3463 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
3464 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
3465 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3466 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3467 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3468 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3469 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3470 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3471 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3472 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3473 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3474 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3475 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3476 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3477 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3478 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3479 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3480 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3481 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3482 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
3483 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3484 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3485 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3486 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ebx
3487 ; X86-NO-BMI2-NO-SHLD-NEXT: andl $31, %ebx
3488 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl $3, %edi
3489 ; X86-NO-BMI2-NO-SHLD-NEXT: andl $60, %edi
3490 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 68(%esp,%edi), %eax
3491 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
3492 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
3493 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3494 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
3495 ; X86-NO-BMI2-NO-SHLD-NEXT: notl %ecx
3496 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3497 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 72(%esp,%edi), %edx
3498 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edx,%edx), %ebp
3499 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3500 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3501 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
3502 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3503 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 64(%esp,%edi), %esi
3504 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
3505 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3506 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ebp
3507 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %cl
3508 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %cl, (%esp) # 1-byte Spill
3509 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %eax, %eax
3510 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
3511 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3512 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3513 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 76(%esp,%edi), %ebx
3514 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3515 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %eax
3516 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3517 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3518 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
3519 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 80(%esp,%edi), %esi
3520 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %ebp
3521 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3522 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3523 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3524 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %ebp
3525 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3526 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3527 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
3528 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3529 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %eax, %eax
3530 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
3531 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
3532 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %eax
3533 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3534 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 84(%esp,%edi), %ebp
3535 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %ebx
3536 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
3537 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
3538 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
3539 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 88(%esp,%edi), %eax
3540 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3541 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %eax, %eax
3542 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3543 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3544 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
3545 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %eax
3546 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3547 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
3548 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ebx
3549 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3550 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
3551 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
3552 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3553 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
3554 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3555 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 92(%esp,%edi), %edx
3556 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %esi
3557 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
3558 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3559 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 96(%esp,%edi), %eax
3560 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3561 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebp
3562 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3563 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3564 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3565 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
3566 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3567 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
3568 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3569 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
3570 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %edx, %edx
3571 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
3572 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
3573 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edx
3574 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3575 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 100(%esp,%edi), %ebp
3576 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %esi
3577 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
3578 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3579 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 104(%esp,%edi), %edx
3580 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edx,%edx), %eax
3581 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3582 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3583 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
3584 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3585 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3586 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
3587 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3588 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
3589 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3590 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
3591 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
3592 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3593 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
3594 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3595 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 108(%esp,%edi), %ebx
3596 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %esi
3597 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3598 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
3599 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 112(%esp,%edi), %ecx
3600 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3601 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ecx,%ecx), %ebp
3602 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3603 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3604 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3605 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
3606 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3607 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3608 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ebp
3609 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
3610 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
3611 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
3612 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
3613 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %ebx
3614 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 116(%esp,%edi), %esi
3615 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %eax
3616 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %edx
3617 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
3618 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
3619 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 120(%esp,%edi), %ecx
3620 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3621 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ecx,%ecx), %ebp
3622 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3623 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3624 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebp
3625 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
3626 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %eax
3627 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
3628 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
3629 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
3630 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %esi, %esi
3631 ; X86-NO-BMI2-NO-SHLD-NEXT: movb (%esp), %ch # 1-byte Reload
3632 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
3633 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
3634 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %esi
3635 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %al, %cl
3636 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3637 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
3638 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 124(%esp,%edi), %edi
3639 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edi,%edi), %edx
3640 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
3641 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
3642 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edx
3643 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3644 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3645 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
3646 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
3647 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 60(%eax)
3648 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, 56(%eax)
3649 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 48(%eax)
3650 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 52(%eax)
3651 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, 40(%eax)
3652 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3653 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 44(%eax)
3654 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3655 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 32(%eax)
3656 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3657 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 36(%eax)
3658 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3659 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 24(%eax)
3660 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3661 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 28(%eax)
3662 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3663 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 16(%eax)
3664 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3665 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%eax)
3666 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3667 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
3668 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3669 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
3670 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3671 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, (%eax)
3672 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3673 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
3674 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $204, %esp
3675 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
3676 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
3677 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
3678 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
3679 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
3681 ; X86-NO-BMI2-HAVE-SHLD-LABEL: lshr_64bytes:
3682 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
3683 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
3684 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
3685 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
3686 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
3687 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $188, %esp
3688 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
3689 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%eax), %ecx
3690 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3691 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%eax), %ecx
3692 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3693 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%eax), %ecx
3694 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3695 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%eax), %ecx
3696 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3697 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%eax), %ecx
3698 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3699 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%eax), %ecx
3700 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3701 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%eax), %ecx
3702 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3703 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%eax), %ecx
3704 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3705 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 32(%eax), %ecx
3706 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3707 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 36(%eax), %ecx
3708 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, (%esp) # 4-byte Spill
3709 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 40(%eax), %ebp
3710 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 44(%eax), %ebx
3711 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 48(%eax), %edi
3712 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%eax), %esi
3713 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%eax), %edx
3714 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%eax), %ecx
3715 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
3716 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%eax), %eax
3717 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
3718 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3719 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3720 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3721 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3722 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
3723 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
3724 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
3725 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
3726 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
3727 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %ecx # 4-byte Reload
3728 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3729 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3730 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3731 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3732 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3733 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3734 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3735 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3736 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3737 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3738 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3739 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3740 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3741 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3742 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3743 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3744 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3745 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3746 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3747 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
3748 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %ecx
3749 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andl $31, %ecx
3750 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl $3, %eax
3751 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andl $60, %eax
3752 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%esp,%eax), %esi
3753 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%esp,%eax), %edx
3754 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3755 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %edx
3756 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3757 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 64(%esp,%eax), %ebx
3758 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%esp,%eax), %edx
3759 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %edi
3760 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %edi
3761 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3762 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
3763 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3764 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 72(%esp,%eax), %edi
3765 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 68(%esp,%eax), %edx
3766 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %esi
3767 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edi, %esi
3768 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3769 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %ebx
3770 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3771 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 80(%esp,%eax), %ebx
3772 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 76(%esp,%eax), %edx
3773 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %esi
3774 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %esi
3775 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3776 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %edi
3777 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3778 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 88(%esp,%eax), %edi
3779 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 84(%esp,%eax), %edx
3780 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %esi
3781 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edi, %esi
3782 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3783 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, %esi
3784 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %ebx
3785 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, (%esp) # 4-byte Spill
3786 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 96(%esp,%eax), %edi
3787 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 92(%esp,%eax), %edx
3788 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %ebx
3789 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edi, %ebx
3790 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3791 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
3792 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3793 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 104(%esp,%eax), %esi
3794 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 100(%esp,%eax), %edx
3795 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %ebx
3796 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %ebx
3797 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %edi
3798 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 48(%esp,%eax), %ebp
3799 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 108(%esp,%eax), %edx
3800 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
3801 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
3802 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 56(%eax)
3803 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
3804 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %ebp
3805 ; X86-NO-BMI2-HAVE-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
3806 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl %cl, %edx
3807 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 60(%eax)
3808 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 48(%eax)
3809 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, 52(%eax)
3810 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3811 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 40(%eax)
3812 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3813 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 44(%eax)
3814 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %ecx # 4-byte Reload
3815 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 32(%eax)
3816 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3817 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 36(%eax)
3818 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3819 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 24(%eax)
3820 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3821 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 28(%eax)
3822 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3823 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 16(%eax)
3824 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3825 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 20(%eax)
3826 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3827 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 8(%eax)
3828 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3829 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 12(%eax)
3830 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, (%eax)
3831 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
3832 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 4(%eax)
3833 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $188, %esp
3834 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
3835 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
3836 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
3837 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
3838 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
3840 ; X86-HAVE-BMI2-NO-SHLD-LABEL: lshr_64bytes:
3841 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
3842 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
3843 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
3844 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
3845 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
3846 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $204, %esp
3847 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
3848 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
3849 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3850 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
3851 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3852 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%eax), %ecx
3853 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3854 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%eax), %ecx
3855 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3856 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ecx
3857 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3858 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%eax), %ecx
3859 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3860 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%eax), %ecx
3861 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3862 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
3863 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3864 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 32(%eax), %ecx
3865 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3866 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 36(%eax), %ecx
3867 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3868 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 40(%eax), %ecx
3869 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3870 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 44(%eax), %ebp
3871 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 48(%eax), %ebx
3872 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 52(%eax), %edi
3873 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 56(%eax), %esi
3874 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 60(%eax), %edx
3875 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
3876 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
3877 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
3878 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3879 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3880 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3881 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
3882 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
3883 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
3884 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
3885 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
3886 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3887 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3888 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3889 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3890 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3891 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3892 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3893 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3894 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3895 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3896 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
3897 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3898 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3899 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3900 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3901 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3902 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3903 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3904 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3905 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3906 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3907 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
3908 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
3909 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %edx
3910 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andl $31, %edx
3911 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl $3, %ecx
3912 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andl $60, %ecx
3913 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 68(%esp,%ecx), %edi
3914 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 72(%esp,%ecx), %esi
3915 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3916 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %edi, %ebx
3917 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, %eax
3918 ; X86-HAVE-BMI2-NO-SHLD-NEXT: notl %eax
3919 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %ebp
3920 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, %ebp, %esi
3921 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebx, %esi
3922 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3923 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, %ebx
3924 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %bl
3925 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %edi, %edi
3926 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %edi, %esi
3927 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, 64(%esp,%ecx), %edi
3928 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %esi
3929 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3930 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 80(%esp,%ecx), %esi
3931 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3932 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %ebp
3933 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %edi
3934 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, %ebp, %eax
3935 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 76(%esp,%ecx), %ebp
3936 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebp, %esi
3937 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3938 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3939 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
3940 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
3941 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %ebp, %eax
3942 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3943 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3944 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 88(%esp,%ecx), %eax
3945 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3946 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebp
3947 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %ebp, %eax
3948 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 84(%esp,%ecx), %ebp
3949 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebp, %esi
3950 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3951 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3952 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
3953 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
3954 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %ebp, %eax
3955 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3956 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3957 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 96(%esp,%ecx), %eax
3958 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3959 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %esi
3960 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %esi, %eax
3961 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 92(%esp,%ecx), %esi
3962 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %esi, %ebp
3963 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
3964 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3965 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
3966 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
3967 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %esi, %eax
3968 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
3969 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3970 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 104(%esp,%ecx), %eax
3971 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3972 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebp
3973 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %ebp, %eax
3974 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3975 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 100(%esp,%ecx), %ebp
3976 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebp, %esi
3977 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3978 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3979 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
3980 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
3981 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %ebp, %eax
3982 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
3983 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3984 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 112(%esp,%ecx), %eax
3985 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3986 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %esi
3987 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %esi, %eax
3988 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 108(%esp,%ecx), %esi
3989 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %esi, %ebp
3990 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
3991 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3992 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
3993 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
3994 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %esi, %eax
3995 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
3996 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
3997 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 120(%esp,%ecx), %eax
3998 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %edi
3999 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
4000 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %esi, %edi, %ebp
4001 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 116(%esp,%ecx), %edi
4002 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %edi, %esi
4003 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
4004 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
4005 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %edi, %edi
4006 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %edi, %edi
4007 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %edi
4008 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %eax, %esi
4009 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 124(%esp,%ecx), %eax
4010 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %eax, %edx
4011 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %eax, %eax
4012 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ebx, %eax, %ebx
4013 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %ebx
4014 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
4015 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 60(%eax)
4016 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, 56(%eax)
4017 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, 48(%eax)
4018 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, 52(%eax)
4019 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4020 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 40(%eax)
4021 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4022 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 44(%eax)
4023 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4024 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 32(%eax)
4025 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4026 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 36(%eax)
4027 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4028 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 24(%eax)
4029 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4030 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 28(%eax)
4031 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4032 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 16(%eax)
4033 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4034 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%eax)
4035 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4036 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
4037 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4038 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
4039 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4040 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, (%eax)
4041 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4042 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
4043 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $204, %esp
4044 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
4045 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
4046 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
4047 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
4048 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
4213 ; X64-NO-BMI2-NO-SHLD-LABEL: shl_64bytes:
4214 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
4215 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r15
4216 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r14
4217 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r13
4218 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r12
4219 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbx
4220 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %rax
4221 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rcx
4222 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r8
4223 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %r9
4224 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 32(%rdi), %r10
4225 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 40(%rdi), %r11
4226 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 48(%rdi), %rbx
4227 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 56(%rdi), %rdi
4228 ; X64-NO-BMI2-NO-SHLD-NEXT: movl (%rsi), %esi
4229 ; X64-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
4230 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4231 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4232 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4233 ; X64-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4234 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
4235 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
4236 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
4237 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
4238 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
4239 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
4240 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
4241 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
4242 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %eax
4243 ; X64-NO-BMI2-NO-SHLD-NEXT: andl $63, %eax
4244 ; X64-NO-BMI2-NO-SHLD-NEXT: shrl $3, %esi
4245 ; X64-NO-BMI2-NO-SHLD-NEXT: andl $56, %esi
4246 ; X64-NO-BMI2-NO-SHLD-NEXT: negl %esi
4247 ; X64-NO-BMI2-NO-SHLD-NEXT: movslq %esi, %rbx
4248 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -64(%rsp,%rbx), %r8
4249 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -56(%rsp,%rbx), %rdi
4250 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, %r10
4251 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4252 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r10
4253 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
4254 ; X64-NO-BMI2-NO-SHLD-NEXT: xorb $63, %sil
4255 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, %r9
4256 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r9
4257 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4258 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r9
4259 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r10, %r9
4260 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -40(%rsp,%rbx), %r10
4261 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, %r14
4262 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4263 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r14
4264 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -48(%rsp,%rbx), %r15
4265 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r15, %r11
4266 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r11
4267 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4268 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r11
4269 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r14, %r11
4270 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4271 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r15
4272 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %rdi
4273 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4274 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rdi
4275 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r15, %rdi
4276 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -24(%rsp,%rbx), %r14
4277 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, %r12
4278 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4279 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r12
4280 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -32(%rsp,%rbx), %r13
4281 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r13, %r15
4282 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r15
4283 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4284 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r15
4285 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r12, %r15
4286 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4287 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r13
4288 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r10
4289 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4290 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r10
4291 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r13, %r10
4292 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -8(%rsp,%rbx), %r12
4293 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4294 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r12
4295 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -16(%rsp,%rbx), %rbx
4296 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, %r13
4297 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r13
4298 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4299 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r13
4300 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r12, %r13
4301 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4302 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rbx
4303 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %r14
4304 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
4305 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r14
4306 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rbx, %r14
4307 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
4308 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r8
4309 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, (%rdx)
4310 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, 48(%rdx)
4311 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r13, 56(%rdx)
4312 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, 32(%rdx)
4313 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r15, 40(%rdx)
4314 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, 16(%rdx)
4315 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, 24(%rdx)
4316 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, 8(%rdx)
4317 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbx
4318 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r12
4319 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r13
4320 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r14
4321 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r15
4322 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
4324 ; X64-NO-BMI2-HAVE-SHLD-LABEL: shl_64bytes:
4325 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
4326 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %r14
4327 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %rbx
4328 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %rax
4329 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rax
4330 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %rcx
4331 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 16(%rdi), %r8
4332 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 24(%rdi), %r9
4333 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 32(%rdi), %r10
4334 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 40(%rdi), %r11
4335 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 48(%rdi), %rbx
4336 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 56(%rdi), %rdi
4337 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl (%rsi), %esi
4338 ; X64-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
4339 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4340 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4341 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4342 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4343 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
4344 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
4345 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
4346 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
4347 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
4348 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
4349 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
4350 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
4351 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, %ecx
4352 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andl $63, %ecx
4353 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrl $3, %esi
4354 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andl $56, %esi
4355 ; X64-NO-BMI2-HAVE-SHLD-NEXT: negl %esi
4356 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movslq %esi, %r9
4357 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -48(%rsp,%r9), %rax
4358 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -40(%rsp,%r9), %r10
4359 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, %rsi
4360 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %rax, %rsi
4361 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -64(%rsp,%r9), %r8
4362 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -56(%rsp,%r9), %rdi
4363 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %rdi, %rax
4364 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -32(%rsp,%r9), %r11
4365 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -24(%rsp,%r9), %rbx
4366 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rbx, %r14
4367 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %r11, %r14
4368 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %r10, %r11
4369 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -16(%rsp,%r9), %r10
4370 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -8(%rsp,%r9), %r9
4371 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %r10, %r9
4372 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %rbx, %r10
4373 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shldq %cl, %r8, %rdi
4374 ; X64-NO-BMI2-HAVE-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
4375 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shlq %cl, %r8
4376 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, 48(%rdx)
4377 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, 56(%rdx)
4378 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, 32(%rdx)
4379 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r14, 40(%rdx)
4380 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, 16(%rdx)
4381 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rsi, 24(%rdx)
4382 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, (%rdx)
4383 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 8(%rdx)
4384 ; X64-NO-BMI2-HAVE-SHLD-NEXT: addq $8, %rsp
4385 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %rbx
4386 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %r14
4387 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
4389 ; X64-HAVE-BMI2-NO-SHLD-LABEL: shl_64bytes:
4390 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
4391 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rbp
4392 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r15
4393 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r14
4394 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r13
4395 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r12
4396 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rbx
4397 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rax
4398 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rax
4399 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rcx
4400 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r8
4401 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %r9
4402 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 32(%rdi), %r10
4403 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 40(%rdi), %r11
4404 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 48(%rdi), %rbx
4405 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 56(%rdi), %rdi
4406 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl (%rsi), %esi
4407 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
4408 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4409 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4410 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4411 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, -{{[0-9]+}}(%rsp)
4412 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
4413 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
4414 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
4415 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
4416 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
4417 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
4418 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
4419 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
4420 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, %eax
4421 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andl $63, %eax
4422 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrl $3, %esi
4423 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andl $56, %esi
4424 ; X64-HAVE-BMI2-NO-SHLD-NEXT: negl %esi
4425 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movslq %esi, %rsi
4426 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -64(%rsp,%rsi), %r10
4427 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -56(%rsp,%rsi), %rcx
4428 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rcx, %r9
4429 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -40(%rsp,%rsi), %rdi
4430 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rdi, %r11
4431 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -48(%rsp,%rsi), %r14
4432 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %r14, %rbx
4433 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -24(%rsp,%rsi), %r8
4434 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %r8, %r15
4435 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %r10, %r12
4436 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %r13d
4437 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorb $63, %r13b
4438 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %r10
4439 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %r10, %r10
4440 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r9, %r10
4441 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -32(%rsp,%rsi), %r9
4442 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %r9, %rbp
4443 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %r14
4444 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %r14, %r14
4445 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r11, %r14
4446 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, -8(%rsp,%rsi), %r11
4447 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -16(%rsp,%rsi), %rsi
4448 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rax, %rsi, %rax
4449 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %rcx
4450 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %rcx, %rcx
4451 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rbx, %rcx
4452 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %r9
4453 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %r9, %r9
4454 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r15, %r9
4455 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %rdi
4456 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %rdi, %rdi
4457 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rbp, %rdi
4458 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %rsi
4459 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %rsi, %rsi
4460 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r11, %rsi
4461 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrq %r8
4462 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %r13, %r8, %r8
4463 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rax, %r8
4464 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r12, (%rdx)
4465 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, 48(%rdx)
4466 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rsi, 56(%rdx)
4467 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, 32(%rdx)
4468 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, 40(%rdx)
4469 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, 16(%rdx)
4470 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r14, 24(%rdx)
4471 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r10, 8(%rdx)
4472 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq $8, %rsp
4473 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %rbx
4474 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r12
4475 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r13
4476 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r14
4477 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r15
4478 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %rbp
4479 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
4545 ; X86-NO-BMI2-NO-SHLD-LABEL: shl_64bytes:
4546 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
4547 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
4548 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
4549 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
4550 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
4551 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $204, %esp
4552 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
4553 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
4554 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4555 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
4556 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4557 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%eax), %ecx
4558 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4559 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%eax), %ecx
4560 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4561 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ecx
4562 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4563 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%eax), %ecx
4564 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4565 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%eax), %ecx
4566 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4567 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
4568 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4569 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%eax), %ecx
4570 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4571 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%eax), %ecx
4572 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4573 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%eax), %ebx
4574 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%eax), %edi
4575 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 48(%eax), %esi
4576 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 52(%eax), %edx
4577 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 56(%eax), %ecx
4578 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 60(%eax), %eax
4579 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
4580 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ebp), %ebp
4581 ; X86-NO-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
4582 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4583 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4584 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
4585 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
4586 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
4587 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
4588 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
4589 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4590 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4591 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4592 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4593 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4594 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4595 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4596 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4597 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4598 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4599 ; X86-NO-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4600 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4601 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4602 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4603 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4604 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4605 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4606 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4607 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4608 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4609 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4610 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4611 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4612 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %edx
4613 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %ecx
4614 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl $3, %ecx
4615 ; X86-NO-BMI2-NO-SHLD-NEXT: andl $60, %ecx
4616 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4617 ; X86-NO-BMI2-NO-SHLD-NEXT: leal {{[0-9]+}}(%esp), %eax
4618 ; X86-NO-BMI2-NO-SHLD-NEXT: subl %ecx, %eax
4619 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4620 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%eax), %esi
4621 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4622 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%eax), %edi
4623 ; X86-NO-BMI2-NO-SHLD-NEXT: andl $31, %edx
4624 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %eax
4625 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
4626 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
4627 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %esi
4628 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %ch
4629 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %ch
4630 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4631 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
4632 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
4633 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %esi
4634 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4635 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
4636 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%ebp), %eax
4637 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4638 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4639 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
4640 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%ebp), %esi
4641 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ebx
4642 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebx
4643 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4644 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
4645 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebx
4646 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4647 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ebx
4648 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
4649 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
4650 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
4651 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4652 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
4653 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
4654 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4655 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%ebp), %eax
4656 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4657 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
4658 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
4659 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%ebp), %esi
4660 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ebp
4661 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebp
4662 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4663 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
4664 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
4665 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4666 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
4667 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
4668 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
4669 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
4670 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4671 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
4672 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
4673 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4674 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
4675 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%ebp), %edi
4676 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %eax
4677 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %bl, %cl
4678 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
4679 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%ebp), %esi
4680 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %edx
4681 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edx
4682 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4683 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
4684 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edx
4685 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4686 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %edx
4687 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4688 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
4689 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
4690 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebx
4691 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4692 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
4693 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebx
4694 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4695 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%ebp), %eax
4696 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4697 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4698 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
4699 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%ebp), %esi
4700 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ebx
4701 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebx
4702 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4703 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebx
4704 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %ebx
4705 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4706 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4707 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
4708 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
4709 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4710 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
4711 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
4712 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4713 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%ebp), %esi
4714 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %eax
4715 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4716 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
4717 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%ebp), %ebx
4718 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %edi
4719 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
4720 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4721 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
4722 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
4723 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4724 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4725 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
4726 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4727 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %eax
4728 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4729 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
4730 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %eax
4731 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4732 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4733 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 52(%eax), %ebp
4734 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %edi
4735 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4736 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4737 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
4738 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4739 ; X86-NO-BMI2-NO-SHLD-NEXT: negl %eax
4740 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 176(%esp,%eax), %ebx
4741 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
4742 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %eax
4743 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4744 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
4745 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %eax
4746 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4747 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
4748 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %esi
4749 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4750 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
4751 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %esi
4752 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
4753 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 60(%edi), %edx
4754 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
4755 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
4756 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
4757 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 56(%edi), %ebx
4758 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %edi
4759 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %edi
4760 ; X86-NO-BMI2-NO-SHLD-NEXT: movb {{[-0-9]+}}(%e{{[sb]}}p), %ch # 1-byte Reload
4761 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4762 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
4763 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %edi
4764 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
4765 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %dl, %cl
4766 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
4767 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %ebp
4768 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
4769 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %ebp
4770 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %ebx, %ebp
4771 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
4772 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
4773 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
4774 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
4775 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, (%ecx)
4776 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 56(%ecx)
4777 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 60(%ecx)
4778 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 48(%ecx)
4779 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 52(%ecx)
4780 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4781 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 40(%ecx)
4782 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4783 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 44(%ecx)
4784 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4785 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 32(%ecx)
4786 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4787 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 36(%ecx)
4788 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4789 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 24(%ecx)
4790 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4791 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 28(%ecx)
4792 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4793 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 16(%ecx)
4794 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4795 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 20(%ecx)
4796 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4797 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 8(%ecx)
4798 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4799 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 12(%ecx)
4800 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4801 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, 4(%ecx)
4802 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $204, %esp
4803 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
4804 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
4805 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
4806 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
4807 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
4809 ; X86-NO-BMI2-HAVE-SHLD-LABEL: shl_64bytes:
4810 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
4811 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
4812 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
4813 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
4814 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
4815 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $188, %esp
4816 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
4817 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%ecx), %eax
4818 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4819 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%ecx), %eax
4820 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4821 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%ecx), %eax
4822 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4823 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%ecx), %eax
4824 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4825 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%ecx), %eax
4826 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4827 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%ecx), %eax
4828 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4829 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%ecx), %eax
4830 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4831 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%ecx), %eax
4832 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4833 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 32(%ecx), %eax
4834 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4835 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 36(%ecx), %eax
4836 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
4837 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 40(%ecx), %ebp
4838 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 44(%ecx), %ebx
4839 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 48(%ecx), %edi
4840 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%ecx), %esi
4841 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%ecx), %edx
4842 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%ecx), %eax
4843 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ecx
4844 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%ecx), %ecx
4845 ; X86-NO-BMI2-HAVE-SHLD-NEXT: xorps %xmm0, %xmm0
4846 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4847 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4848 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
4849 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
4850 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
4851 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
4852 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
4853 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
4854 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4855 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4856 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4857 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4858 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4859 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4860 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4861 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4862 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4863 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
4864 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4865 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4866 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4867 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4868 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4869 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4870 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4871 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4872 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4873 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4874 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4875 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
4876 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, %ebp
4877 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl $3, %ebp
4878 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andl $60, %ebp
4879 ; X86-NO-BMI2-HAVE-SHLD-NEXT: leal {{[0-9]+}}(%esp), %eax
4880 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl %ebp, %eax
4881 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%eax), %esi
4882 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%eax), %edx
4883 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andl $31, %ecx
4884 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %edi
4885 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edi
4886 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4887 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%eax), %edi
4888 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4889 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %esi
4890 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4891 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%eax), %edi
4892 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%eax), %esi
4893 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, %ebx
4894 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %ebx
4895 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4896 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edx, %edi
4897 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4898 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%eax), %edi
4899 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%eax), %edx
4900 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %ebx
4901 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %ebx
4902 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4903 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edi
4904 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4905 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 32(%eax), %edi
4906 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 36(%eax), %esi
4907 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, %ebx
4908 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %ebx
4909 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4910 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edx, %edi
4911 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4912 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 40(%eax), %edx
4913 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 44(%eax), %edi
4914 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4915 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edx, %edi
4916 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, (%esp) # 4-byte Spill
4917 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edx
4918 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4919 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%eax), %edx
4920 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%eax), %edi
4921 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edx, %edi
4922 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%eax), %ebx
4923 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%eax), %esi
4924 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %esi, %edx
4925 ; X86-NO-BMI2-HAVE-SHLD-NEXT: negl %ebp
4926 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 160(%esp,%ebp), %eax
4927 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
4928 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 56(%ebp)
4929 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 60(%ebp)
4930 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
4931 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %ebx, %edx
4932 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shll %cl, %ebx
4933 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %eax, %esi
4934 ; X86-NO-BMI2-HAVE-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
4935 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
4936 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shldl %cl, %edi, %eax
4937 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 48(%ebp)
4938 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 52(%ebp)
4939 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4940 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 40(%ebp)
4941 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
4942 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 44(%ebp)
4943 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4944 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 32(%ebp)
4945 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4946 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 36(%ebp)
4947 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4948 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 24(%ebp)
4949 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4950 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 28(%ebp)
4951 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4952 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 16(%ebp)
4953 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4954 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 20(%ebp)
4955 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4956 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 8(%ebp)
4957 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
4958 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, 12(%ebp)
4959 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, (%ebp)
4960 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 4(%ebp)
4961 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $188, %esp
4962 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
4963 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
4964 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
4965 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
4966 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
4968 ; X86-HAVE-BMI2-NO-SHLD-LABEL: shl_64bytes:
4969 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
4970 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
4971 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
4972 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
4973 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
4974 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $204, %esp
4975 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
4976 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%ebp), %eax
4977 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4978 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%ebp), %eax
4979 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4980 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%ebp), %eax
4981 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4982 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%ebp), %eax
4983 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4984 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%ebp), %eax
4985 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4986 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%ebp), %eax
4987 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4988 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%ebp), %eax
4989 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4990 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%ebp), %eax
4991 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4992 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 32(%ebp), %eax
4993 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, (%esp) # 4-byte Spill
4994 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 36(%ebp), %eax
4995 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
4996 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 40(%ebp), %ebx
4997 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 44(%ebp), %edi
4998 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 48(%ebp), %esi
4999 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 52(%ebp), %edx
5000 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 56(%ebp), %ecx
5001 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 60(%ebp), %eax
5002 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
5003 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%ebp), %ebp
5004 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorps %xmm0, %xmm0
5005 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
5006 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5007 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5008 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
5009 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
5010 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
5011 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
5012 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5013 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5014 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%esp), %eax # 4-byte Reload
5015 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5016 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5017 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5018 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5019 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5020 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
5021 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
5022 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movaps %xmm0, {{[0-9]+}}(%esp)
5023 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5024 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5025 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5026 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5027 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5028 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5029 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5030 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5031 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5032 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5033 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5034 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5035 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, %edx
5036 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andl $31, %edx
5037 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl $3, %ebp
5038 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andl $60, %ebp
5039 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5040 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal {{[0-9]+}}(%esp), %edi
5041 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl %ebp, %edi
5042 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%edi), %ecx
5043 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5044 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%edi), %eax
5045 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5046 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, %ebx
5047 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %bl
5048 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
5049 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %ecx, %esi
5050 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %eax, %ecx
5051 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ecx, %esi
5052 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5053 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%edi), %esi
5054 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
5055 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
5056 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %ecx, %eax
5057 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%edi), %ecx
5058 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ebp
5059 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
5060 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5061 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %esi, %esi
5062 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5063 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %eax
5064 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %eax, %eax
5065 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
5066 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5067 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%edi), %eax
5068 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5069 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %eax
5070 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %eax, %eax
5071 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%edi), %esi
5072 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %esi, %ebp
5073 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
5074 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5075 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
5076 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
5077 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %ecx, %ecx
5078 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %ecx
5079 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5080 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%edi), %ecx
5081 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, (%esp) # 4-byte Spill
5082 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
5083 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %ecx, %eax
5084 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%edi), %ecx
5085 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ebp
5086 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
5087 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5088 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, (%esp), %eax # 4-byte Folded Reload
5089 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %esi
5090 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %esi, %esi
5091 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %esi
5092 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, (%esp) # 4-byte Spill
5093 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 32(%edi), %eax
5094 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5095 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %eax
5096 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %eax, %eax
5097 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 36(%edi), %esi
5098 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %esi, %ebp
5099 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
5100 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5101 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
5102 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
5103 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %ecx, %ecx
5104 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %ecx
5105 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5106 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 40(%edi), %ecx
5107 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5108 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %ecx
5109 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %ecx, %eax
5110 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 44(%edi), %ecx
5111 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5112 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %ebp
5113 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
5114 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5115 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
5116 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %esi
5117 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %esi, %esi
5118 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %esi
5119 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5120 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 48(%edi), %ebp
5121 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, %eax
5122 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %eax
5123 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %eax, %eax
5124 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 52(%edi), %ecx
5125 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5126 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ecx, %esi
5127 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
5128 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5129 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %ebp, %ebp
5130 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5131 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %eax
5132 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %eax, %esi
5133 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %esi
5134 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
5135 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5136 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5137 ; X86-HAVE-BMI2-NO-SHLD-NEXT: negl %ecx
5138 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, 188(%esp,%ecx), %ebp
5139 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 56(%edi), %edi
5140 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edx, %edi, %edx
5141 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5142 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %eax
5143 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %eax, %ecx
5144 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edx, %ecx
5145 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl %edi
5146 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %ebx, %edi, %eax
5147 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %ebp
5148 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
5149 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
5150 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, (%eax)
5151 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 56(%eax)
5152 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, 60(%eax)
5153 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, 48(%eax)
5154 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5155 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 52(%eax)
5156 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5157 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 40(%eax)
5158 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5159 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 44(%eax)
5160 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5161 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 32(%eax)
5162 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5163 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 36(%eax)
5164 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%esp), %ecx # 4-byte Reload
5165 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 24(%eax)
5166 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5167 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 28(%eax)
5168 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5169 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 16(%eax)
5170 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5171 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%eax)
5172 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5173 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
5174 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5175 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
5176 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5177 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
5178 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $204, %esp
5179 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
5180 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
5181 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
5182 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
5183 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
5352 ; X64-NO-BMI2-NO-SHLD-LABEL: ashr_64bytes:
5353 ; X64-NO-BMI2-NO-SHLD: # %bb.0:
5354 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbp
5355 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r15
5356 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r14
5357 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r13
5358 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %r12
5359 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rbx
5360 ; X64-NO-BMI2-NO-SHLD-NEXT: pushq %rax
5361 ; X64-NO-BMI2-NO-SHLD-NEXT: movq (%rdi), %rax
5362 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %rcx
5363 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
5364 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %r10
5365 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 32(%rdi), %r11
5366 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 40(%rdi), %rbx
5367 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 48(%rdi), %r14
5368 ; X64-NO-BMI2-NO-SHLD-NEXT: movq 56(%rdi), %rdi
5369 ; X64-NO-BMI2-NO-SHLD-NEXT: movl (%rsi), %r8d
5370 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5371 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, -{{[0-9]+}}(%rsp)
5372 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
5373 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
5374 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
5375 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
5376 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
5377 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rax, -{{[0-9]+}}(%rsp)
5378 ; X64-NO-BMI2-NO-SHLD-NEXT: sarq $63, %rdi
5379 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5380 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5381 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5382 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5383 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5384 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5385 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5386 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5387 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %r8d, %eax
5388 ; X64-NO-BMI2-NO-SHLD-NEXT: andl $63, %eax
5389 ; X64-NO-BMI2-NO-SHLD-NEXT: shrl $3, %r8d
5390 ; X64-NO-BMI2-NO-SHLD-NEXT: andl $56, %r8d
5391 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -128(%rsp,%r8), %r11
5392 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -120(%rsp,%r8), %r9
5393 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, %rsi
5394 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5395 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rsi
5396 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %edi
5397 ; X64-NO-BMI2-NO-SHLD-NEXT: notl %edi
5398 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -112(%rsp,%r8), %r14
5399 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%r14,%r14), %r10
5400 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ecx
5401 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r10
5402 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rsi, %r10
5403 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5404 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r11
5405 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
5406 ; X64-NO-BMI2-NO-SHLD-NEXT: xorb $63, %sil
5407 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %r9, %r9
5408 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
5409 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r9
5410 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r11, %r9
5411 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -104(%rsp,%r8), %r11
5412 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, %r12
5413 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5414 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r12
5415 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -96(%rsp,%r8), %r15
5416 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%r15,%r15), %rbx
5417 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ecx
5418 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %rbx
5419 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r12, %rbx
5420 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5421 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r14
5422 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %r11, %r11
5423 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
5424 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r11
5425 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r14, %r11
5426 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -88(%rsp,%r8), %r14
5427 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, %r13
5428 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5429 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r13
5430 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -80(%rsp,%r8), %rbp
5431 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rbp,%rbp), %r12
5432 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %edi, %ecx
5433 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r12
5434 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r13, %r12
5435 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5436 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %r15
5437 ; X64-NO-BMI2-NO-SHLD-NEXT: addq %r14, %r14
5438 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
5439 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r14
5440 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %r15, %r14
5441 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5442 ; X64-NO-BMI2-NO-SHLD-NEXT: shrq %cl, %rbp
5443 ; X64-NO-BMI2-NO-SHLD-NEXT: movq -72(%rsp,%r8), %rdi
5444 ; X64-NO-BMI2-NO-SHLD-NEXT: leaq (%rdi,%rdi), %r8
5445 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %esi, %ecx
5446 ; X64-NO-BMI2-NO-SHLD-NEXT: shlq %cl, %r8
5447 ; X64-NO-BMI2-NO-SHLD-NEXT: orq %rbp, %r8
5448 ; X64-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5449 ; X64-NO-BMI2-NO-SHLD-NEXT: sarq %cl, %rdi
5450 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rdi, 56(%rdx)
5451 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r8, 48(%rdx)
5452 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r14, 32(%rdx)
5453 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r12, 40(%rdx)
5454 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r11, 16(%rdx)
5455 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %rbx, 24(%rdx)
5456 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r9, (%rdx)
5457 ; X64-NO-BMI2-NO-SHLD-NEXT: movq %r10, 8(%rdx)
5458 ; X64-NO-BMI2-NO-SHLD-NEXT: addq $8, %rsp
5459 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbx
5460 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r12
5461 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r13
5462 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r14
5463 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %r15
5464 ; X64-NO-BMI2-NO-SHLD-NEXT: popq %rbp
5465 ; X64-NO-BMI2-NO-SHLD-NEXT: retq
5467 ; X64-NO-BMI2-HAVE-SHLD-LABEL: ashr_64bytes:
5468 ; X64-NO-BMI2-HAVE-SHLD: # %bb.0:
5469 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %r15
5470 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %r14
5471 ; X64-NO-BMI2-HAVE-SHLD-NEXT: pushq %rbx
5472 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq (%rdi), %rcx
5473 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 8(%rdi), %r8
5474 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 16(%rdi), %r9
5475 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 24(%rdi), %r10
5476 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 32(%rdi), %r11
5477 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 40(%rdi), %rbx
5478 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 48(%rdi), %r14
5479 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq 56(%rdi), %rdi
5480 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl (%rsi), %eax
5481 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5482 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r14, -{{[0-9]+}}(%rsp)
5483 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
5484 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
5485 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
5486 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
5487 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
5488 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
5489 ; X64-NO-BMI2-HAVE-SHLD-NEXT: sarq $63, %rdi
5490 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5491 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5492 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5493 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5494 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5495 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5496 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5497 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5498 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %ecx
5499 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andl $63, %ecx
5500 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrl $3, %eax
5501 ; X64-NO-BMI2-HAVE-SHLD-NEXT: andl $56, %eax
5502 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -112(%rsp,%rax), %rdi
5503 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -128(%rsp,%rax), %rsi
5504 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -120(%rsp,%rax), %r9
5505 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r9, %r8
5506 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rdi, %r8
5507 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -96(%rsp,%rax), %r10
5508 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -104(%rsp,%rax), %r11
5509 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, %rbx
5510 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r10, %rbx
5511 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r11, %rdi
5512 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -80(%rsp,%rax), %r11
5513 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -88(%rsp,%rax), %r14
5514 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r14, %r15
5515 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r11, %r15
5516 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r14, %r10
5517 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq -72(%rsp,%rax), %rax
5518 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %rax, %r11
5519 ; X64-NO-BMI2-HAVE-SHLD-NEXT: shrdq %cl, %r9, %rsi
5520 ; X64-NO-BMI2-HAVE-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5521 ; X64-NO-BMI2-HAVE-SHLD-NEXT: sarq %cl, %rax
5522 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r11, 48(%rdx)
5523 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rax, 56(%rdx)
5524 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r10, 32(%rdx)
5525 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r15, 40(%rdx)
5526 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rdi, 16(%rdx)
5527 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rbx, 24(%rdx)
5528 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %rsi, (%rdx)
5529 ; X64-NO-BMI2-HAVE-SHLD-NEXT: movq %r8, 8(%rdx)
5530 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %rbx
5531 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %r14
5532 ; X64-NO-BMI2-HAVE-SHLD-NEXT: popq %r15
5533 ; X64-NO-BMI2-HAVE-SHLD-NEXT: retq
5535 ; X64-HAVE-BMI2-NO-SHLD-LABEL: ashr_64bytes:
5536 ; X64-HAVE-BMI2-NO-SHLD: # %bb.0:
5537 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rbp
5538 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r15
5539 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r14
5540 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r13
5541 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %r12
5542 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rbx
5543 ; X64-HAVE-BMI2-NO-SHLD-NEXT: pushq %rax
5544 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq (%rdi), %rcx
5545 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 8(%rdi), %r8
5546 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 16(%rdi), %r9
5547 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 24(%rdi), %r10
5548 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 32(%rdi), %r11
5549 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 40(%rdi), %rbx
5550 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 48(%rdi), %r14
5551 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq 56(%rdi), %rdi
5552 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl (%rsi), %eax
5553 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5554 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r14, -{{[0-9]+}}(%rsp)
5555 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rbx, -{{[0-9]+}}(%rsp)
5556 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, -{{[0-9]+}}(%rsp)
5557 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r10, -{{[0-9]+}}(%rsp)
5558 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, -{{[0-9]+}}(%rsp)
5559 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, -{{[0-9]+}}(%rsp)
5560 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, -{{[0-9]+}}(%rsp)
5561 ; X64-HAVE-BMI2-NO-SHLD-NEXT: sarq $63, %rdi
5562 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5563 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5564 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5565 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5566 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5567 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5568 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5569 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, -{{[0-9]+}}(%rsp)
5570 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5571 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andl $63, %ecx
5572 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrl $3, %eax
5573 ; X64-HAVE-BMI2-NO-SHLD-NEXT: andl $56, %eax
5574 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -120(%rsp,%rax), %rdi
5575 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -112(%rsp,%rax), %r8
5576 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %rdi, %r15
5577 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, -128(%rsp,%rax), %rbx
5578 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %esi
5579 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -104(%rsp,%rax), %r9
5580 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r9, %r13
5581 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r8, %r10
5582 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -88(%rsp,%rax), %r11
5583 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r11, %r14
5584 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %r12d
5585 ; X64-HAVE-BMI2-NO-SHLD-NEXT: notl %r12d
5586 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %r8, %r8
5587 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %r12, %r8, %r8
5588 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r15, %r8
5589 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -96(%rsp,%rax), %r15
5590 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r15, %rbp
5591 ; X64-HAVE-BMI2-NO-SHLD-NEXT: xorb $63, %sil
5592 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rdi, %rdi
5593 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %rdi, %rdi
5594 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rbx, %rdi
5595 ; X64-HAVE-BMI2-NO-SHLD-NEXT: leaq (%r15,%r15), %rbx
5596 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %r12, %rbx, %rbx
5597 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r13, %rbx
5598 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -80(%rsp,%rax), %r15
5599 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shrxq %rcx, %r15, %r13
5600 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq -72(%rsp,%rax), %rax
5601 ; X64-HAVE-BMI2-NO-SHLD-NEXT: sarxq %rcx, %rax, %rcx
5602 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %r9, %r9
5603 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %r9, %r9
5604 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r10, %r9
5605 ; X64-HAVE-BMI2-NO-SHLD-NEXT: leaq (%r15,%r15), %r10
5606 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %r12, %r10, %r10
5607 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r14, %r10
5608 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %r11, %r11
5609 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %r11, %r11
5610 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %rbp, %r11
5611 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq %rax, %rax
5612 ; X64-HAVE-BMI2-NO-SHLD-NEXT: shlxq %rsi, %rax, %rax
5613 ; X64-HAVE-BMI2-NO-SHLD-NEXT: orq %r13, %rax
5614 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rcx, 56(%rdx)
5615 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rax, 48(%rdx)
5616 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r11, 32(%rdx)
5617 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r10, 40(%rdx)
5618 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r9, 16(%rdx)
5619 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rbx, 24(%rdx)
5620 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %rdi, (%rdx)
5621 ; X64-HAVE-BMI2-NO-SHLD-NEXT: movq %r8, 8(%rdx)
5622 ; X64-HAVE-BMI2-NO-SHLD-NEXT: addq $8, %rsp
5623 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %rbx
5624 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r12
5625 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r13
5626 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r14
5627 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %r15
5628 ; X64-HAVE-BMI2-NO-SHLD-NEXT: popq %rbp
5629 ; X64-HAVE-BMI2-NO-SHLD-NEXT: retq
5698 ; X86-NO-BMI2-NO-SHLD-LABEL: ashr_64bytes:
5699 ; X86-NO-BMI2-NO-SHLD: # %bb.0:
5700 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebp
5701 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %ebx
5702 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %edi
5703 ; X86-NO-BMI2-NO-SHLD-NEXT: pushl %esi
5704 ; X86-NO-BMI2-NO-SHLD-NEXT: subl $204, %esp
5705 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
5706 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
5707 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5708 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
5709 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, (%esp) # 4-byte Spill
5710 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 8(%eax), %ecx
5711 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5712 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 12(%eax), %ecx
5713 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5714 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ecx
5715 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5716 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 20(%eax), %ecx
5717 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5718 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 24(%eax), %ecx
5719 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5720 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
5721 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5722 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 32(%eax), %ecx
5723 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5724 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 36(%eax), %ecx
5725 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5726 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 40(%eax), %ebx
5727 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 44(%eax), %edi
5728 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 48(%eax), %esi
5729 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 52(%eax), %edx
5730 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 56(%eax), %ecx
5731 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 60(%eax), %eax
5732 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %ebp
5733 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%ebp), %ebp
5734 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5735 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
5736 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
5737 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
5738 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
5739 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5740 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5741 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5742 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5743 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5744 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5745 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5746 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5747 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5748 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5749 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5750 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5751 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5752 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5753 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5754 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5755 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5756 ; X86-NO-BMI2-NO-SHLD-NEXT: movl (%esp), %ecx # 4-byte Reload
5757 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5758 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5759 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
5760 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl $31, %eax
5761 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5762 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5763 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5764 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5765 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5766 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5767 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5768 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5769 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5770 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5771 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5772 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5773 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5774 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5775 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5776 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
5777 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, %ebx
5778 ; X86-NO-BMI2-NO-SHLD-NEXT: andl $31, %ebx
5779 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl $3, %ebp
5780 ; X86-NO-BMI2-NO-SHLD-NEXT: andl $60, %ebp
5781 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 68(%esp,%ebp), %eax
5782 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %esi
5783 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
5784 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5785 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
5786 ; X86-NO-BMI2-NO-SHLD-NEXT: notl %ecx
5787 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5788 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 72(%esp,%ebp), %edx
5789 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edx,%edx), %edi
5790 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5791 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
5792 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
5793 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5794 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 64(%esp,%ebp), %esi
5795 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
5796 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5797 ; X86-NO-BMI2-NO-SHLD-NEXT: xorb $31, %cl
5798 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %cl, (%esp) # 1-byte Spill
5799 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %eax, %eax
5800 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
5801 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %eax
5802 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5803 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 76(%esp,%ebp), %edi
5804 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5805 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
5806 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
5807 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5808 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
5809 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 80(%esp,%ebp), %esi
5810 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %ebx
5811 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5812 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5813 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
5814 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %ebx
5815 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5816 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5817 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
5818 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5819 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %eax, %eax
5820 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
5821 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
5822 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %eax
5823 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5824 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 84(%esp,%ebp), %ebx
5825 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %edi
5826 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
5827 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
5828 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edi
5829 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 88(%esp,%ebp), %eax
5830 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5831 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %eax, %eax
5832 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5833 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5834 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
5835 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edi, %eax
5836 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5837 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
5838 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %eax
5839 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5840 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
5841 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
5842 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
5843 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %ebx
5844 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5845 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 92(%esp,%ebp), %edx
5846 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %esi
5847 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5848 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ebx
5849 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5850 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 96(%esp,%ebp), %eax
5851 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5852 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %edi
5853 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5854 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5855 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
5856 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
5857 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5858 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
5859 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5860 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
5861 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %edx, %edx
5862 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
5863 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
5864 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edx
5865 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5866 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 100(%esp,%ebp), %edi
5867 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %esi
5868 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %ecx
5869 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5870 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 104(%esp,%ebp), %edx
5871 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%edx,%edx), %eax
5872 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5873 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5874 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %eax
5875 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %eax
5876 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5877 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %eax
5878 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5879 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
5880 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5881 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %edi, %edi
5882 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
5883 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
5884 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
5885 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5886 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 108(%esp,%ebp), %ebx
5887 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, %esi
5888 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5889 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %esi
5890 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 112(%esp,%ebp), %ecx
5891 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5892 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ecx,%ecx), %edi
5893 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5894 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5895 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
5896 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %esi, %edi
5897 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5898 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5899 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %edi
5900 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
5901 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %ebx, %ebx
5902 ; X86-NO-BMI2-NO-SHLD-NEXT: movzbl (%esp), %ecx # 1-byte Folded Reload
5903 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %ebx
5904 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %ebx
5905 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 116(%esp,%ebp), %esi
5906 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, %eax
5907 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, %edx
5908 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
5909 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
5910 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 120(%esp,%ebp), %ecx
5911 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5912 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ecx,%ecx), %edi
5913 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5914 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5915 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edi
5916 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edi
5917 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, %eax
5918 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
5919 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
5920 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %edx
5921 ; X86-NO-BMI2-NO-SHLD-NEXT: addl %esi, %esi
5922 ; X86-NO-BMI2-NO-SHLD-NEXT: movb (%esp), %ch # 1-byte Reload
5923 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
5924 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %esi
5925 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %edx, %esi
5926 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %al, %cl
5927 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
5928 ; X86-NO-BMI2-NO-SHLD-NEXT: shrl %cl, %eax
5929 ; X86-NO-BMI2-NO-SHLD-NEXT: movl 124(%esp,%ebp), %ebp
5930 ; X86-NO-BMI2-NO-SHLD-NEXT: leal (%ebp,%ebp), %edx
5931 ; X86-NO-BMI2-NO-SHLD-NEXT: movb %ch, %cl
5932 ; X86-NO-BMI2-NO-SHLD-NEXT: shll %cl, %edx
5933 ; X86-NO-BMI2-NO-SHLD-NEXT: orl %eax, %edx
5934 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5935 ; X86-NO-BMI2-NO-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
5936 ; X86-NO-BMI2-NO-SHLD-NEXT: sarl %cl, %ebp
5937 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
5938 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebp, 60(%eax)
5939 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edx, 56(%eax)
5940 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %esi, 48(%eax)
5941 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %edi, 52(%eax)
5942 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ebx, 40(%eax)
5943 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5944 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 44(%eax)
5945 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5946 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 32(%eax)
5947 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5948 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 36(%eax)
5949 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5950 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 24(%eax)
5951 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5952 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 28(%eax)
5953 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5954 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 16(%eax)
5955 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5956 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%eax)
5957 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5958 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
5959 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5960 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
5961 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5962 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, (%eax)
5963 ; X86-NO-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
5964 ; X86-NO-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
5965 ; X86-NO-BMI2-NO-SHLD-NEXT: addl $204, %esp
5966 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %esi
5967 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %edi
5968 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebx
5969 ; X86-NO-BMI2-NO-SHLD-NEXT: popl %ebp
5970 ; X86-NO-BMI2-NO-SHLD-NEXT: retl
5972 ; X86-NO-BMI2-HAVE-SHLD-LABEL: ashr_64bytes:
5973 ; X86-NO-BMI2-HAVE-SHLD: # %bb.0:
5974 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebp
5975 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %ebx
5976 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %edi
5977 ; X86-NO-BMI2-HAVE-SHLD-NEXT: pushl %esi
5978 ; X86-NO-BMI2-HAVE-SHLD-NEXT: subl $188, %esp
5979 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
5980 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%eax), %ecx
5981 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5982 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 4(%eax), %ecx
5983 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5984 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 8(%eax), %ecx
5985 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5986 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 12(%eax), %ecx
5987 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5988 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 16(%eax), %ecx
5989 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5990 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 20(%eax), %ecx
5991 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5992 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 24(%eax), %ecx
5993 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5994 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 28(%eax), %ecx
5995 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5996 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 32(%eax), %ecx
5997 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
5998 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 36(%eax), %ecx
5999 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, (%esp) # 4-byte Spill
6000 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 40(%eax), %ebp
6001 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 44(%eax), %ebx
6002 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 48(%eax), %edi
6003 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%eax), %esi
6004 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%eax), %edx
6005 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%eax), %ecx
6006 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
6007 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%eax), %eax
6008 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6009 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
6010 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
6011 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[0-9]+}}(%esp)
6012 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
6013 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %edx # 4-byte Reload
6014 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6015 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6016 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6017 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6018 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6019 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6020 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6021 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6022 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6023 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6024 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6025 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6026 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6027 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6028 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6029 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6030 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6031 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6032 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
6033 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6034 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl $31, %ecx
6035 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6036 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6037 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6038 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6039 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6040 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6041 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6042 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6043 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6044 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6045 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6046 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6047 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6048 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6049 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6050 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6051 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %eax, %ecx
6052 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andl $31, %ecx
6053 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrl $3, %eax
6054 ; X86-NO-BMI2-HAVE-SHLD-NEXT: andl $60, %eax
6055 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 56(%esp,%eax), %esi
6056 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 52(%esp,%eax), %edx
6057 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6058 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %edx
6059 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6060 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 64(%esp,%eax), %ebx
6061 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 60(%esp,%eax), %edx
6062 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %edi
6063 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %edi
6064 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6065 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
6066 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6067 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 72(%esp,%eax), %edi
6068 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 68(%esp,%eax), %edx
6069 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %esi
6070 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edi, %esi
6071 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6072 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %ebx
6073 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6074 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 80(%esp,%eax), %ebx
6075 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 76(%esp,%eax), %edx
6076 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %esi
6077 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %ebx, %esi
6078 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6079 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %edi
6080 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6081 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 88(%esp,%eax), %edi
6082 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 84(%esp,%eax), %edx
6083 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %esi
6084 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edi, %esi
6085 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6086 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, %esi
6087 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %ebx
6088 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, (%esp) # 4-byte Spill
6089 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 96(%esp,%eax), %edi
6090 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 92(%esp,%eax), %edx
6091 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %ebx
6092 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edi, %ebx
6093 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6094 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
6095 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6096 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 104(%esp,%eax), %esi
6097 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 100(%esp,%eax), %edx
6098 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, %ebx
6099 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %ebx
6100 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %edi
6101 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 48(%esp,%eax), %ebp
6102 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl 108(%esp,%eax), %edx
6103 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %edx, %esi
6104 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
6105 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %esi, 56(%eax)
6106 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
6107 ; X86-NO-BMI2-HAVE-SHLD-NEXT: shrdl %cl, %esi, %ebp
6108 ; X86-NO-BMI2-HAVE-SHLD-NEXT: # kill: def $cl killed $cl killed $ecx
6109 ; X86-NO-BMI2-HAVE-SHLD-NEXT: sarl %cl, %edx
6110 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edx, 60(%eax)
6111 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %edi, 48(%eax)
6112 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebx, 52(%eax)
6113 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6114 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 40(%eax)
6115 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6116 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 44(%eax)
6117 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl (%esp), %ecx # 4-byte Reload
6118 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 32(%eax)
6119 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6120 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 36(%eax)
6121 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6122 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 24(%eax)
6123 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6124 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 28(%eax)
6125 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6126 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 16(%eax)
6127 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6128 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 20(%eax)
6129 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6130 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 8(%eax)
6131 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6132 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 12(%eax)
6133 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ebp, (%eax)
6134 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6135 ; X86-NO-BMI2-HAVE-SHLD-NEXT: movl %ecx, 4(%eax)
6136 ; X86-NO-BMI2-HAVE-SHLD-NEXT: addl $188, %esp
6137 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %esi
6138 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %edi
6139 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebx
6140 ; X86-NO-BMI2-HAVE-SHLD-NEXT: popl %ebp
6141 ; X86-NO-BMI2-HAVE-SHLD-NEXT: retl
6143 ; X86-HAVE-BMI2-NO-SHLD-LABEL: ashr_64bytes:
6144 ; X86-HAVE-BMI2-NO-SHLD: # %bb.0:
6145 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebp
6146 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %ebx
6147 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %edi
6148 ; X86-HAVE-BMI2-NO-SHLD-NEXT: pushl %esi
6149 ; X86-HAVE-BMI2-NO-SHLD-NEXT: subl $204, %esp
6150 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
6151 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ecx
6152 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6153 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 4(%eax), %ecx
6154 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6155 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 8(%eax), %ecx
6156 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6157 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 12(%eax), %ecx
6158 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6159 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 16(%eax), %ecx
6160 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6161 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 20(%eax), %ecx
6162 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6163 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 24(%eax), %ecx
6164 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6165 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 28(%eax), %ecx
6166 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6167 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 32(%eax), %ecx
6168 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6169 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 36(%eax), %ecx
6170 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6171 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 40(%eax), %ecx
6172 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6173 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 44(%eax), %ebp
6174 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 48(%eax), %edi
6175 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 52(%eax), %esi
6176 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 56(%eax), %edx
6177 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 60(%eax), %ecx
6178 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
6179 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl (%eax), %ebx
6180 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, {{[0-9]+}}(%esp)
6181 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[0-9]+}}(%esp)
6182 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[0-9]+}}(%esp)
6183 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, {{[0-9]+}}(%esp)
6184 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6185 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6186 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6187 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6188 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6189 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6190 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6191 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6192 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6193 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6194 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6195 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6196 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6197 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6198 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6199 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6200 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6201 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6202 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6203 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6204 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6205 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6206 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[0-9]+}}(%esp)
6207 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarl $31, %ecx
6208 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6209 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6210 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6211 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6212 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6213 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6214 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6215 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6216 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6217 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6218 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6219 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6220 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6221 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6222 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6223 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[0-9]+}}(%esp)
6224 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, %edx
6225 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andl $31, %edx
6226 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrl $3, %ebx
6227 ; X86-HAVE-BMI2-NO-SHLD-NEXT: andl $60, %ebx
6228 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 68(%esp,%ebx), %edi
6229 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 72(%esp,%ebx), %esi
6230 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6231 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %edi, %eax
6232 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, %ecx
6233 ; X86-HAVE-BMI2-NO-SHLD-NEXT: notl %ecx
6234 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6235 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%esi,%esi), %ebp
6236 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebp, %esi
6237 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %eax, %esi
6238 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6239 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, %eax
6240 ; X86-HAVE-BMI2-NO-SHLD-NEXT: xorb $31, %al
6241 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %edi, %edi
6242 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, %edi, %esi
6243 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, %ecx
6244 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, 64(%esp,%ebx), %edi
6245 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %edi, %esi
6246 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6247 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 80(%esp,%ebx), %eax
6248 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6249 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebp
6250 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
6251 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %eax, %ebp, %eax
6252 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 76(%esp,%ebx), %ebp
6253 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebp, %esi
6254 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
6255 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6256 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
6257 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
6258 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebp, %eax
6259 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %edi
6260 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
6261 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6262 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 88(%esp,%ebx), %eax
6263 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6264 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebp
6265 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6266 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebp, %eax
6267 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 84(%esp,%ebx), %ebp
6268 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebp, %esi
6269 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
6270 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6271 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
6272 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
6273 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %ebp, %eax
6274 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6275 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
6276 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6277 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 96(%esp,%ebx), %eax
6278 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6279 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %esi
6280 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %esi, %eax
6281 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 92(%esp,%ebx), %esi
6282 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %esi, %ebp
6283 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
6284 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6285 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
6286 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
6287 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %esi, %eax
6288 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
6289 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6290 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 104(%esp,%ebx), %eax
6291 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6292 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %ebp
6293 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebp, %eax
6294 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, %edi
6295 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 100(%esp,%ebx), %ebp
6296 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %ebp, %esi
6297 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
6298 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6299 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
6300 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %ebp, %ebp
6301 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6302 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %ebp, %eax
6303 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %eax
6304 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6305 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 112(%esp,%ebx), %eax
6306 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6307 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %esi
6308 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %edi, %esi, %eax
6309 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 108(%esp,%ebx), %esi
6310 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %esi, %ebp
6311 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
6312 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6313 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
6314 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %esi, %esi
6315 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %esi, %eax
6316 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %ebp, %eax
6317 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
6318 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 120(%esp,%ebx), %eax
6319 ; X86-HAVE-BMI2-NO-SHLD-NEXT: leal (%eax,%eax), %edi
6320 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
6321 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %esi, %edi, %ebp
6322 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 116(%esp,%ebx), %edi
6323 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %edi, %esi
6324 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %ebp
6325 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
6326 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %edi, %edi
6327 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %edi, %edi
6328 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %edi
6329 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shrxl %edx, %eax, %esi
6330 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl 124(%esp,%ebx), %eax
6331 ; X86-HAVE-BMI2-NO-SHLD-NEXT: sarxl %edx, %eax, %edx
6332 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl %eax, %eax
6333 ; X86-HAVE-BMI2-NO-SHLD-NEXT: shlxl %ecx, %eax, %ebx
6334 ; X86-HAVE-BMI2-NO-SHLD-NEXT: orl %esi, %ebx
6335 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[0-9]+}}(%esp), %eax
6336 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edx, 60(%eax)
6337 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebx, 56(%eax)
6338 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %edi, 48(%eax)
6339 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ebp, 52(%eax)
6340 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6341 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 40(%eax)
6342 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6343 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 44(%eax)
6344 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6345 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 32(%eax)
6346 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6347 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 36(%eax)
6348 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6349 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 24(%eax)
6350 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6351 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 28(%eax)
6352 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6353 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 16(%eax)
6354 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6355 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 20(%eax)
6356 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6357 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 8(%eax)
6358 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6359 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 12(%eax)
6360 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6361 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, (%eax)
6362 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
6363 ; X86-HAVE-BMI2-NO-SHLD-NEXT: movl %ecx, 4(%eax)
6364 ; X86-HAVE-BMI2-NO-SHLD-NEXT: addl $204, %esp
6365 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %esi
6366 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %edi
6367 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebx
6368 ; X86-HAVE-BMI2-NO-SHLD-NEXT: popl %ebp
6369 ; X86-HAVE-BMI2-NO-SHLD-NEXT: retl
6548 ; X64-NO-SHLD: {{.*}}
6551 ; X86-NO-SHLD: {{.*}}