Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / X86 / ucmp.ll
blobac35605be4d52ef58270423d2c326df2e07c6e1f
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 4
2 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefix=X64
3 ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s --check-prefix=X86
5 define i8 @ucmp.8.8(i8 %x, i8 %y) nounwind {
6 ; X64-LABEL: ucmp.8.8:
7 ; X64:       # %bb.0:
8 ; X64-NEXT:    cmpb %sil, %dil
9 ; X64-NEXT:    seta %al
10 ; X64-NEXT:    sbbb $0, %al
11 ; X64-NEXT:    retq
13 ; X86-LABEL: ucmp.8.8:
14 ; X86:       # %bb.0:
15 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
16 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
17 ; X86-NEXT:    seta %al
18 ; X86-NEXT:    sbbb $0, %al
19 ; X86-NEXT:    retl
20   %1 = call i8 @llvm.ucmp(i8 %x, i8 %y)
21   ret i8 %1
24 define i8 @ucmp.8.16(i16 %x, i16 %y) nounwind {
25 ; X64-LABEL: ucmp.8.16:
26 ; X64:       # %bb.0:
27 ; X64-NEXT:    cmpw %si, %di
28 ; X64-NEXT:    seta %al
29 ; X64-NEXT:    sbbb $0, %al
30 ; X64-NEXT:    retq
32 ; X86-LABEL: ucmp.8.16:
33 ; X86:       # %bb.0:
34 ; X86-NEXT:    movzwl {{[0-9]+}}(%esp), %eax
35 ; X86-NEXT:    cmpw {{[0-9]+}}(%esp), %ax
36 ; X86-NEXT:    seta %al
37 ; X86-NEXT:    sbbb $0, %al
38 ; X86-NEXT:    retl
39   %1 = call i8 @llvm.ucmp(i16 %x, i16 %y)
40   ret i8 %1
43 define i8 @ucmp.8.32(i32 %x, i32 %y) nounwind {
44 ; X64-LABEL: ucmp.8.32:
45 ; X64:       # %bb.0:
46 ; X64-NEXT:    cmpl %esi, %edi
47 ; X64-NEXT:    seta %al
48 ; X64-NEXT:    sbbb $0, %al
49 ; X64-NEXT:    retq
51 ; X86-LABEL: ucmp.8.32:
52 ; X86:       # %bb.0:
53 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
54 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
55 ; X86-NEXT:    seta %al
56 ; X86-NEXT:    sbbb $0, %al
57 ; X86-NEXT:    retl
58   %1 = call i8 @llvm.ucmp(i32 %x, i32 %y)
59   ret i8 %1
62 define i8 @ucmp.8.64(i64 %x, i64 %y) nounwind {
63 ; X64-LABEL: ucmp.8.64:
64 ; X64:       # %bb.0:
65 ; X64-NEXT:    cmpq %rsi, %rdi
66 ; X64-NEXT:    seta %al
67 ; X64-NEXT:    sbbb $0, %al
68 ; X64-NEXT:    retq
70 ; X86-LABEL: ucmp.8.64:
71 ; X86:       # %bb.0:
72 ; X86-NEXT:    pushl %edi
73 ; X86-NEXT:    pushl %esi
74 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
75 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
76 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
77 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
78 ; X86-NEXT:    cmpl %ecx, %esi
79 ; X86-NEXT:    movl %edi, %eax
80 ; X86-NEXT:    sbbl %edx, %eax
81 ; X86-NEXT:    setb %al
82 ; X86-NEXT:    cmpl %esi, %ecx
83 ; X86-NEXT:    sbbl %edi, %edx
84 ; X86-NEXT:    sbbb $0, %al
85 ; X86-NEXT:    popl %esi
86 ; X86-NEXT:    popl %edi
87 ; X86-NEXT:    retl
88   %1 = call i8 @llvm.ucmp(i64 %x, i64 %y)
89   ret i8 %1
92 define i8 @ucmp.8.128(i128 %x, i128 %y) nounwind {
93 ; X64-LABEL: ucmp.8.128:
94 ; X64:       # %bb.0:
95 ; X64-NEXT:    cmpq %rdi, %rdx
96 ; X64-NEXT:    movq %rcx, %rax
97 ; X64-NEXT:    sbbq %rsi, %rax
98 ; X64-NEXT:    setb %al
99 ; X64-NEXT:    cmpq %rdx, %rdi
100 ; X64-NEXT:    sbbq %rcx, %rsi
101 ; X64-NEXT:    sbbb $0, %al
102 ; X64-NEXT:    retq
104 ; X86-LABEL: ucmp.8.128:
105 ; X86:       # %bb.0:
106 ; X86-NEXT:    pushl %ebp
107 ; X86-NEXT:    pushl %ebx
108 ; X86-NEXT:    pushl %edi
109 ; X86-NEXT:    pushl %esi
110 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
111 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
112 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
113 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx
114 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp
115 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ebx
116 ; X86-NEXT:    movl %ebp, %eax
117 ; X86-NEXT:    sbbl %esi, %eax
118 ; X86-NEXT:    movl %ecx, %eax
119 ; X86-NEXT:    sbbl %edx, %eax
120 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
121 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
122 ; X86-NEXT:    movl %edi, %eax
123 ; X86-NEXT:    sbbl %ecx, %eax
124 ; X86-NEXT:    setb %al
125 ; X86-NEXT:    cmpl %ebx, {{[0-9]+}}(%esp)
126 ; X86-NEXT:    sbbl %ebp, %esi
127 ; X86-NEXT:    sbbl {{[0-9]+}}(%esp), %edx
128 ; X86-NEXT:    sbbl %edi, %ecx
129 ; X86-NEXT:    sbbb $0, %al
130 ; X86-NEXT:    popl %esi
131 ; X86-NEXT:    popl %edi
132 ; X86-NEXT:    popl %ebx
133 ; X86-NEXT:    popl %ebp
134 ; X86-NEXT:    retl
135   %1 = call i8 @llvm.ucmp(i128 %x, i128 %y)
136   ret i8 %1
139 define i32 @ucmp.32.32(i32 %x, i32 %y) nounwind {
140 ; X64-LABEL: ucmp.32.32:
141 ; X64:       # %bb.0:
142 ; X64-NEXT:    cmpl %esi, %edi
143 ; X64-NEXT:    seta %al
144 ; X64-NEXT:    sbbb $0, %al
145 ; X64-NEXT:    movsbl %al, %eax
146 ; X64-NEXT:    retq
148 ; X86-LABEL: ucmp.32.32:
149 ; X86:       # %bb.0:
150 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
151 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
152 ; X86-NEXT:    seta %al
153 ; X86-NEXT:    sbbb $0, %al
154 ; X86-NEXT:    movsbl %al, %eax
155 ; X86-NEXT:    retl
156   %1 = call i32 @llvm.ucmp(i32 %x, i32 %y)
157   ret i32 %1
160 define i32 @ucmp.32.64(i64 %x, i64 %y) nounwind {
161 ; X64-LABEL: ucmp.32.64:
162 ; X64:       # %bb.0:
163 ; X64-NEXT:    cmpq %rsi, %rdi
164 ; X64-NEXT:    seta %al
165 ; X64-NEXT:    sbbb $0, %al
166 ; X64-NEXT:    movsbl %al, %eax
167 ; X64-NEXT:    retq
169 ; X86-LABEL: ucmp.32.64:
170 ; X86:       # %bb.0:
171 ; X86-NEXT:    pushl %ebx
172 ; X86-NEXT:    pushl %edi
173 ; X86-NEXT:    pushl %esi
174 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
175 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
176 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
177 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
178 ; X86-NEXT:    cmpl %eax, %edx
179 ; X86-NEXT:    movl %esi, %edi
180 ; X86-NEXT:    sbbl %ecx, %edi
181 ; X86-NEXT:    setb %bl
182 ; X86-NEXT:    cmpl %edx, %eax
183 ; X86-NEXT:    sbbl %esi, %ecx
184 ; X86-NEXT:    sbbb $0, %bl
185 ; X86-NEXT:    movsbl %bl, %eax
186 ; X86-NEXT:    popl %esi
187 ; X86-NEXT:    popl %edi
188 ; X86-NEXT:    popl %ebx
189 ; X86-NEXT:    retl
190   %1 = call i32 @llvm.ucmp(i64 %x, i64 %y)
191   ret i32 %1
194 define i64 @ucmp.64.64(i64 %x, i64 %y) nounwind {
195 ; X64-LABEL: ucmp.64.64:
196 ; X64:       # %bb.0:
197 ; X64-NEXT:    cmpq %rsi, %rdi
198 ; X64-NEXT:    seta %al
199 ; X64-NEXT:    sbbb $0, %al
200 ; X64-NEXT:    movsbq %al, %rax
201 ; X64-NEXT:    retq
203 ; X86-LABEL: ucmp.64.64:
204 ; X86:       # %bb.0:
205 ; X86-NEXT:    pushl %ebx
206 ; X86-NEXT:    pushl %edi
207 ; X86-NEXT:    pushl %esi
208 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
209 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
210 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
211 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
212 ; X86-NEXT:    cmpl %eax, %edx
213 ; X86-NEXT:    movl %esi, %edi
214 ; X86-NEXT:    sbbl %ecx, %edi
215 ; X86-NEXT:    setb %bl
216 ; X86-NEXT:    cmpl %edx, %eax
217 ; X86-NEXT:    sbbl %esi, %ecx
218 ; X86-NEXT:    sbbb $0, %bl
219 ; X86-NEXT:    movsbl %bl, %eax
220 ; X86-NEXT:    movl %eax, %edx
221 ; X86-NEXT:    sarl $31, %edx
222 ; X86-NEXT:    popl %esi
223 ; X86-NEXT:    popl %edi
224 ; X86-NEXT:    popl %ebx
225 ; X86-NEXT:    retl
226   %1 = call i64 @llvm.ucmp(i64 %x, i64 %y)
227   ret i64 %1
230 define i4 @ucmp_narrow_result(i32 %x, i32 %y) nounwind {
231 ; X64-LABEL: ucmp_narrow_result:
232 ; X64:       # %bb.0:
233 ; X64-NEXT:    cmpl %esi, %edi
234 ; X64-NEXT:    seta %al
235 ; X64-NEXT:    sbbb $0, %al
236 ; X64-NEXT:    retq
238 ; X86-LABEL: ucmp_narrow_result:
239 ; X86:       # %bb.0:
240 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
241 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
242 ; X86-NEXT:    seta %al
243 ; X86-NEXT:    sbbb $0, %al
244 ; X86-NEXT:    retl
245   %1 = call i4 @llvm.ucmp(i32 %x, i32 %y)
246   ret i4 %1
249 define i8 @ucmp_narrow_op(i62 %x, i62 %y) nounwind {
250 ; X64-LABEL: ucmp_narrow_op:
251 ; X64:       # %bb.0:
252 ; X64-NEXT:    movabsq $4611686018427387903, %rax # imm = 0x3FFFFFFFFFFFFFFF
253 ; X64-NEXT:    andq %rax, %rsi
254 ; X64-NEXT:    andq %rax, %rdi
255 ; X64-NEXT:    cmpq %rsi, %rdi
256 ; X64-NEXT:    seta %al
257 ; X64-NEXT:    sbbb $0, %al
258 ; X64-NEXT:    retq
260 ; X86-LABEL: ucmp_narrow_op:
261 ; X86:       # %bb.0:
262 ; X86-NEXT:    pushl %edi
263 ; X86-NEXT:    pushl %esi
264 ; X86-NEXT:    movl $1073741823, %ecx # imm = 0x3FFFFFFF
265 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
266 ; X86-NEXT:    andl %ecx, %edx
267 ; X86-NEXT:    andl {{[0-9]+}}(%esp), %ecx
268 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
269 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
270 ; X86-NEXT:    cmpl %esi, %edi
271 ; X86-NEXT:    movl %ecx, %eax
272 ; X86-NEXT:    sbbl %edx, %eax
273 ; X86-NEXT:    setb %al
274 ; X86-NEXT:    cmpl %edi, %esi
275 ; X86-NEXT:    sbbl %ecx, %edx
276 ; X86-NEXT:    sbbb $0, %al
277 ; X86-NEXT:    popl %esi
278 ; X86-NEXT:    popl %edi
279 ; X86-NEXT:    retl
280   %1 = call i8 @llvm.ucmp(i62 %x, i62 %y)
281   ret i8 %1
284 define i141 @ucmp_wide_result(i32 %x, i32 %y) nounwind {
285 ; X64-LABEL: ucmp_wide_result:
286 ; X64:       # %bb.0:
287 ; X64-NEXT:    cmpl %esi, %edi
288 ; X64-NEXT:    seta %al
289 ; X64-NEXT:    sbbb $0, %al
290 ; X64-NEXT:    movsbq %al, %rax
291 ; X64-NEXT:    movq %rax, %rdx
292 ; X64-NEXT:    sarq $63, %rdx
293 ; X64-NEXT:    movl %edx, %ecx
294 ; X64-NEXT:    andl $8191, %ecx # imm = 0x1FFF
295 ; X64-NEXT:    retq
297 ; X86-LABEL: ucmp_wide_result:
298 ; X86:       # %bb.0:
299 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
300 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
301 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
302 ; X86-NEXT:    seta %cl
303 ; X86-NEXT:    sbbb $0, %cl
304 ; X86-NEXT:    movsbl %cl, %ecx
305 ; X86-NEXT:    movl %ecx, (%eax)
306 ; X86-NEXT:    sarl $31, %ecx
307 ; X86-NEXT:    movl %ecx, 12(%eax)
308 ; X86-NEXT:    movl %ecx, 8(%eax)
309 ; X86-NEXT:    movl %ecx, 4(%eax)
310 ; X86-NEXT:    andl $8191, %ecx # imm = 0x1FFF
311 ; X86-NEXT:    movw %cx, 16(%eax)
312 ; X86-NEXT:    retl $4
313   %1 = call i141 @llvm.ucmp(i32 %x, i32 %y)
314   ret i141 %1
317 define i8 @ucmp_wide_op(i109 %x, i109 %y) nounwind {
318 ; X64-LABEL: ucmp_wide_op:
319 ; X64:       # %bb.0:
320 ; X64-NEXT:    movabsq $35184372088831, %rax # imm = 0x1FFFFFFFFFFF
321 ; X64-NEXT:    andq %rax, %rsi
322 ; X64-NEXT:    andq %rax, %rcx
323 ; X64-NEXT:    cmpq %rdi, %rdx
324 ; X64-NEXT:    movq %rcx, %rax
325 ; X64-NEXT:    sbbq %rsi, %rax
326 ; X64-NEXT:    setb %al
327 ; X64-NEXT:    cmpq %rdx, %rdi
328 ; X64-NEXT:    sbbq %rcx, %rsi
329 ; X64-NEXT:    sbbb $0, %al
330 ; X64-NEXT:    retq
332 ; X86-LABEL: ucmp_wide_op:
333 ; X86:       # %bb.0:
334 ; X86-NEXT:    pushl %ebp
335 ; X86-NEXT:    pushl %ebx
336 ; X86-NEXT:    pushl %edi
337 ; X86-NEXT:    pushl %esi
338 ; X86-NEXT:    movl $8191, %ecx # imm = 0x1FFF
339 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
340 ; X86-NEXT:    andl %ecx, %edx
341 ; X86-NEXT:    andl {{[0-9]+}}(%esp), %ecx
342 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
343 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp
344 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
345 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ebp
346 ; X86-NEXT:    sbbl %edi, %eax
347 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
348 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx
349 ; X86-NEXT:    movl %ebx, %eax
350 ; X86-NEXT:    sbbl %esi, %eax
351 ; X86-NEXT:    movl %ecx, %eax
352 ; X86-NEXT:    sbbl %edx, %eax
353 ; X86-NEXT:    setb %al
354 ; X86-NEXT:    cmpl %ebp, {{[0-9]+}}(%esp)
355 ; X86-NEXT:    sbbl {{[0-9]+}}(%esp), %edi
356 ; X86-NEXT:    sbbl %ebx, %esi
357 ; X86-NEXT:    sbbl %ecx, %edx
358 ; X86-NEXT:    sbbb $0, %al
359 ; X86-NEXT:    popl %esi
360 ; X86-NEXT:    popl %edi
361 ; X86-NEXT:    popl %ebx
362 ; X86-NEXT:    popl %ebp
363 ; X86-NEXT:    retl
364   %1 = call i8 @llvm.ucmp(i109 %x, i109 %y)
365   ret i8 %1
368 define i41 @ucmp_uncommon_types(i7 %x, i7 %y) nounwind {
369 ; X64-LABEL: ucmp_uncommon_types:
370 ; X64:       # %bb.0:
371 ; X64-NEXT:    andb $127, %sil
372 ; X64-NEXT:    andb $127, %dil
373 ; X64-NEXT:    cmpb %sil, %dil
374 ; X64-NEXT:    seta %al
375 ; X64-NEXT:    sbbb $0, %al
376 ; X64-NEXT:    movsbq %al, %rax
377 ; X64-NEXT:    retq
379 ; X86-LABEL: ucmp_uncommon_types:
380 ; X86:       # %bb.0:
381 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
382 ; X86-NEXT:    andb $127, %al
383 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
384 ; X86-NEXT:    andb $127, %cl
385 ; X86-NEXT:    cmpb %al, %cl
386 ; X86-NEXT:    seta %al
387 ; X86-NEXT:    sbbb $0, %al
388 ; X86-NEXT:    movsbl %al, %eax
389 ; X86-NEXT:    movl %eax, %edx
390 ; X86-NEXT:    sarl $31, %edx
391 ; X86-NEXT:    retl
392   %1 = call i41 @llvm.ucmp(i7 %x, i7 %y)
393   ret i41 %1
396 define <4 x i32> @ucmp_normal_vectors(<4 x i32> %x, <4 x i32> %y) nounwind {
397 ; X64-LABEL: ucmp_normal_vectors:
398 ; X64:       # %bb.0:
399 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[3,3,3,3]
400 ; X64-NEXT:    movd %xmm2, %eax
401 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[3,3,3,3]
402 ; X64-NEXT:    movd %xmm2, %ecx
403 ; X64-NEXT:    cmpl %eax, %ecx
404 ; X64-NEXT:    seta %al
405 ; X64-NEXT:    sbbb $0, %al
406 ; X64-NEXT:    movsbl %al, %eax
407 ; X64-NEXT:    movd %eax, %xmm2
408 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[2,3,2,3]
409 ; X64-NEXT:    movd %xmm3, %eax
410 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[2,3,2,3]
411 ; X64-NEXT:    movd %xmm3, %ecx
412 ; X64-NEXT:    cmpl %eax, %ecx
413 ; X64-NEXT:    seta %al
414 ; X64-NEXT:    sbbb $0, %al
415 ; X64-NEXT:    movsbl %al, %eax
416 ; X64-NEXT:    movd %eax, %xmm3
417 ; X64-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
418 ; X64-NEXT:    movd %xmm1, %eax
419 ; X64-NEXT:    movd %xmm0, %ecx
420 ; X64-NEXT:    cmpl %eax, %ecx
421 ; X64-NEXT:    seta %al
422 ; X64-NEXT:    sbbb $0, %al
423 ; X64-NEXT:    movsbl %al, %eax
424 ; X64-NEXT:    movd %eax, %xmm2
425 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
426 ; X64-NEXT:    movd %xmm1, %eax
427 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
428 ; X64-NEXT:    movd %xmm0, %ecx
429 ; X64-NEXT:    cmpl %eax, %ecx
430 ; X64-NEXT:    seta %al
431 ; X64-NEXT:    sbbb $0, %al
432 ; X64-NEXT:    movsbl %al, %eax
433 ; X64-NEXT:    movd %eax, %xmm0
434 ; X64-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
435 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm3[0]
436 ; X64-NEXT:    movdqa %xmm2, %xmm0
437 ; X64-NEXT:    retq
439 ; X86-LABEL: ucmp_normal_vectors:
440 ; X86:       # %bb.0:
441 ; X86-NEXT:    pushl %ebx
442 ; X86-NEXT:    pushl %edi
443 ; X86-NEXT:    pushl %esi
444 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
445 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
446 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
447 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
448 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
449 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edx
450 ; X86-NEXT:    seta %dl
451 ; X86-NEXT:    sbbb $0, %dl
452 ; X86-NEXT:    movsbl %dl, %edx
453 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edi
454 ; X86-NEXT:    seta %bl
455 ; X86-NEXT:    sbbb $0, %bl
456 ; X86-NEXT:    movsbl %bl, %edi
457 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %esi
458 ; X86-NEXT:    seta %bl
459 ; X86-NEXT:    sbbb $0, %bl
460 ; X86-NEXT:    movsbl %bl, %esi
461 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
462 ; X86-NEXT:    seta %cl
463 ; X86-NEXT:    sbbb $0, %cl
464 ; X86-NEXT:    movsbl %cl, %ecx
465 ; X86-NEXT:    movl %ecx, 12(%eax)
466 ; X86-NEXT:    movl %esi, 8(%eax)
467 ; X86-NEXT:    movl %edi, 4(%eax)
468 ; X86-NEXT:    movl %edx, (%eax)
469 ; X86-NEXT:    popl %esi
470 ; X86-NEXT:    popl %edi
471 ; X86-NEXT:    popl %ebx
472 ; X86-NEXT:    retl $4
473   %1 = call <4 x i32> @llvm.ucmp(<4 x i32> %x, <4 x i32> %y)
474   ret <4 x i32> %1
477 define <4 x i8> @ucmp_narrow_vec_result(<4 x i32> %x, <4 x i32> %y) nounwind {
478 ; X64-LABEL: ucmp_narrow_vec_result:
479 ; X64:       # %bb.0:
480 ; X64-NEXT:    movd %xmm1, %eax
481 ; X64-NEXT:    movd %xmm0, %ecx
482 ; X64-NEXT:    cmpl %eax, %ecx
483 ; X64-NEXT:    seta %al
484 ; X64-NEXT:    sbbb $0, %al
485 ; X64-NEXT:    movzbl %al, %eax
486 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[1,1,1,1]
487 ; X64-NEXT:    movd %xmm2, %ecx
488 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[1,1,1,1]
489 ; X64-NEXT:    movd %xmm2, %edx
490 ; X64-NEXT:    cmpl %ecx, %edx
491 ; X64-NEXT:    seta %cl
492 ; X64-NEXT:    sbbb $0, %cl
493 ; X64-NEXT:    movzbl %cl, %ecx
494 ; X64-NEXT:    shll $8, %ecx
495 ; X64-NEXT:    orl %eax, %ecx
496 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[2,3,2,3]
497 ; X64-NEXT:    movd %xmm2, %eax
498 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm0[2,3,2,3]
499 ; X64-NEXT:    movd %xmm2, %edx
500 ; X64-NEXT:    cmpl %eax, %edx
501 ; X64-NEXT:    seta %al
502 ; X64-NEXT:    sbbb $0, %al
503 ; X64-NEXT:    movzbl %al, %eax
504 ; X64-NEXT:    shll $16, %eax
505 ; X64-NEXT:    orl %ecx, %eax
506 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[3,3,3,3]
507 ; X64-NEXT:    movd %xmm1, %ecx
508 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[3,3,3,3]
509 ; X64-NEXT:    movd %xmm0, %edx
510 ; X64-NEXT:    cmpl %ecx, %edx
511 ; X64-NEXT:    seta %cl
512 ; X64-NEXT:    sbbb $0, %cl
513 ; X64-NEXT:    movzbl %cl, %ecx
514 ; X64-NEXT:    shll $24, %ecx
515 ; X64-NEXT:    orl %eax, %ecx
516 ; X64-NEXT:    movd %ecx, %xmm0
517 ; X64-NEXT:    retq
519 ; X86-LABEL: ucmp_narrow_vec_result:
520 ; X86:       # %bb.0:
521 ; X86-NEXT:    pushl %ebx
522 ; X86-NEXT:    pushl %edi
523 ; X86-NEXT:    pushl %esi
524 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
525 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
526 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
527 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
528 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
529 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
530 ; X86-NEXT:    seta %cl
531 ; X86-NEXT:    sbbb $0, %cl
532 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edi
533 ; X86-NEXT:    seta %ch
534 ; X86-NEXT:    sbbb $0, %ch
535 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %esi
536 ; X86-NEXT:    seta %bl
537 ; X86-NEXT:    sbbb $0, %bl
538 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edx
539 ; X86-NEXT:    seta %dl
540 ; X86-NEXT:    sbbb $0, %dl
541 ; X86-NEXT:    movb %dl, 3(%eax)
542 ; X86-NEXT:    movb %bl, 2(%eax)
543 ; X86-NEXT:    movb %ch, 1(%eax)
544 ; X86-NEXT:    movb %cl, (%eax)
545 ; X86-NEXT:    popl %esi
546 ; X86-NEXT:    popl %edi
547 ; X86-NEXT:    popl %ebx
548 ; X86-NEXT:    retl $4
549   %1 = call <4 x i8> @llvm.ucmp(<4 x i32> %x, <4 x i32> %y)
550   ret <4 x i8> %1
553 define <4 x i32> @ucmp_narrow_vec_op(<4 x i8> %x, <4 x i8> %y) nounwind {
554 ; X64-LABEL: ucmp_narrow_vec_op:
555 ; X64:       # %bb.0:
556 ; X64-NEXT:    pxor %xmm2, %xmm2
557 ; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
558 ; X64-NEXT:    pextrw $0, %xmm1, %eax
559 ; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
560 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[3,3,3,3]
561 ; X64-NEXT:    movd %xmm3, %ecx
562 ; X64-NEXT:    punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3],xmm0[4],xmm2[4],xmm0[5],xmm2[5],xmm0[6],xmm2[6],xmm0[7],xmm2[7]
563 ; X64-NEXT:    pextrw $0, %xmm0, %edx
564 ; X64-NEXT:    movdqa %xmm0, %xmm3
565 ; X64-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3]
566 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[3,3,3,3]
567 ; X64-NEXT:    movd %xmm0, %esi
568 ; X64-NEXT:    cmpl %ecx, %esi
569 ; X64-NEXT:    seta %cl
570 ; X64-NEXT:    sbbb $0, %cl
571 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm1[2,3,2,3]
572 ; X64-NEXT:    movd %xmm0, %esi
573 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm3[2,3,2,3]
574 ; X64-NEXT:    movd %xmm0, %edi
575 ; X64-NEXT:    cmpl %esi, %edi
576 ; X64-NEXT:    movsbl %cl, %ecx
577 ; X64-NEXT:    movd %ecx, %xmm0
578 ; X64-NEXT:    seta %cl
579 ; X64-NEXT:    sbbb $0, %cl
580 ; X64-NEXT:    movsbl %cl, %ecx
581 ; X64-NEXT:    movd %ecx, %xmm2
582 ; X64-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm0[0],xmm2[1],xmm0[1]
583 ; X64-NEXT:    cmpl %eax, %edx
584 ; X64-NEXT:    seta %al
585 ; X64-NEXT:    sbbb $0, %al
586 ; X64-NEXT:    movsbl %al, %eax
587 ; X64-NEXT:    movd %eax, %xmm0
588 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
589 ; X64-NEXT:    movd %xmm1, %eax
590 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm3[1,1,1,1]
591 ; X64-NEXT:    movd %xmm1, %ecx
592 ; X64-NEXT:    cmpl %eax, %ecx
593 ; X64-NEXT:    seta %al
594 ; X64-NEXT:    sbbb $0, %al
595 ; X64-NEXT:    movsbl %al, %eax
596 ; X64-NEXT:    movd %eax, %xmm1
597 ; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
598 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm2[0]
599 ; X64-NEXT:    retq
601 ; X86-LABEL: ucmp_narrow_vec_op:
602 ; X86:       # %bb.0:
603 ; X86-NEXT:    pushl %ebx
604 ; X86-NEXT:    pushl %edi
605 ; X86-NEXT:    pushl %esi
606 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
607 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ecx
608 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %ch
609 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ebx
610 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
611 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %dl
612 ; X86-NEXT:    seta %dl
613 ; X86-NEXT:    sbbb $0, %dl
614 ; X86-NEXT:    movsbl %dl, %edx
615 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %bl
616 ; X86-NEXT:    seta %bl
617 ; X86-NEXT:    sbbb $0, %bl
618 ; X86-NEXT:    movsbl %bl, %esi
619 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %ch
620 ; X86-NEXT:    seta %ch
621 ; X86-NEXT:    sbbb $0, %ch
622 ; X86-NEXT:    movsbl %ch, %edi
623 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %cl
624 ; X86-NEXT:    seta %cl
625 ; X86-NEXT:    sbbb $0, %cl
626 ; X86-NEXT:    movsbl %cl, %ecx
627 ; X86-NEXT:    movl %ecx, 12(%eax)
628 ; X86-NEXT:    movl %edi, 8(%eax)
629 ; X86-NEXT:    movl %esi, 4(%eax)
630 ; X86-NEXT:    movl %edx, (%eax)
631 ; X86-NEXT:    popl %esi
632 ; X86-NEXT:    popl %edi
633 ; X86-NEXT:    popl %ebx
634 ; X86-NEXT:    retl $4
635   %1 = call <4 x i32> @llvm.ucmp(<4 x i8> %x, <4 x i8> %y)
636   ret <4 x i32> %1
639 define <16 x i32> @ucmp_wide_vec_result(<16 x i8> %x, <16 x i8> %y) nounwind {
640 ; X64-LABEL: ucmp_wide_vec_result:
641 ; X64:       # %bb.0:
642 ; X64-NEXT:    pushq %rbp
643 ; X64-NEXT:    pushq %r15
644 ; X64-NEXT:    pushq %r14
645 ; X64-NEXT:    pushq %r13
646 ; X64-NEXT:    pushq %r12
647 ; X64-NEXT:    pushq %rbx
648 ; X64-NEXT:    pxor %xmm2, %xmm2
649 ; X64-NEXT:    movdqa %xmm1, %xmm4
650 ; X64-NEXT:    punpcklbw {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1],xmm4[2],xmm2[2],xmm4[3],xmm2[3],xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
651 ; X64-NEXT:    pextrw $0, %xmm4, %edx
652 ; X64-NEXT:    movdqa %xmm4, %xmm3
653 ; X64-NEXT:    pextrw $4, %xmm4, %r9d
654 ; X64-NEXT:    movdqa %xmm4, %xmm5
655 ; X64-NEXT:    punpcklwd {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1],xmm5[2],xmm2[2],xmm5[3],xmm2[3]
656 ; X64-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[3,3,3,3]
657 ; X64-NEXT:    movd %xmm4, %eax
658 ; X64-NEXT:    movdqa %xmm0, %xmm6
659 ; X64-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3],xmm6[4],xmm2[4],xmm6[5],xmm2[5],xmm6[6],xmm2[6],xmm6[7],xmm2[7]
660 ; X64-NEXT:    pextrw $0, %xmm6, %esi
661 ; X64-NEXT:    movdqa %xmm6, %xmm4
662 ; X64-NEXT:    pextrw $4, %xmm6, %r10d
663 ; X64-NEXT:    punpcklwd {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3]
664 ; X64-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[3,3,3,3]
665 ; X64-NEXT:    movd %xmm7, %ecx
666 ; X64-NEXT:    cmpl %eax, %ecx
667 ; X64-NEXT:    seta %al
668 ; X64-NEXT:    sbbb $0, %al
669 ; X64-NEXT:    movsbl %al, %eax
670 ; X64-NEXT:    movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
671 ; X64-NEXT:    pshufd {{.*#+}} xmm7 = xmm5[2,3,2,3]
672 ; X64-NEXT:    movd %xmm7, %ecx
673 ; X64-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[2,3,2,3]
674 ; X64-NEXT:    movd %xmm7, %edi
675 ; X64-NEXT:    cmpl %ecx, %edi
676 ; X64-NEXT:    seta %cl
677 ; X64-NEXT:    sbbb $0, %cl
678 ; X64-NEXT:    movsbl %cl, %eax
679 ; X64-NEXT:    movl %eax, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
680 ; X64-NEXT:    cmpl %edx, %esi
681 ; X64-NEXT:    seta %dl
682 ; X64-NEXT:    sbbb $0, %dl
683 ; X64-NEXT:    movsbl %dl, %edx
684 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,1,1]
685 ; X64-NEXT:    movd %xmm5, %esi
686 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm6[1,1,1,1]
687 ; X64-NEXT:    movd %xmm5, %edi
688 ; X64-NEXT:    cmpl %esi, %edi
689 ; X64-NEXT:    seta %sil
690 ; X64-NEXT:    sbbb $0, %sil
691 ; X64-NEXT:    movsbl %sil, %esi
692 ; X64-NEXT:    punpckhwd {{.*#+}} xmm3 = xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
693 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm3[3,3,3,3]
694 ; X64-NEXT:    movd %xmm5, %edi
695 ; X64-NEXT:    punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
696 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[3,3,3,3]
697 ; X64-NEXT:    movd %xmm5, %r8d
698 ; X64-NEXT:    cmpl %edi, %r8d
699 ; X64-NEXT:    seta %dil
700 ; X64-NEXT:    sbbb $0, %dil
701 ; X64-NEXT:    movsbl %dil, %edi
702 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm3[2,3,2,3]
703 ; X64-NEXT:    movd %xmm5, %r8d
704 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]
705 ; X64-NEXT:    movd %xmm5, %r11d
706 ; X64-NEXT:    cmpl %r8d, %r11d
707 ; X64-NEXT:    seta %r8b
708 ; X64-NEXT:    sbbb $0, %r8b
709 ; X64-NEXT:    movsbl %r8b, %r8d
710 ; X64-NEXT:    cmpl %r9d, %r10d
711 ; X64-NEXT:    seta %r9b
712 ; X64-NEXT:    sbbb $0, %r9b
713 ; X64-NEXT:    movsbl %r9b, %r9d
714 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,1,1]
715 ; X64-NEXT:    movd %xmm3, %r10d
716 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm4[1,1,1,1]
717 ; X64-NEXT:    movd %xmm3, %r11d
718 ; X64-NEXT:    cmpl %r10d, %r11d
719 ; X64-NEXT:    seta %r10b
720 ; X64-NEXT:    sbbb $0, %r10b
721 ; X64-NEXT:    movsbl %r10b, %r10d
722 ; X64-NEXT:    punpckhbw {{.*#+}} xmm1 = xmm1[8],xmm2[8],xmm1[9],xmm2[9],xmm1[10],xmm2[10],xmm1[11],xmm2[11],xmm1[12],xmm2[12],xmm1[13],xmm2[13],xmm1[14],xmm2[14],xmm1[15],xmm2[15]
723 ; X64-NEXT:    pextrw $0, %xmm1, %ebx
724 ; X64-NEXT:    movdqa %xmm1, %xmm4
725 ; X64-NEXT:    pextrw $4, %xmm1, %r11d
726 ; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
727 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[3,3,3,3]
728 ; X64-NEXT:    movd %xmm3, %r14d
729 ; X64-NEXT:    punpckhbw {{.*#+}} xmm0 = xmm0[8],xmm2[8],xmm0[9],xmm2[9],xmm0[10],xmm2[10],xmm0[11],xmm2[11],xmm0[12],xmm2[12],xmm0[13],xmm2[13],xmm0[14],xmm2[14],xmm0[15],xmm2[15]
730 ; X64-NEXT:    pextrw $0, %xmm0, %r15d
731 ; X64-NEXT:    movdqa %xmm0, %xmm5
732 ; X64-NEXT:    pextrw $4, %xmm0, %ebp
733 ; X64-NEXT:    punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xmm2[3]
734 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[3,3,3,3]
735 ; X64-NEXT:    movd %xmm3, %r12d
736 ; X64-NEXT:    cmpl %r14d, %r12d
737 ; X64-NEXT:    seta %r14b
738 ; X64-NEXT:    sbbb $0, %r14b
739 ; X64-NEXT:    movsbl %r14b, %r14d
740 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm1[2,3,2,3]
741 ; X64-NEXT:    movd %xmm3, %r12d
742 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm0[2,3,2,3]
743 ; X64-NEXT:    movd %xmm3, %r13d
744 ; X64-NEXT:    cmpl %r12d, %r13d
745 ; X64-NEXT:    seta %r12b
746 ; X64-NEXT:    sbbb $0, %r12b
747 ; X64-NEXT:    cmpl %ebx, %r15d
748 ; X64-NEXT:    seta %bl
749 ; X64-NEXT:    sbbb $0, %bl
750 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
751 ; X64-NEXT:    movd %xmm1, %r15d
752 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
753 ; X64-NEXT:    movd %xmm0, %r13d
754 ; X64-NEXT:    cmpl %r15d, %r13d
755 ; X64-NEXT:    seta %r15b
756 ; X64-NEXT:    sbbb $0, %r15b
757 ; X64-NEXT:    punpckhwd {{.*#+}} xmm4 = xmm4[4],xmm2[4],xmm4[5],xmm2[5],xmm4[6],xmm2[6],xmm4[7],xmm2[7]
758 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[3,3,3,3]
759 ; X64-NEXT:    movd %xmm0, %r13d
760 ; X64-NEXT:    punpckhwd {{.*#+}} xmm5 = xmm5[4],xmm2[4],xmm5[5],xmm2[5],xmm5[6],xmm2[6],xmm5[7],xmm2[7]
761 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[3,3,3,3]
762 ; X64-NEXT:    movd %xmm0, %eax
763 ; X64-NEXT:    cmpl %r13d, %eax
764 ; X64-NEXT:    seta %al
765 ; X64-NEXT:    sbbb $0, %al
766 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]
767 ; X64-NEXT:    movd %xmm0, %r13d
768 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm5[2,3,2,3]
769 ; X64-NEXT:    movd %xmm0, %ecx
770 ; X64-NEXT:    cmpl %r13d, %ecx
771 ; X64-NEXT:    movsbl %r12b, %ecx
772 ; X64-NEXT:    movsbl %bl, %ebx
773 ; X64-NEXT:    movsbl %r15b, %r15d
774 ; X64-NEXT:    movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm2 # 4-byte Folded Reload
775 ; X64-NEXT:    # xmm2 = mem[0],zero,zero,zero
776 ; X64-NEXT:    movd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 4-byte Folded Reload
777 ; X64-NEXT:    # xmm3 = mem[0],zero,zero,zero
778 ; X64-NEXT:    movd %edx, %xmm0
779 ; X64-NEXT:    movd %esi, %xmm6
780 ; X64-NEXT:    movd %edi, %xmm7
781 ; X64-NEXT:    movd %r8d, %xmm8
782 ; X64-NEXT:    movd %r9d, %xmm1
783 ; X64-NEXT:    movd %r10d, %xmm9
784 ; X64-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1]
785 ; X64-NEXT:    movd %r14d, %xmm10
786 ; X64-NEXT:    punpckldq {{.*#+}} xmm0 = xmm0[0],xmm6[0],xmm0[1],xmm6[1]
787 ; X64-NEXT:    movd %ecx, %xmm6
788 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm3[0]
789 ; X64-NEXT:    movd %ebx, %xmm2
790 ; X64-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]
791 ; X64-NEXT:    movd %r15d, %xmm3
792 ; X64-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm9[0],xmm1[1],xmm9[1]
793 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm8[0]
794 ; X64-NEXT:    movsbl %al, %eax
795 ; X64-NEXT:    movd %eax, %xmm7
796 ; X64-NEXT:    seta %al
797 ; X64-NEXT:    sbbb $0, %al
798 ; X64-NEXT:    movsbl %al, %eax
799 ; X64-NEXT:    movd %eax, %xmm8
800 ; X64-NEXT:    punpckldq {{.*#+}} xmm6 = xmm6[0],xmm10[0],xmm6[1],xmm10[1]
801 ; X64-NEXT:    punpckldq {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1]
802 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm2 = xmm2[0],xmm6[0]
803 ; X64-NEXT:    punpckldq {{.*#+}} xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1]
804 ; X64-NEXT:    cmpl %r11d, %ebp
805 ; X64-NEXT:    seta %al
806 ; X64-NEXT:    sbbb $0, %al
807 ; X64-NEXT:    movsbl %al, %eax
808 ; X64-NEXT:    movd %eax, %xmm3
809 ; X64-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,1,1,1]
810 ; X64-NEXT:    movd %xmm4, %eax
811 ; X64-NEXT:    pshufd {{.*#+}} xmm4 = xmm5[1,1,1,1]
812 ; X64-NEXT:    movd %xmm4, %ecx
813 ; X64-NEXT:    cmpl %eax, %ecx
814 ; X64-NEXT:    seta %al
815 ; X64-NEXT:    sbbb $0, %al
816 ; X64-NEXT:    movsbl %al, %eax
817 ; X64-NEXT:    movd %eax, %xmm4
818 ; X64-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]
819 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm8[0]
820 ; X64-NEXT:    popq %rbx
821 ; X64-NEXT:    popq %r12
822 ; X64-NEXT:    popq %r13
823 ; X64-NEXT:    popq %r14
824 ; X64-NEXT:    popq %r15
825 ; X64-NEXT:    popq %rbp
826 ; X64-NEXT:    retq
828 ; X86-LABEL: ucmp_wide_vec_result:
829 ; X86:       # %bb.0:
830 ; X86-NEXT:    pushl %ebp
831 ; X86-NEXT:    pushl %ebx
832 ; X86-NEXT:    pushl %edi
833 ; X86-NEXT:    pushl %esi
834 ; X86-NEXT:    subl $12, %esp
835 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %edx
836 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %ah
837 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %ch
838 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %dh
839 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %ebx
840 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %bh
841 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %al
842 ; X86-NEXT:    movb {{[0-9]+}}(%esp), %cl
843 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %cl
844 ; X86-NEXT:    seta %cl
845 ; X86-NEXT:    sbbb $0, %cl
846 ; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
847 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
848 ; X86-NEXT:    seta %al
849 ; X86-NEXT:    sbbb $0, %al
850 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
851 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %bh
852 ; X86-NEXT:    seta %al
853 ; X86-NEXT:    sbbb $0, %al
854 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
855 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %bl
856 ; X86-NEXT:    seta %al
857 ; X86-NEXT:    sbbb $0, %al
858 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
859 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %dh
860 ; X86-NEXT:    seta %al
861 ; X86-NEXT:    sbbb $0, %al
862 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
863 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %ch
864 ; X86-NEXT:    seta %al
865 ; X86-NEXT:    sbbb $0, %al
866 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
867 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %ah
868 ; X86-NEXT:    seta %al
869 ; X86-NEXT:    sbbb $0, %al
870 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
871 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %dl
872 ; X86-NEXT:    seta %bl
873 ; X86-NEXT:    sbbb $0, %bl
874 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
875 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
876 ; X86-NEXT:    seta %al
877 ; X86-NEXT:    sbbb $0, %al
878 ; X86-NEXT:    movb %al, (%esp) # 1-byte Spill
879 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
880 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
881 ; X86-NEXT:    seta %bh
882 ; X86-NEXT:    sbbb $0, %bh
883 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
884 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
885 ; X86-NEXT:    seta %al
886 ; X86-NEXT:    sbbb $0, %al
887 ; X86-NEXT:    movsbl %al, %eax
888 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
889 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
890 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
891 ; X86-NEXT:    seta %al
892 ; X86-NEXT:    sbbb $0, %al
893 ; X86-NEXT:    movsbl %al, %edi
894 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
895 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
896 ; X86-NEXT:    seta %al
897 ; X86-NEXT:    sbbb $0, %al
898 ; X86-NEXT:    movsbl %al, %ebp
899 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
900 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
901 ; X86-NEXT:    seta %al
902 ; X86-NEXT:    sbbb $0, %al
903 ; X86-NEXT:    movsbl %al, %esi
904 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
905 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
906 ; X86-NEXT:    seta %al
907 ; X86-NEXT:    sbbb $0, %al
908 ; X86-NEXT:    movsbl %al, %edx
909 ; X86-NEXT:    movzbl {{[0-9]+}}(%esp), %eax
910 ; X86-NEXT:    cmpb {{[0-9]+}}(%esp), %al
911 ; X86-NEXT:    seta %al
912 ; X86-NEXT:    sbbb $0, %al
913 ; X86-NEXT:    movsbl %al, %ecx
914 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
915 ; X86-NEXT:    movl %ecx, 60(%eax)
916 ; X86-NEXT:    movl %edx, 56(%eax)
917 ; X86-NEXT:    movl %esi, 52(%eax)
918 ; X86-NEXT:    movl %ebp, 48(%eax)
919 ; X86-NEXT:    movl %edi, 44(%eax)
920 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
921 ; X86-NEXT:    movl %ecx, 40(%eax)
922 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
923 ; X86-NEXT:    movsbl %bh, %ecx
924 ; X86-NEXT:    movl %ecx, 36(%eax)
925 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
926 ; X86-NEXT:    movsbl (%esp), %edx # 1-byte Folded Reload
927 ; X86-NEXT:    movl %edx, 32(%eax)
928 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 1-byte Folded Reload
929 ; X86-NEXT:    movsbl %bl, %edi
930 ; X86-NEXT:    movl %edi, 28(%eax)
931 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 1-byte Folded Reload
932 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 1-byte Folded Reload
933 ; X86-NEXT:    movl %ebx, 24(%eax)
934 ; X86-NEXT:    movl %edi, 20(%eax)
935 ; X86-NEXT:    movl %edx, 16(%eax)
936 ; X86-NEXT:    movl %ecx, 12(%eax)
937 ; X86-NEXT:    movl %esi, 8(%eax)
938 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
939 ; X86-NEXT:    movl %ecx, 4(%eax)
940 ; X86-NEXT:    movsbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
941 ; X86-NEXT:    movl %ecx, (%eax)
942 ; X86-NEXT:    addl $12, %esp
943 ; X86-NEXT:    popl %esi
944 ; X86-NEXT:    popl %edi
945 ; X86-NEXT:    popl %ebx
946 ; X86-NEXT:    popl %ebp
947 ; X86-NEXT:    retl $4
948   %1 = call <16 x i32> @llvm.ucmp(<16 x i8> %x, <16 x i8> %y)
949   ret <16 x i32> %1
952 define <16 x i8> @ucmp_wide_vec_op(<16 x i32> %x, <16 x i32> %y) nounwind {
953 ; X64-LABEL: ucmp_wide_vec_op:
954 ; X64:       # %bb.0:
955 ; X64-NEXT:    pshufd {{.*#+}} xmm8 = xmm7[3,3,3,3]
956 ; X64-NEXT:    movd %xmm8, %eax
957 ; X64-NEXT:    pshufd {{.*#+}} xmm8 = xmm3[3,3,3,3]
958 ; X64-NEXT:    movd %xmm8, %ecx
959 ; X64-NEXT:    cmpl %eax, %ecx
960 ; X64-NEXT:    seta %al
961 ; X64-NEXT:    sbbb $0, %al
962 ; X64-NEXT:    movzbl %al, %eax
963 ; X64-NEXT:    movd %eax, %xmm8
964 ; X64-NEXT:    pshufd {{.*#+}} xmm9 = xmm7[2,3,2,3]
965 ; X64-NEXT:    movd %xmm9, %eax
966 ; X64-NEXT:    pshufd {{.*#+}} xmm9 = xmm3[2,3,2,3]
967 ; X64-NEXT:    movd %xmm9, %ecx
968 ; X64-NEXT:    cmpl %eax, %ecx
969 ; X64-NEXT:    seta %al
970 ; X64-NEXT:    sbbb $0, %al
971 ; X64-NEXT:    movzbl %al, %eax
972 ; X64-NEXT:    movd %eax, %xmm9
973 ; X64-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
974 ; X64-NEXT:    movd %xmm7, %eax
975 ; X64-NEXT:    movd %xmm3, %ecx
976 ; X64-NEXT:    cmpl %eax, %ecx
977 ; X64-NEXT:    seta %al
978 ; X64-NEXT:    sbbb $0, %al
979 ; X64-NEXT:    movzbl %al, %eax
980 ; X64-NEXT:    movd %eax, %xmm8
981 ; X64-NEXT:    pshufd {{.*#+}} xmm7 = xmm7[1,1,1,1]
982 ; X64-NEXT:    movd %xmm7, %eax
983 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm3[1,1,1,1]
984 ; X64-NEXT:    movd %xmm3, %ecx
985 ; X64-NEXT:    cmpl %eax, %ecx
986 ; X64-NEXT:    seta %al
987 ; X64-NEXT:    sbbb $0, %al
988 ; X64-NEXT:    movzbl %al, %eax
989 ; X64-NEXT:    movd %eax, %xmm3
990 ; X64-NEXT:    punpcklbw {{.*#+}} xmm8 = xmm8[0],xmm3[0],xmm8[1],xmm3[1],xmm8[2],xmm3[2],xmm8[3],xmm3[3],xmm8[4],xmm3[4],xmm8[5],xmm3[5],xmm8[6],xmm3[6],xmm8[7],xmm3[7]
991 ; X64-NEXT:    punpcklwd {{.*#+}} xmm8 = xmm8[0],xmm9[0],xmm8[1],xmm9[1],xmm8[2],xmm9[2],xmm8[3],xmm9[3]
992 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm6[3,3,3,3]
993 ; X64-NEXT:    movd %xmm3, %eax
994 ; X64-NEXT:    pshufd {{.*#+}} xmm3 = xmm2[3,3,3,3]
995 ; X64-NEXT:    movd %xmm3, %ecx
996 ; X64-NEXT:    cmpl %eax, %ecx
997 ; X64-NEXT:    seta %al
998 ; X64-NEXT:    sbbb $0, %al
999 ; X64-NEXT:    movzbl %al, %eax
1000 ; X64-NEXT:    movd %eax, %xmm3
1001 ; X64-NEXT:    pshufd {{.*#+}} xmm7 = xmm6[2,3,2,3]
1002 ; X64-NEXT:    movd %xmm7, %eax
1003 ; X64-NEXT:    pshufd {{.*#+}} xmm7 = xmm2[2,3,2,3]
1004 ; X64-NEXT:    movd %xmm7, %ecx
1005 ; X64-NEXT:    cmpl %eax, %ecx
1006 ; X64-NEXT:    seta %al
1007 ; X64-NEXT:    sbbb $0, %al
1008 ; X64-NEXT:    movzbl %al, %eax
1009 ; X64-NEXT:    movd %eax, %xmm7
1010 ; X64-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7]
1011 ; X64-NEXT:    movd %xmm6, %eax
1012 ; X64-NEXT:    movd %xmm2, %ecx
1013 ; X64-NEXT:    cmpl %eax, %ecx
1014 ; X64-NEXT:    seta %al
1015 ; X64-NEXT:    sbbb $0, %al
1016 ; X64-NEXT:    movzbl %al, %eax
1017 ; X64-NEXT:    movd %eax, %xmm3
1018 ; X64-NEXT:    pshufd {{.*#+}} xmm6 = xmm6[1,1,1,1]
1019 ; X64-NEXT:    movd %xmm6, %eax
1020 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm2[1,1,1,1]
1021 ; X64-NEXT:    movd %xmm2, %ecx
1022 ; X64-NEXT:    cmpl %eax, %ecx
1023 ; X64-NEXT:    seta %al
1024 ; X64-NEXT:    sbbb $0, %al
1025 ; X64-NEXT:    movzbl %al, %eax
1026 ; X64-NEXT:    movd %eax, %xmm2
1027 ; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
1028 ; X64-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm7[0],xmm3[1],xmm7[1],xmm3[2],xmm7[2],xmm3[3],xmm7[3]
1029 ; X64-NEXT:    punpckldq {{.*#+}} xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1]
1030 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm5[3,3,3,3]
1031 ; X64-NEXT:    movd %xmm2, %eax
1032 ; X64-NEXT:    pshufd {{.*#+}} xmm2 = xmm1[3,3,3,3]
1033 ; X64-NEXT:    movd %xmm2, %ecx
1034 ; X64-NEXT:    cmpl %eax, %ecx
1035 ; X64-NEXT:    seta %al
1036 ; X64-NEXT:    sbbb $0, %al
1037 ; X64-NEXT:    movzbl %al, %eax
1038 ; X64-NEXT:    movd %eax, %xmm2
1039 ; X64-NEXT:    pshufd {{.*#+}} xmm6 = xmm5[2,3,2,3]
1040 ; X64-NEXT:    movd %xmm6, %eax
1041 ; X64-NEXT:    pshufd {{.*#+}} xmm6 = xmm1[2,3,2,3]
1042 ; X64-NEXT:    movd %xmm6, %ecx
1043 ; X64-NEXT:    cmpl %eax, %ecx
1044 ; X64-NEXT:    seta %al
1045 ; X64-NEXT:    sbbb $0, %al
1046 ; X64-NEXT:    movzbl %al, %eax
1047 ; X64-NEXT:    movd %eax, %xmm6
1048 ; X64-NEXT:    punpcklbw {{.*#+}} xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3],xmm6[4],xmm2[4],xmm6[5],xmm2[5],xmm6[6],xmm2[6],xmm6[7],xmm2[7]
1049 ; X64-NEXT:    movd %xmm5, %eax
1050 ; X64-NEXT:    movd %xmm1, %ecx
1051 ; X64-NEXT:    cmpl %eax, %ecx
1052 ; X64-NEXT:    seta %al
1053 ; X64-NEXT:    sbbb $0, %al
1054 ; X64-NEXT:    movzbl %al, %eax
1055 ; X64-NEXT:    movd %eax, %xmm2
1056 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm5[1,1,1,1]
1057 ; X64-NEXT:    movd %xmm5, %eax
1058 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm1[1,1,1,1]
1059 ; X64-NEXT:    movd %xmm1, %ecx
1060 ; X64-NEXT:    cmpl %eax, %ecx
1061 ; X64-NEXT:    seta %al
1062 ; X64-NEXT:    sbbb $0, %al
1063 ; X64-NEXT:    movzbl %al, %eax
1064 ; X64-NEXT:    movd %eax, %xmm1
1065 ; X64-NEXT:    punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xmm1[3],xmm2[4],xmm1[4],xmm2[5],xmm1[5],xmm2[6],xmm1[6],xmm2[7],xmm1[7]
1066 ; X64-NEXT:    punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm6[0],xmm2[1],xmm6[1],xmm2[2],xmm6[2],xmm2[3],xmm6[3]
1067 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm4[3,3,3,3]
1068 ; X64-NEXT:    movd %xmm1, %eax
1069 ; X64-NEXT:    pshufd {{.*#+}} xmm1 = xmm0[3,3,3,3]
1070 ; X64-NEXT:    movd %xmm1, %ecx
1071 ; X64-NEXT:    cmpl %eax, %ecx
1072 ; X64-NEXT:    seta %al
1073 ; X64-NEXT:    sbbb $0, %al
1074 ; X64-NEXT:    movzbl %al, %eax
1075 ; X64-NEXT:    movd %eax, %xmm1
1076 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]
1077 ; X64-NEXT:    movd %xmm5, %eax
1078 ; X64-NEXT:    pshufd {{.*#+}} xmm5 = xmm0[2,3,2,3]
1079 ; X64-NEXT:    movd %xmm5, %ecx
1080 ; X64-NEXT:    cmpl %eax, %ecx
1081 ; X64-NEXT:    seta %al
1082 ; X64-NEXT:    sbbb $0, %al
1083 ; X64-NEXT:    movzbl %al, %eax
1084 ; X64-NEXT:    movd %eax, %xmm5
1085 ; X64-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm1[0],xmm5[1],xmm1[1],xmm5[2],xmm1[2],xmm5[3],xmm1[3],xmm5[4],xmm1[4],xmm5[5],xmm1[5],xmm5[6],xmm1[6],xmm5[7],xmm1[7]
1086 ; X64-NEXT:    movd %xmm4, %eax
1087 ; X64-NEXT:    movd %xmm0, %ecx
1088 ; X64-NEXT:    cmpl %eax, %ecx
1089 ; X64-NEXT:    seta %al
1090 ; X64-NEXT:    sbbb $0, %al
1091 ; X64-NEXT:    movzbl %al, %eax
1092 ; X64-NEXT:    movd %eax, %xmm1
1093 ; X64-NEXT:    pshufd {{.*#+}} xmm4 = xmm4[1,1,1,1]
1094 ; X64-NEXT:    movd %xmm4, %eax
1095 ; X64-NEXT:    pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
1096 ; X64-NEXT:    movd %xmm0, %ecx
1097 ; X64-NEXT:    cmpl %eax, %ecx
1098 ; X64-NEXT:    seta %al
1099 ; X64-NEXT:    sbbb $0, %al
1100 ; X64-NEXT:    movzbl %al, %eax
1101 ; X64-NEXT:    movd %eax, %xmm0
1102 ; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1103 ; X64-NEXT:    punpcklwd {{.*#+}} xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3]
1104 ; X64-NEXT:    punpckldq {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1]
1105 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm1 = xmm1[0],xmm3[0]
1106 ; X64-NEXT:    movdqa %xmm1, %xmm0
1107 ; X64-NEXT:    retq
1109 ; X86-LABEL: ucmp_wide_vec_op:
1110 ; X86:       # %bb.0:
1111 ; X86-NEXT:    pushl %ebp
1112 ; X86-NEXT:    pushl %ebx
1113 ; X86-NEXT:    pushl %edi
1114 ; X86-NEXT:    pushl %esi
1115 ; X86-NEXT:    subl $12, %esp
1116 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1117 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
1118 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1119 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1120 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx
1121 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp
1122 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ebp
1123 ; X86-NEXT:    seta %al
1124 ; X86-NEXT:    sbbb $0, %al
1125 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1126 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ebx
1127 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx
1128 ; X86-NEXT:    seta %al
1129 ; X86-NEXT:    sbbb $0, %al
1130 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1131 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ebx
1132 ; X86-NEXT:    seta %al
1133 ; X86-NEXT:    sbbb $0, %al
1134 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1135 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edx
1136 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1137 ; X86-NEXT:    seta %al
1138 ; X86-NEXT:    sbbb $0, %al
1139 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1140 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edx
1141 ; X86-NEXT:    seta %al
1142 ; X86-NEXT:    sbbb $0, %al
1143 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1144 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1145 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1146 ; X86-NEXT:    seta %al
1147 ; X86-NEXT:    sbbb $0, %al
1148 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1149 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1150 ; X86-NEXT:    seta %al
1151 ; X86-NEXT:    sbbb $0, %al
1152 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1153 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %edi
1154 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1155 ; X86-NEXT:    seta %al
1156 ; X86-NEXT:    sbbb $0, %al
1157 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1158 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1159 ; X86-NEXT:    seta %al
1160 ; X86-NEXT:    sbbb $0, %al
1161 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1162 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %esi
1163 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1164 ; X86-NEXT:    seta %al
1165 ; X86-NEXT:    sbbb $0, %al
1166 ; X86-NEXT:    movb %al, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1167 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1168 ; X86-NEXT:    seta %bh
1169 ; X86-NEXT:    sbbb $0, %bh
1170 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1171 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1172 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1173 ; X86-NEXT:    seta %bl
1174 ; X86-NEXT:    sbbb $0, %bl
1175 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1176 ; X86-NEXT:    seta %dh
1177 ; X86-NEXT:    sbbb $0, %dh
1178 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1179 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1180 ; X86-NEXT:    seta %ch
1181 ; X86-NEXT:    sbbb $0, %ch
1182 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1183 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1184 ; X86-NEXT:    seta %dl
1185 ; X86-NEXT:    sbbb $0, %dl
1186 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1187 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1188 ; X86-NEXT:    seta %cl
1189 ; X86-NEXT:    sbbb $0, %cl
1190 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1191 ; X86-NEXT:    movb %cl, 15(%eax)
1192 ; X86-NEXT:    movb %dl, 14(%eax)
1193 ; X86-NEXT:    movb %ch, 13(%eax)
1194 ; X86-NEXT:    movb %dh, 12(%eax)
1195 ; X86-NEXT:    movb %bl, 11(%eax)
1196 ; X86-NEXT:    movb %bh, 10(%eax)
1197 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1198 ; X86-NEXT:    movb %cl, 9(%eax)
1199 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1200 ; X86-NEXT:    movb %cl, 8(%eax)
1201 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1202 ; X86-NEXT:    movb %cl, 7(%eax)
1203 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1204 ; X86-NEXT:    movb %cl, 6(%eax)
1205 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1206 ; X86-NEXT:    movb %cl, 5(%eax)
1207 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1208 ; X86-NEXT:    movb %cl, 4(%eax)
1209 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1210 ; X86-NEXT:    movb %cl, 3(%eax)
1211 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1212 ; X86-NEXT:    movb %cl, 2(%eax)
1213 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1214 ; X86-NEXT:    movb %cl, 1(%eax)
1215 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
1216 ; X86-NEXT:    movb %cl, (%eax)
1217 ; X86-NEXT:    addl $12, %esp
1218 ; X86-NEXT:    popl %esi
1219 ; X86-NEXT:    popl %edi
1220 ; X86-NEXT:    popl %ebx
1221 ; X86-NEXT:    popl %ebp
1222 ; X86-NEXT:    retl $4
1223   %1 = call <16 x i8> @llvm.ucmp(<16 x i32> %x, <16 x i32> %y)
1224   ret <16 x i8> %1
1227 define <17 x i2> @ucmp_uncommon_vectors(<17 x i71> %x, <17 x i71> %y) nounwind {
1228 ; X64-LABEL: ucmp_uncommon_vectors:
1229 ; X64:       # %bb.0:
1230 ; X64-NEXT:    pushq %rbp
1231 ; X64-NEXT:    pushq %r15
1232 ; X64-NEXT:    pushq %r14
1233 ; X64-NEXT:    pushq %r13
1234 ; X64-NEXT:    pushq %r12
1235 ; X64-NEXT:    pushq %rbx
1236 ; X64-NEXT:    subq $120, %rsp
1237 ; X64-NEXT:    movq %r9, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1238 ; X64-NEXT:    movq %rcx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1239 ; X64-NEXT:    movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1240 ; X64-NEXT:    movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1241 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1242 ; X64-NEXT:    andl $127, %eax
1243 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1244 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1245 ; X64-NEXT:    andl $127, %eax
1246 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1247 ; X64-NEXT:    andl $127, %edx
1248 ; X64-NEXT:    movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1249 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1250 ; X64-NEXT:    andl $127, %eax
1251 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1252 ; X64-NEXT:    andl $127, %r8d
1253 ; X64-NEXT:    movq %r8, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1254 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1255 ; X64-NEXT:    andl $127, %eax
1256 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1257 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1258 ; X64-NEXT:    andl $127, %eax
1259 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1260 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1261 ; X64-NEXT:    andl $127, %eax
1262 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1263 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1264 ; X64-NEXT:    andl $127, %eax
1265 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1266 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1267 ; X64-NEXT:    andl $127, %eax
1268 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1269 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1270 ; X64-NEXT:    andl $127, %eax
1271 ; X64-NEXT:    movq %rax, (%rsp) # 8-byte Spill
1272 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1273 ; X64-NEXT:    andl $127, %eax
1274 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1275 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1276 ; X64-NEXT:    andl $127, %eax
1277 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1278 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1279 ; X64-NEXT:    andl $127, %eax
1280 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1281 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1282 ; X64-NEXT:    andl $127, %eax
1283 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1284 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1285 ; X64-NEXT:    andl $127, %eax
1286 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1287 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1288 ; X64-NEXT:    andl $127, %eax
1289 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1290 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1291 ; X64-NEXT:    andl $127, %eax
1292 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1293 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1294 ; X64-NEXT:    andl $127, %eax
1295 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1296 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1297 ; X64-NEXT:    andl $127, %eax
1298 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1299 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r12
1300 ; X64-NEXT:    andl $127, %r12d
1301 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1302 ; X64-NEXT:    andl $127, %eax
1303 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1304 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r14
1305 ; X64-NEXT:    andl $127, %r14d
1306 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1307 ; X64-NEXT:    andl $127, %eax
1308 ; X64-NEXT:    movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1309 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rbx
1310 ; X64-NEXT:    andl $127, %ebx
1311 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r15
1312 ; X64-NEXT:    andl $127, %r15d
1313 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rbp
1314 ; X64-NEXT:    andl $127, %ebp
1315 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r11
1316 ; X64-NEXT:    andl $127, %r11d
1317 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r13
1318 ; X64-NEXT:    andl $127, %r13d
1319 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r10
1320 ; X64-NEXT:    andl $127, %r10d
1321 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rsi
1322 ; X64-NEXT:    andl $127, %esi
1323 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
1324 ; X64-NEXT:    andl $127, %edi
1325 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1326 ; X64-NEXT:    andl $127, %eax
1327 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdx
1328 ; X64-NEXT:    andl $127, %edx
1329 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r9
1330 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r8
1331 ; X64-NEXT:    cmpq %r9, %r8
1332 ; X64-NEXT:    movq %rdx, %rcx
1333 ; X64-NEXT:    sbbq %rax, %rcx
1334 ; X64-NEXT:    setb %cl
1335 ; X64-NEXT:    cmpq %r8, %r9
1336 ; X64-NEXT:    sbbq %rdx, %rax
1337 ; X64-NEXT:    sbbb $0, %cl
1338 ; X64-NEXT:    movb %cl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1339 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1340 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx
1341 ; X64-NEXT:    cmpq %rax, %rcx
1342 ; X64-NEXT:    movq %rdi, %rdx
1343 ; X64-NEXT:    sbbq %rsi, %rdx
1344 ; X64-NEXT:    setb %dl
1345 ; X64-NEXT:    cmpq %rcx, %rax
1346 ; X64-NEXT:    sbbq %rdi, %rsi
1347 ; X64-NEXT:    sbbb $0, %dl
1348 ; X64-NEXT:    movb %dl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1349 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1350 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx
1351 ; X64-NEXT:    cmpq %rax, %rcx
1352 ; X64-NEXT:    movq %r10, %rdx
1353 ; X64-NEXT:    sbbq %r13, %rdx
1354 ; X64-NEXT:    setb %dl
1355 ; X64-NEXT:    cmpq %rcx, %rax
1356 ; X64-NEXT:    sbbq %r10, %r13
1357 ; X64-NEXT:    sbbb $0, %dl
1358 ; X64-NEXT:    movb %dl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1359 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1360 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx
1361 ; X64-NEXT:    cmpq %rax, %rcx
1362 ; X64-NEXT:    movq %r11, %rdx
1363 ; X64-NEXT:    sbbq %rbp, %rdx
1364 ; X64-NEXT:    setb %dl
1365 ; X64-NEXT:    cmpq %rcx, %rax
1366 ; X64-NEXT:    sbbq %r11, %rbp
1367 ; X64-NEXT:    sbbb $0, %dl
1368 ; X64-NEXT:    movb %dl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1369 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1370 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx
1371 ; X64-NEXT:    cmpq %rax, %rcx
1372 ; X64-NEXT:    movq %r15, %rdx
1373 ; X64-NEXT:    sbbq %rbx, %rdx
1374 ; X64-NEXT:    setb %dl
1375 ; X64-NEXT:    cmpq %rcx, %rax
1376 ; X64-NEXT:    sbbq %r15, %rbx
1377 ; X64-NEXT:    sbbb $0, %dl
1378 ; X64-NEXT:    movb %dl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1379 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1380 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx
1381 ; X64-NEXT:    cmpq %rax, %rcx
1382 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
1383 ; X64-NEXT:    movq %rsi, %rdx
1384 ; X64-NEXT:    sbbq %r14, %rdx
1385 ; X64-NEXT:    setb %dl
1386 ; X64-NEXT:    cmpq %rcx, %rax
1387 ; X64-NEXT:    sbbq %rsi, %r14
1388 ; X64-NEXT:    sbbb $0, %dl
1389 ; X64-NEXT:    movb %dl, {{[-0-9]+}}(%r{{[sb]}}p) # 1-byte Spill
1390 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rcx
1391 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdx
1392 ; X64-NEXT:    cmpq %rcx, %rdx
1393 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
1394 ; X64-NEXT:    movq %rsi, %rax
1395 ; X64-NEXT:    sbbq %r12, %rax
1396 ; X64-NEXT:    setb %r13b
1397 ; X64-NEXT:    cmpq %rdx, %rcx
1398 ; X64-NEXT:    sbbq %rsi, %r12
1399 ; X64-NEXT:    sbbb $0, %r13b
1400 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdx
1401 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rsi
1402 ; X64-NEXT:    cmpq %rdx, %rsi
1403 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
1404 ; X64-NEXT:    movq %rdi, %rcx
1405 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1406 ; X64-NEXT:    sbbq %rax, %rcx
1407 ; X64-NEXT:    setb %bpl
1408 ; X64-NEXT:    cmpq %rsi, %rdx
1409 ; X64-NEXT:    sbbq %rdi, %rax
1410 ; X64-NEXT:    sbbb $0, %bpl
1411 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rsi
1412 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
1413 ; X64-NEXT:    cmpq %rsi, %rdi
1414 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1415 ; X64-NEXT:    movq %rcx, %rdx
1416 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1417 ; X64-NEXT:    sbbq %rax, %rdx
1418 ; X64-NEXT:    setb %r11b
1419 ; X64-NEXT:    cmpq %rdi, %rsi
1420 ; X64-NEXT:    sbbq %rcx, %rax
1421 ; X64-NEXT:    sbbb $0, %r11b
1422 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rdi
1423 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r8
1424 ; X64-NEXT:    cmpq %rdi, %r8
1425 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1426 ; X64-NEXT:    movq %rcx, %rsi
1427 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1428 ; X64-NEXT:    sbbq %rax, %rsi
1429 ; X64-NEXT:    setb %sil
1430 ; X64-NEXT:    cmpq %r8, %rdi
1431 ; X64-NEXT:    sbbq %rcx, %rax
1432 ; X64-NEXT:    sbbb $0, %sil
1433 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r8
1434 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r9
1435 ; X64-NEXT:    cmpq %r8, %r9
1436 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1437 ; X64-NEXT:    movq %rcx, %rdi
1438 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1439 ; X64-NEXT:    sbbq %rax, %rdi
1440 ; X64-NEXT:    setb %dil
1441 ; X64-NEXT:    cmpq %r9, %r8
1442 ; X64-NEXT:    sbbq %rcx, %rax
1443 ; X64-NEXT:    sbbb $0, %dil
1444 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r9
1445 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r10
1446 ; X64-NEXT:    cmpq %r9, %r10
1447 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1448 ; X64-NEXT:    movq %rcx, %r8
1449 ; X64-NEXT:    movq (%rsp), %rax # 8-byte Reload
1450 ; X64-NEXT:    sbbq %rax, %r8
1451 ; X64-NEXT:    setb %r8b
1452 ; X64-NEXT:    cmpq %r10, %r9
1453 ; X64-NEXT:    sbbq %rcx, %rax
1454 ; X64-NEXT:    sbbb $0, %r8b
1455 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r10
1456 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rbx
1457 ; X64-NEXT:    cmpq %r10, %rbx
1458 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1459 ; X64-NEXT:    movq %rcx, %r9
1460 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1461 ; X64-NEXT:    sbbq %rax, %r9
1462 ; X64-NEXT:    setb %r9b
1463 ; X64-NEXT:    cmpq %rbx, %r10
1464 ; X64-NEXT:    sbbq %rcx, %rax
1465 ; X64-NEXT:    sbbb $0, %r9b
1466 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rbx
1467 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1468 ; X64-NEXT:    cmpq %rax, %rbx
1469 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
1470 ; X64-NEXT:    movq %rdx, %r10
1471 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1472 ; X64-NEXT:    sbbq %rcx, %r10
1473 ; X64-NEXT:    setb %r10b
1474 ; X64-NEXT:    cmpq %rbx, %rax
1475 ; X64-NEXT:    sbbq %rdx, %rcx
1476 ; X64-NEXT:    sbbb $0, %r10b
1477 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r14
1478 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1479 ; X64-NEXT:    cmpq %rcx, %r14
1480 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
1481 ; X64-NEXT:    movq %rdx, %rbx
1482 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1483 ; X64-NEXT:    sbbq %rax, %rbx
1484 ; X64-NEXT:    setb %bl
1485 ; X64-NEXT:    cmpq %r14, %rcx
1486 ; X64-NEXT:    sbbq %rdx, %rax
1487 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r15
1488 ; X64-NEXT:    sbbb $0, %bl
1489 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1490 ; X64-NEXT:    cmpq %rcx, %r15
1491 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
1492 ; X64-NEXT:    movq %rdx, %r14
1493 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1494 ; X64-NEXT:    sbbq %rax, %r14
1495 ; X64-NEXT:    setb %r14b
1496 ; X64-NEXT:    cmpq %r15, %rcx
1497 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %r12
1498 ; X64-NEXT:    sbbq %rdx, %rax
1499 ; X64-NEXT:    movq {{[0-9]+}}(%rsp), %rax
1500 ; X64-NEXT:    sbbb $0, %r14b
1501 ; X64-NEXT:    cmpq %r12, %rax
1502 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
1503 ; X64-NEXT:    movq %rdx, %r15
1504 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1505 ; X64-NEXT:    sbbq %rcx, %r15
1506 ; X64-NEXT:    setb %r15b
1507 ; X64-NEXT:    cmpq %rax, %r12
1508 ; X64-NEXT:    movzbl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 1-byte Folded Reload
1509 ; X64-NEXT:    movd %eax, %xmm0
1510 ; X64-NEXT:    movzbl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 1-byte Folded Reload
1511 ; X64-NEXT:    movd %eax, %xmm1
1512 ; X64-NEXT:    movzbl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 1-byte Folded Reload
1513 ; X64-NEXT:    movd %eax, %xmm2
1514 ; X64-NEXT:    movzbl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 1-byte Folded Reload
1515 ; X64-NEXT:    movd %eax, %xmm3
1516 ; X64-NEXT:    movzbl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 1-byte Folded Reload
1517 ; X64-NEXT:    movd %eax, %xmm4
1518 ; X64-NEXT:    movzbl {{[-0-9]+}}(%r{{[sb]}}p), %eax # 1-byte Folded Reload
1519 ; X64-NEXT:    movd %eax, %xmm5
1520 ; X64-NEXT:    movzbl %r13b, %eax
1521 ; X64-NEXT:    movd %eax, %xmm6
1522 ; X64-NEXT:    movzbl %bpl, %eax
1523 ; X64-NEXT:    movd %eax, %xmm7
1524 ; X64-NEXT:    movzbl %r11b, %eax
1525 ; X64-NEXT:    movd %eax, %xmm8
1526 ; X64-NEXT:    movzbl %sil, %eax
1527 ; X64-NEXT:    movd %eax, %xmm9
1528 ; X64-NEXT:    movzbl %dil, %eax
1529 ; X64-NEXT:    movd %eax, %xmm10
1530 ; X64-NEXT:    movzbl %r8b, %eax
1531 ; X64-NEXT:    movd %eax, %xmm11
1532 ; X64-NEXT:    movzbl %r9b, %eax
1533 ; X64-NEXT:    movd %eax, %xmm12
1534 ; X64-NEXT:    movzbl %r10b, %eax
1535 ; X64-NEXT:    movd %eax, %xmm13
1536 ; X64-NEXT:    movzbl %bl, %eax
1537 ; X64-NEXT:    movd %eax, %xmm14
1538 ; X64-NEXT:    movzbl %r14b, %eax
1539 ; X64-NEXT:    movd %eax, %xmm15
1540 ; X64-NEXT:    punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1],xmm1[2],xmm0[2],xmm1[3],xmm0[3],xmm1[4],xmm0[4],xmm1[5],xmm0[5],xmm1[6],xmm0[6],xmm1[7],xmm0[7]
1541 ; X64-NEXT:    punpcklbw {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
1542 ; X64-NEXT:    punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm1[0],xmm3[1],xmm1[1],xmm3[2],xmm1[2],xmm3[3],xmm1[3]
1543 ; X64-NEXT:    punpcklbw {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1],xmm5[2],xmm4[2],xmm5[3],xmm4[3],xmm5[4],xmm4[4],xmm5[5],xmm4[5],xmm5[6],xmm4[6],xmm5[7],xmm4[7]
1544 ; X64-NEXT:    punpcklbw {{.*#+}} xmm7 = xmm7[0],xmm6[0],xmm7[1],xmm6[1],xmm7[2],xmm6[2],xmm7[3],xmm6[3],xmm7[4],xmm6[4],xmm7[5],xmm6[5],xmm7[6],xmm6[6],xmm7[7],xmm6[7]
1545 ; X64-NEXT:    punpcklwd {{.*#+}} xmm7 = xmm7[0],xmm5[0],xmm7[1],xmm5[1],xmm7[2],xmm5[2],xmm7[3],xmm5[3]
1546 ; X64-NEXT:    punpckldq {{.*#+}} xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1]
1547 ; X64-NEXT:    punpcklbw {{.*#+}} xmm9 = xmm9[0],xmm8[0],xmm9[1],xmm8[1],xmm9[2],xmm8[2],xmm9[3],xmm8[3],xmm9[4],xmm8[4],xmm9[5],xmm8[5],xmm9[6],xmm8[6],xmm9[7],xmm8[7]
1548 ; X64-NEXT:    punpcklbw {{.*#+}} xmm11 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3],xmm11[4],xmm10[4],xmm11[5],xmm10[5],xmm11[6],xmm10[6],xmm11[7],xmm10[7]
1549 ; X64-NEXT:    punpcklwd {{.*#+}} xmm11 = xmm11[0],xmm9[0],xmm11[1],xmm9[1],xmm11[2],xmm9[2],xmm11[3],xmm9[3]
1550 ; X64-NEXT:    punpcklbw {{.*#+}} xmm13 = xmm13[0],xmm12[0],xmm13[1],xmm12[1],xmm13[2],xmm12[2],xmm13[3],xmm12[3],xmm13[4],xmm12[4],xmm13[5],xmm12[5],xmm13[6],xmm12[6],xmm13[7],xmm12[7]
1551 ; X64-NEXT:    punpcklbw {{.*#+}} xmm15 = xmm15[0],xmm14[0],xmm15[1],xmm14[1],xmm15[2],xmm14[2],xmm15[3],xmm14[3],xmm15[4],xmm14[4],xmm15[5],xmm14[5],xmm15[6],xmm14[6],xmm15[7],xmm14[7]
1552 ; X64-NEXT:    punpcklwd {{.*#+}} xmm15 = xmm15[0],xmm13[0],xmm15[1],xmm13[1],xmm15[2],xmm13[2],xmm15[3],xmm13[3]
1553 ; X64-NEXT:    punpckldq {{.*#+}} xmm15 = xmm15[0],xmm11[0],xmm15[1],xmm11[1]
1554 ; X64-NEXT:    punpcklqdq {{.*#+}} xmm15 = xmm15[0],xmm7[0]
1555 ; X64-NEXT:    sbbq %rdx, %rcx
1556 ; X64-NEXT:    sbbb $0, %r15b
1557 ; X64-NEXT:    movzbl %r15b, %eax
1558 ; X64-NEXT:    andl $3, %eax
1559 ; X64-NEXT:    movq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Reload
1560 ; X64-NEXT:    movb %al, 4(%rdi)
1561 ; X64-NEXT:    movdqa %xmm15, -{{[0-9]+}}(%rsp)
1562 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
1563 ; X64-NEXT:    andl $3, %eax
1564 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
1565 ; X64-NEXT:    andl $3, %ecx
1566 ; X64-NEXT:    leaq (%rcx,%rax,4), %rax
1567 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
1568 ; X64-NEXT:    andl $3, %ecx
1569 ; X64-NEXT:    shll $4, %ecx
1570 ; X64-NEXT:    orq %rax, %rcx
1571 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
1572 ; X64-NEXT:    andl $3, %eax
1573 ; X64-NEXT:    shll $6, %eax
1574 ; X64-NEXT:    orq %rcx, %rax
1575 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
1576 ; X64-NEXT:    andl $3, %ecx
1577 ; X64-NEXT:    shll $8, %ecx
1578 ; X64-NEXT:    orq %rax, %rcx
1579 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
1580 ; X64-NEXT:    andl $3, %eax
1581 ; X64-NEXT:    shll $10, %eax
1582 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
1583 ; X64-NEXT:    andl $3, %edx
1584 ; X64-NEXT:    shll $12, %edx
1585 ; X64-NEXT:    orq %rax, %rdx
1586 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %esi
1587 ; X64-NEXT:    andl $3, %esi
1588 ; X64-NEXT:    shll $14, %esi
1589 ; X64-NEXT:    orq %rdx, %rsi
1590 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
1591 ; X64-NEXT:    andl $3, %eax
1592 ; X64-NEXT:    shll $16, %eax
1593 ; X64-NEXT:    orq %rsi, %rax
1594 ; X64-NEXT:    orq %rcx, %rax
1595 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
1596 ; X64-NEXT:    andl $3, %ecx
1597 ; X64-NEXT:    shll $18, %ecx
1598 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
1599 ; X64-NEXT:    andl $3, %edx
1600 ; X64-NEXT:    shll $20, %edx
1601 ; X64-NEXT:    orq %rcx, %rdx
1602 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
1603 ; X64-NEXT:    andl $3, %ecx
1604 ; X64-NEXT:    shll $22, %ecx
1605 ; X64-NEXT:    orq %rdx, %rcx
1606 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
1607 ; X64-NEXT:    andl $3, %edx
1608 ; X64-NEXT:    shll $24, %edx
1609 ; X64-NEXT:    orq %rcx, %rdx
1610 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %ecx
1611 ; X64-NEXT:    andl $3, %ecx
1612 ; X64-NEXT:    shlq $26, %rcx
1613 ; X64-NEXT:    orq %rdx, %rcx
1614 ; X64-NEXT:    orq %rax, %rcx
1615 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %eax
1616 ; X64-NEXT:    andl $3, %eax
1617 ; X64-NEXT:    shlq $28, %rax
1618 ; X64-NEXT:    movzbl -{{[0-9]+}}(%rsp), %edx
1619 ; X64-NEXT:    andl $3, %edx
1620 ; X64-NEXT:    shlq $30, %rdx
1621 ; X64-NEXT:    orq %rax, %rdx
1622 ; X64-NEXT:    orq %rcx, %rdx
1623 ; X64-NEXT:    movq %rdi, %rax
1624 ; X64-NEXT:    movl %edx, (%rdi)
1625 ; X64-NEXT:    addq $120, %rsp
1626 ; X64-NEXT:    popq %rbx
1627 ; X64-NEXT:    popq %r12
1628 ; X64-NEXT:    popq %r13
1629 ; X64-NEXT:    popq %r14
1630 ; X64-NEXT:    popq %r15
1631 ; X64-NEXT:    popq %rbp
1632 ; X64-NEXT:    retq
1634 ; X86-LABEL: ucmp_uncommon_vectors:
1635 ; X86:       # %bb.0:
1636 ; X86-NEXT:    pushl %ebp
1637 ; X86-NEXT:    pushl %ebx
1638 ; X86-NEXT:    pushl %edi
1639 ; X86-NEXT:    pushl %esi
1640 ; X86-NEXT:    subl $132, %esp
1641 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1642 ; X86-NEXT:    andl $127, %eax
1643 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1644 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1645 ; X86-NEXT:    andl $127, %eax
1646 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1647 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1648 ; X86-NEXT:    andl $127, %eax
1649 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1650 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1651 ; X86-NEXT:    andl $127, %eax
1652 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1653 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1654 ; X86-NEXT:    andl $127, %eax
1655 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1656 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1657 ; X86-NEXT:    andl $127, %eax
1658 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1659 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1660 ; X86-NEXT:    andl $127, %eax
1661 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1662 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1663 ; X86-NEXT:    andl $127, %eax
1664 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1665 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1666 ; X86-NEXT:    andl $127, %eax
1667 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1668 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1669 ; X86-NEXT:    andl $127, %eax
1670 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1671 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1672 ; X86-NEXT:    andl $127, %eax
1673 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1674 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1675 ; X86-NEXT:    andl $127, %eax
1676 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1677 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1678 ; X86-NEXT:    andl $127, %eax
1679 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1680 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1681 ; X86-NEXT:    andl $127, %eax
1682 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1683 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1684 ; X86-NEXT:    andl $127, %eax
1685 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1686 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1687 ; X86-NEXT:    andl $127, %eax
1688 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1689 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1690 ; X86-NEXT:    andl $127, %eax
1691 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1692 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1693 ; X86-NEXT:    andl $127, %eax
1694 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1695 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1696 ; X86-NEXT:    andl $127, %eax
1697 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1698 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1699 ; X86-NEXT:    andl $127, %eax
1700 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1701 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1702 ; X86-NEXT:    andl $127, %eax
1703 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1704 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1705 ; X86-NEXT:    andl $127, %eax
1706 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1707 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1708 ; X86-NEXT:    andl $127, %eax
1709 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1710 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1711 ; X86-NEXT:    andl $127, %eax
1712 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1713 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1714 ; X86-NEXT:    andl $127, %eax
1715 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1716 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1717 ; X86-NEXT:    andl $127, %eax
1718 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1719 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1720 ; X86-NEXT:    andl $127, %eax
1721 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1722 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1723 ; X86-NEXT:    andl $127, %eax
1724 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1725 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1726 ; X86-NEXT:    andl $127, %eax
1727 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1728 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1729 ; X86-NEXT:    andl $127, %eax
1730 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1731 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp
1732 ; X86-NEXT:    andl $127, %ebp
1733 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1734 ; X86-NEXT:    andl $127, %eax
1735 ; X86-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1736 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1737 ; X86-NEXT:    andl $127, %edx
1738 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
1739 ; X86-NEXT:    andl $127, %edi
1740 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1741 ; X86-NEXT:    movl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
1742 ; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)
1743 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1744 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebx
1745 ; X86-NEXT:    movl %ebx, %esi
1746 ; X86-NEXT:    sbbl %eax, %esi
1747 ; X86-NEXT:    movl %edi, %esi
1748 ; X86-NEXT:    sbbl %edx, %esi
1749 ; X86-NEXT:    movl $0, %esi
1750 ; X86-NEXT:    sbbl %esi, %esi
1751 ; X86-NEXT:    setb %cl
1752 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1753 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %esi
1754 ; X86-NEXT:    sbbl %ebx, %eax
1755 ; X86-NEXT:    sbbl %edi, %edx
1756 ; X86-NEXT:    movl $0, %eax
1757 ; X86-NEXT:    sbbl %eax, %eax
1758 ; X86-NEXT:    sbbb $0, %cl
1759 ; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1760 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1761 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1762 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1763 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1764 ; X86-NEXT:    movl %esi, %edi
1765 ; X86-NEXT:    sbbl %edx, %edi
1766 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1767 ; X86-NEXT:    movl %eax, %edi
1768 ; X86-NEXT:    sbbl %ebp, %edi
1769 ; X86-NEXT:    movl $0, %edi
1770 ; X86-NEXT:    sbbl %edi, %edi
1771 ; X86-NEXT:    setb %bl
1772 ; X86-NEXT:    cmpl %ecx, {{[0-9]+}}(%esp)
1773 ; X86-NEXT:    sbbl %esi, %edx
1774 ; X86-NEXT:    sbbl %eax, %ebp
1775 ; X86-NEXT:    movl $0, %eax
1776 ; X86-NEXT:    sbbl %eax, %eax
1777 ; X86-NEXT:    sbbb $0, %bl
1778 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1779 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1780 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1781 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1782 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1783 ; X86-NEXT:    movl %esi, %edi
1784 ; X86-NEXT:    sbbl %edx, %edi
1785 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1786 ; X86-NEXT:    movl %eax, %edi
1787 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1788 ; X86-NEXT:    sbbl %ebp, %edi
1789 ; X86-NEXT:    movl $0, %edi
1790 ; X86-NEXT:    sbbl %edi, %edi
1791 ; X86-NEXT:    setb %bl
1792 ; X86-NEXT:    cmpl %ecx, {{[0-9]+}}(%esp)
1793 ; X86-NEXT:    sbbl %esi, %edx
1794 ; X86-NEXT:    sbbl %eax, %ebp
1795 ; X86-NEXT:    movl $0, %eax
1796 ; X86-NEXT:    sbbl %eax, %eax
1797 ; X86-NEXT:    sbbb $0, %bl
1798 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1799 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1800 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1801 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1802 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1803 ; X86-NEXT:    movl %esi, %edi
1804 ; X86-NEXT:    sbbl %edx, %edi
1805 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1806 ; X86-NEXT:    movl %eax, %edi
1807 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1808 ; X86-NEXT:    sbbl %ebp, %edi
1809 ; X86-NEXT:    movl $0, %edi
1810 ; X86-NEXT:    sbbl %edi, %edi
1811 ; X86-NEXT:    setb %bl
1812 ; X86-NEXT:    cmpl %ecx, {{[0-9]+}}(%esp)
1813 ; X86-NEXT:    sbbl %esi, %edx
1814 ; X86-NEXT:    sbbl %eax, %ebp
1815 ; X86-NEXT:    movl $0, %eax
1816 ; X86-NEXT:    sbbl %eax, %eax
1817 ; X86-NEXT:    sbbb $0, %bl
1818 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1819 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1820 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1821 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1822 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1823 ; X86-NEXT:    movl %esi, %edi
1824 ; X86-NEXT:    sbbl %edx, %edi
1825 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1826 ; X86-NEXT:    movl %eax, %edi
1827 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1828 ; X86-NEXT:    sbbl %ebp, %edi
1829 ; X86-NEXT:    movl $0, %edi
1830 ; X86-NEXT:    sbbl %edi, %edi
1831 ; X86-NEXT:    setb %bl
1832 ; X86-NEXT:    cmpl %ecx, {{[0-9]+}}(%esp)
1833 ; X86-NEXT:    sbbl %esi, %edx
1834 ; X86-NEXT:    sbbl %eax, %ebp
1835 ; X86-NEXT:    movl $0, %eax
1836 ; X86-NEXT:    sbbl %eax, %eax
1837 ; X86-NEXT:    sbbb $0, %bl
1838 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1839 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1840 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1841 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1842 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1843 ; X86-NEXT:    movl %esi, %edi
1844 ; X86-NEXT:    sbbl %edx, %edi
1845 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1846 ; X86-NEXT:    movl %eax, %edi
1847 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1848 ; X86-NEXT:    sbbl %ebp, %edi
1849 ; X86-NEXT:    movl $0, %edi
1850 ; X86-NEXT:    sbbl %edi, %edi
1851 ; X86-NEXT:    setb %bl
1852 ; X86-NEXT:    cmpl %ecx, {{[0-9]+}}(%esp)
1853 ; X86-NEXT:    sbbl %esi, %edx
1854 ; X86-NEXT:    sbbl %eax, %ebp
1855 ; X86-NEXT:    movl $0, %eax
1856 ; X86-NEXT:    sbbl %eax, %eax
1857 ; X86-NEXT:    sbbb $0, %bl
1858 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1859 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1860 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
1861 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1862 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1863 ; X86-NEXT:    movl %esi, %edi
1864 ; X86-NEXT:    sbbl %edx, %edi
1865 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1866 ; X86-NEXT:    movl %eax, %edi
1867 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1868 ; X86-NEXT:    sbbl %ebp, %edi
1869 ; X86-NEXT:    movl $0, %edi
1870 ; X86-NEXT:    sbbl %edi, %edi
1871 ; X86-NEXT:    setb %bl
1872 ; X86-NEXT:    cmpl %ecx, {{[0-9]+}}(%esp)
1873 ; X86-NEXT:    sbbl %esi, %edx
1874 ; X86-NEXT:    sbbl %eax, %ebp
1875 ; X86-NEXT:    movl $0, %eax
1876 ; X86-NEXT:    sbbl %eax, %eax
1877 ; X86-NEXT:    sbbb $0, %bl
1878 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1879 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1880 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1881 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1882 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1883 ; X86-NEXT:    movl %esi, %edi
1884 ; X86-NEXT:    sbbl %edx, %edi
1885 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1886 ; X86-NEXT:    movl %ebp, %edi
1887 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1888 ; X86-NEXT:    sbbl %ebx, %edi
1889 ; X86-NEXT:    movl $0, %edi
1890 ; X86-NEXT:    sbbl %edi, %edi
1891 ; X86-NEXT:    setb %cl
1892 ; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)
1893 ; X86-NEXT:    sbbl %esi, %edx
1894 ; X86-NEXT:    sbbl %ebp, %ebx
1895 ; X86-NEXT:    movl $0, %eax
1896 ; X86-NEXT:    sbbl %eax, %eax
1897 ; X86-NEXT:    sbbb $0, %cl
1898 ; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1899 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1900 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1901 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1902 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1903 ; X86-NEXT:    movl %esi, %edi
1904 ; X86-NEXT:    sbbl %edx, %edi
1905 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1906 ; X86-NEXT:    movl %ebp, %edi
1907 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1908 ; X86-NEXT:    sbbl %ebx, %edi
1909 ; X86-NEXT:    movl $0, %edi
1910 ; X86-NEXT:    sbbl %edi, %edi
1911 ; X86-NEXT:    setb %cl
1912 ; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)
1913 ; X86-NEXT:    sbbl %esi, %edx
1914 ; X86-NEXT:    sbbl %ebp, %ebx
1915 ; X86-NEXT:    movl $0, %eax
1916 ; X86-NEXT:    sbbl %eax, %eax
1917 ; X86-NEXT:    sbbb $0, %cl
1918 ; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1919 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1920 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
1921 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
1922 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1923 ; X86-NEXT:    movl %esi, %edi
1924 ; X86-NEXT:    sbbl %edx, %edi
1925 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1926 ; X86-NEXT:    movl %ebp, %edi
1927 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1928 ; X86-NEXT:    sbbl %ebx, %edi
1929 ; X86-NEXT:    movl $0, %edi
1930 ; X86-NEXT:    sbbl %edi, %edi
1931 ; X86-NEXT:    setb %cl
1932 ; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)
1933 ; X86-NEXT:    sbbl %esi, %edx
1934 ; X86-NEXT:    sbbl %ebp, %ebx
1935 ; X86-NEXT:    movl $0, %eax
1936 ; X86-NEXT:    sbbl %eax, %eax
1937 ; X86-NEXT:    sbbb $0, %cl
1938 ; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1939 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1940 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1941 ; X86-NEXT:    cmpl %eax, %ecx
1942 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1943 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
1944 ; X86-NEXT:    movl %edi, %edx
1945 ; X86-NEXT:    sbbl %esi, %edx
1946 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1947 ; X86-NEXT:    movl %ebp, %edx
1948 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1949 ; X86-NEXT:    sbbl %ebx, %edx
1950 ; X86-NEXT:    movl $0, %edx
1951 ; X86-NEXT:    sbbl %edx, %edx
1952 ; X86-NEXT:    setb %dl
1953 ; X86-NEXT:    cmpl %ecx, %eax
1954 ; X86-NEXT:    sbbl %edi, %esi
1955 ; X86-NEXT:    sbbl %ebp, %ebx
1956 ; X86-NEXT:    movl $0, %eax
1957 ; X86-NEXT:    sbbl %eax, %eax
1958 ; X86-NEXT:    sbbb $0, %dl
1959 ; X86-NEXT:    movb %dl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1960 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1961 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1962 ; X86-NEXT:    cmpl %eax, %ecx
1963 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1964 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
1965 ; X86-NEXT:    movl %edi, %ebx
1966 ; X86-NEXT:    sbbl %esi, %ebx
1967 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1968 ; X86-NEXT:    movl %ebp, %ebx
1969 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
1970 ; X86-NEXT:    sbbl %edx, %ebx
1971 ; X86-NEXT:    movl $0, %ebx
1972 ; X86-NEXT:    sbbl %ebx, %ebx
1973 ; X86-NEXT:    setb %bl
1974 ; X86-NEXT:    cmpl %ecx, %eax
1975 ; X86-NEXT:    sbbl %edi, %esi
1976 ; X86-NEXT:    sbbl %ebp, %edx
1977 ; X86-NEXT:    movl $0, %eax
1978 ; X86-NEXT:    sbbl %eax, %eax
1979 ; X86-NEXT:    sbbb $0, %bl
1980 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
1981 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
1982 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
1983 ; X86-NEXT:    cmpl %eax, %ecx
1984 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
1985 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
1986 ; X86-NEXT:    movl %edi, %ebx
1987 ; X86-NEXT:    sbbl %esi, %ebx
1988 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1989 ; X86-NEXT:    movl %ebp, %ebx
1990 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
1991 ; X86-NEXT:    sbbl %edx, %ebx
1992 ; X86-NEXT:    movl $0, %ebx
1993 ; X86-NEXT:    sbbl %ebx, %ebx
1994 ; X86-NEXT:    setb %bl
1995 ; X86-NEXT:    cmpl %ecx, %eax
1996 ; X86-NEXT:    sbbl %edi, %esi
1997 ; X86-NEXT:    sbbl %ebp, %edx
1998 ; X86-NEXT:    movl $0, %eax
1999 ; X86-NEXT:    sbbl %eax, %eax
2000 ; X86-NEXT:    sbbb $0, %bl
2001 ; X86-NEXT:    movb %bl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
2002 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
2003 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %eax
2004 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
2005 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
2006 ; X86-NEXT:    movl %edi, %ebp
2007 ; X86-NEXT:    sbbl %esi, %ebp
2008 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
2009 ; X86-NEXT:    movl %ebx, %ebp
2010 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2011 ; X86-NEXT:    sbbl %edx, %ebp
2012 ; X86-NEXT:    movl $0, %ebp
2013 ; X86-NEXT:    sbbl %ebp, %ebp
2014 ; X86-NEXT:    setb %cl
2015 ; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)
2016 ; X86-NEXT:    sbbl %edi, %esi
2017 ; X86-NEXT:    sbbl %ebx, %edx
2018 ; X86-NEXT:    movl $0, %eax
2019 ; X86-NEXT:    sbbl %eax, %eax
2020 ; X86-NEXT:    sbbb $0, %cl
2021 ; X86-NEXT:    movb %cl, {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Spill
2022 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
2023 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %esi
2024 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
2025 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp
2026 ; X86-NEXT:    movl %ebp, %eax
2027 ; X86-NEXT:    sbbl %edi, %eax
2028 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
2029 ; X86-NEXT:    movl %ecx, %eax
2030 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2031 ; X86-NEXT:    sbbl %edx, %eax
2032 ; X86-NEXT:    movl $0, %eax
2033 ; X86-NEXT:    sbbl %eax, %eax
2034 ; X86-NEXT:    setb %bl
2035 ; X86-NEXT:    cmpl %esi, {{[0-9]+}}(%esp)
2036 ; X86-NEXT:    sbbl %ebp, %edi
2037 ; X86-NEXT:    sbbl %ecx, %edx
2038 ; X86-NEXT:    movl $0, %ecx
2039 ; X86-NEXT:    sbbl %ecx, %ecx
2040 ; X86-NEXT:    sbbb $0, %bl
2041 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
2042 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %esi
2043 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
2044 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
2045 ; X86-NEXT:    movl %ecx, %ebp
2046 ; X86-NEXT:    sbbl %edi, %ebp
2047 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2048 ; X86-NEXT:    movl %eax, %ebp
2049 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2050 ; X86-NEXT:    sbbl %edx, %ebp
2051 ; X86-NEXT:    movl $0, %ebp
2052 ; X86-NEXT:    sbbl %ebp, %ebp
2053 ; X86-NEXT:    setb %bh
2054 ; X86-NEXT:    cmpl %esi, {{[0-9]+}}(%esp)
2055 ; X86-NEXT:    sbbl %ecx, %edi
2056 ; X86-NEXT:    sbbl %eax, %edx
2057 ; X86-NEXT:    movl $0, %ecx
2058 ; X86-NEXT:    sbbl %ecx, %ecx
2059 ; X86-NEXT:    sbbb $0, %bh
2060 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
2061 ; X86-NEXT:    cmpl %eax, {{[0-9]+}}(%esp)
2062 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
2063 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
2064 ; X86-NEXT:    movl %esi, %ebp
2065 ; X86-NEXT:    sbbl %edi, %ebp
2066 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
2067 ; X86-NEXT:    movl %edx, %ebp
2068 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2069 ; X86-NEXT:    sbbl %eax, %ebp
2070 ; X86-NEXT:    movl $0, %ebp
2071 ; X86-NEXT:    sbbl %ebp, %ebp
2072 ; X86-NEXT:    setb %cl
2073 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ebp
2074 ; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ebp
2075 ; X86-NEXT:    sbbl %esi, %edi
2076 ; X86-NEXT:    sbbl %edx, %eax
2077 ; X86-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
2078 ; X86-NEXT:    sbbl %eax, %eax
2079 ; X86-NEXT:    sbbb $0, %cl
2080 ; X86-NEXT:    movzbl %cl, %ecx
2081 ; X86-NEXT:    andl $3, %ecx
2082 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edi
2083 ; X86-NEXT:    movb %cl, 4(%edi)
2084 ; X86-NEXT:    movzbl %bh, %ebp
2085 ; X86-NEXT:    movzbl %bl, %ecx
2086 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
2087 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 1-byte Folded Reload
2088 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
2089 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 1-byte Folded Reload
2090 ; X86-NEXT:    andl $3, %ebp
2091 ; X86-NEXT:    andl $3, %ecx
2092 ; X86-NEXT:    leal (%ecx,%ebp,4), %ecx
2093 ; X86-NEXT:    andl $3, %eax
2094 ; X86-NEXT:    shll $4, %eax
2095 ; X86-NEXT:    orl %ecx, %eax
2096 ; X86-NEXT:    andl $3, %ebx
2097 ; X86-NEXT:    shll $6, %ebx
2098 ; X86-NEXT:    orl %eax, %ebx
2099 ; X86-NEXT:    andl $3, %esi
2100 ; X86-NEXT:    shll $8, %esi
2101 ; X86-NEXT:    orl %ebx, %esi
2102 ; X86-NEXT:    andl $3, %edx
2103 ; X86-NEXT:    shll $10, %edx
2104 ; X86-NEXT:    orl %esi, %edx
2105 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
2106 ; X86-NEXT:    andl $3, %eax
2107 ; X86-NEXT:    shll $12, %eax
2108 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
2109 ; X86-NEXT:    andl $3, %ecx
2110 ; X86-NEXT:    shll $14, %ecx
2111 ; X86-NEXT:    orl %eax, %ecx
2112 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
2113 ; X86-NEXT:    andl $3, %eax
2114 ; X86-NEXT:    shll $16, %eax
2115 ; X86-NEXT:    orl %ecx, %eax
2116 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
2117 ; X86-NEXT:    andl $3, %esi
2118 ; X86-NEXT:    shll $18, %esi
2119 ; X86-NEXT:    orl %eax, %esi
2120 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
2121 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
2122 ; X86-NEXT:    andl $3, %eax
2123 ; X86-NEXT:    shll $20, %eax
2124 ; X86-NEXT:    orl %esi, %eax
2125 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
2126 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 1-byte Folded Reload
2127 ; X86-NEXT:    orl %edx, %eax
2128 ; X86-NEXT:    andl $3, %ecx
2129 ; X86-NEXT:    shll $22, %ecx
2130 ; X86-NEXT:    andl $3, %esi
2131 ; X86-NEXT:    shll $24, %esi
2132 ; X86-NEXT:    orl %ecx, %esi
2133 ; X86-NEXT:    andl $3, %ebx
2134 ; X86-NEXT:    shll $26, %ebx
2135 ; X86-NEXT:    orl %esi, %ebx
2136 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
2137 ; X86-NEXT:    andl $3, %ecx
2138 ; X86-NEXT:    shll $28, %ecx
2139 ; X86-NEXT:    orl %ebx, %ecx
2140 ; X86-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 1-byte Folded Reload
2141 ; X86-NEXT:    shll $30, %edx
2142 ; X86-NEXT:    orl %ecx, %edx
2143 ; X86-NEXT:    orl %eax, %edx
2144 ; X86-NEXT:    movl %edx, (%edi)
2145 ; X86-NEXT:    movl %edi, %eax
2146 ; X86-NEXT:    addl $132, %esp
2147 ; X86-NEXT:    popl %esi
2148 ; X86-NEXT:    popl %edi
2149 ; X86-NEXT:    popl %ebx
2150 ; X86-NEXT:    popl %ebp
2151 ; X86-NEXT:    retl $4
2152   %1 = call <17 x i2> @llvm.ucmp(<17 x i71> %x, <17 x i71> %y)
2153   ret <17 x i2> %1