Lines Matching refs:SSE

2 ; RUN: llc < %s -mtriple=i686-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE-…
3 …N: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 -O3 | FileCheck %s --check-prefixes=SSE-64
12 ; SSE-32-LABEL: test_v4f32_oeq_q:
13 ; SSE-32: # %bb.0:
14 ; SSE-32-NEXT: pushl %ebp
15 ; SSE-32-NEXT: movl %esp, %ebp
16 ; SSE-32-NEXT: andl $-16, %esp
17 ; SSE-32-NEXT: subl $16, %esp
18 ; SSE-32-NEXT: cmpeqps 8(%ebp), %xmm2
19 ; SSE-32-NEXT: andps %xmm2, %xmm0
20 ; SSE-32-NEXT: andnps %xmm1, %xmm2
21 ; SSE-32-NEXT: orps %xmm2, %xmm0
22 ; SSE-32-NEXT: movl %ebp, %esp
23 ; SSE-32-NEXT: popl %ebp
24 ; SSE-32-NEXT: retl
26 ; SSE-64-LABEL: test_v4f32_oeq_q:
27 ; SSE-64: # %bb.0:
28 ; SSE-64-NEXT: cmpeqps %xmm3, %xmm2
29 ; SSE-64-NEXT: andps %xmm2, %xmm0
30 ; SSE-64-NEXT: andnps %xmm1, %xmm2
31 ; SSE-64-NEXT: orps %xmm2, %xmm0
32 ; SSE-64-NEXT: retq
105 ; SSE-32-LABEL: test_v4f32_ogt_q:
106 ; SSE-32: # %bb.0:
107 ; SSE-32-NEXT: pushl %ebp
108 ; SSE-32-NEXT: movl %esp, %ebp
109 ; SSE-32-NEXT: andl $-16, %esp
110 ; SSE-32-NEXT: subl $16, %esp
111 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
112 ; SSE-32-NEXT: movaps %xmm3, %xmm4
113 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
114 ; SSE-32-NEXT: movaps %xmm2, %xmm5
115 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
116 ; SSE-32-NEXT: xorl %eax, %eax
117 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
118 ; SSE-32-NEXT: movl $-1, %ecx
119 ; SSE-32-NEXT: movl $0, %edx
120 ; SSE-32-NEXT: cmoval %ecx, %edx
121 ; SSE-32-NEXT: movd %edx, %xmm5
122 ; SSE-32-NEXT: movaps %xmm3, %xmm4
123 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
124 ; SSE-32-NEXT: movaps %xmm2, %xmm6
125 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
126 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
127 ; SSE-32-NEXT: movl $0, %edx
128 ; SSE-32-NEXT: cmoval %ecx, %edx
129 ; SSE-32-NEXT: movd %edx, %xmm4
130 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
131 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
132 ; SSE-32-NEXT: movl $0, %edx
133 ; SSE-32-NEXT: cmoval %ecx, %edx
134 ; SSE-32-NEXT: movd %edx, %xmm5
135 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
136 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
137 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
138 ; SSE-32-NEXT: cmoval %ecx, %eax
139 ; SSE-32-NEXT: movd %eax, %xmm2
140 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
141 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
142 ; SSE-32-NEXT: pand %xmm5, %xmm0
143 ; SSE-32-NEXT: pandn %xmm1, %xmm5
144 ; SSE-32-NEXT: por %xmm5, %xmm0
145 ; SSE-32-NEXT: movl %ebp, %esp
146 ; SSE-32-NEXT: popl %ebp
147 ; SSE-32-NEXT: retl
149 ; SSE-64-LABEL: test_v4f32_ogt_q:
150 ; SSE-64: # %bb.0:
151 ; SSE-64-NEXT: movaps %xmm3, %xmm4
152 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
153 ; SSE-64-NEXT: movaps %xmm2, %xmm5
154 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
155 ; SSE-64-NEXT: xorl %eax, %eax
156 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
157 ; SSE-64-NEXT: movl $-1, %ecx
158 ; SSE-64-NEXT: movl $0, %edx
159 ; SSE-64-NEXT: cmoval %ecx, %edx
160 ; SSE-64-NEXT: movd %edx, %xmm4
161 ; SSE-64-NEXT: movaps %xmm3, %xmm5
162 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]
163 ; SSE-64-NEXT: movaps %xmm2, %xmm6
164 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
165 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
166 ; SSE-64-NEXT: movl $0, %edx
167 ; SSE-64-NEXT: cmoval %ecx, %edx
168 ; SSE-64-NEXT: movd %edx, %xmm5
169 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
170 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
171 ; SSE-64-NEXT: movl $0, %edx
172 ; SSE-64-NEXT: cmoval %ecx, %edx
173 ; SSE-64-NEXT: movd %edx, %xmm4
174 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
175 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
176 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
177 ; SSE-64-NEXT: cmoval %ecx, %eax
178 ; SSE-64-NEXT: movd %eax, %xmm2
179 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
180 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
181 ; SSE-64-NEXT: pand %xmm4, %xmm0
182 ; SSE-64-NEXT: pandn %xmm1, %xmm4
183 ; SSE-64-NEXT: por %xmm4, %xmm0
184 ; SSE-64-NEXT: retq
259 ; SSE-32-LABEL: test_v4f32_oge_q:
260 ; SSE-32: # %bb.0:
261 ; SSE-32-NEXT: pushl %ebp
262 ; SSE-32-NEXT: movl %esp, %ebp
263 ; SSE-32-NEXT: andl $-16, %esp
264 ; SSE-32-NEXT: subl $16, %esp
265 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
266 ; SSE-32-NEXT: movaps %xmm3, %xmm4
267 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
268 ; SSE-32-NEXT: movaps %xmm2, %xmm5
269 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
270 ; SSE-32-NEXT: xorl %eax, %eax
271 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
272 ; SSE-32-NEXT: movl $-1, %ecx
273 ; SSE-32-NEXT: movl $0, %edx
274 ; SSE-32-NEXT: cmovael %ecx, %edx
275 ; SSE-32-NEXT: movd %edx, %xmm5
276 ; SSE-32-NEXT: movaps %xmm3, %xmm4
277 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
278 ; SSE-32-NEXT: movaps %xmm2, %xmm6
279 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
280 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
281 ; SSE-32-NEXT: movl $0, %edx
282 ; SSE-32-NEXT: cmovael %ecx, %edx
283 ; SSE-32-NEXT: movd %edx, %xmm4
284 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
285 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
286 ; SSE-32-NEXT: movl $0, %edx
287 ; SSE-32-NEXT: cmovael %ecx, %edx
288 ; SSE-32-NEXT: movd %edx, %xmm5
289 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
290 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
291 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
292 ; SSE-32-NEXT: cmovael %ecx, %eax
293 ; SSE-32-NEXT: movd %eax, %xmm2
294 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
295 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
296 ; SSE-32-NEXT: pand %xmm5, %xmm0
297 ; SSE-32-NEXT: pandn %xmm1, %xmm5
298 ; SSE-32-NEXT: por %xmm5, %xmm0
299 ; SSE-32-NEXT: movl %ebp, %esp
300 ; SSE-32-NEXT: popl %ebp
301 ; SSE-32-NEXT: retl
303 ; SSE-64-LABEL: test_v4f32_oge_q:
304 ; SSE-64: # %bb.0:
305 ; SSE-64-NEXT: movaps %xmm3, %xmm4
306 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
307 ; SSE-64-NEXT: movaps %xmm2, %xmm5
308 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
309 ; SSE-64-NEXT: xorl %eax, %eax
310 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
311 ; SSE-64-NEXT: movl $-1, %ecx
312 ; SSE-64-NEXT: movl $0, %edx
313 ; SSE-64-NEXT: cmovael %ecx, %edx
314 ; SSE-64-NEXT: movd %edx, %xmm4
315 ; SSE-64-NEXT: movaps %xmm3, %xmm5
316 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]
317 ; SSE-64-NEXT: movaps %xmm2, %xmm6
318 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
319 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
320 ; SSE-64-NEXT: movl $0, %edx
321 ; SSE-64-NEXT: cmovael %ecx, %edx
322 ; SSE-64-NEXT: movd %edx, %xmm5
323 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
324 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
325 ; SSE-64-NEXT: movl $0, %edx
326 ; SSE-64-NEXT: cmovael %ecx, %edx
327 ; SSE-64-NEXT: movd %edx, %xmm4
328 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
329 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
330 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
331 ; SSE-64-NEXT: cmovael %ecx, %eax
332 ; SSE-64-NEXT: movd %eax, %xmm2
333 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
334 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
335 ; SSE-64-NEXT: pand %xmm4, %xmm0
336 ; SSE-64-NEXT: pandn %xmm1, %xmm4
337 ; SSE-64-NEXT: por %xmm4, %xmm0
338 ; SSE-64-NEXT: retq
413 ; SSE-32-LABEL: test_v4f32_olt_q:
414 ; SSE-32: # %bb.0:
415 ; SSE-32-NEXT: pushl %ebp
416 ; SSE-32-NEXT: movl %esp, %ebp
417 ; SSE-32-NEXT: andl $-16, %esp
418 ; SSE-32-NEXT: subl $16, %esp
419 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
420 ; SSE-32-NEXT: movaps %xmm2, %xmm4
421 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
422 ; SSE-32-NEXT: movaps %xmm3, %xmm5
423 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
424 ; SSE-32-NEXT: xorl %eax, %eax
425 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
426 ; SSE-32-NEXT: movl $-1, %ecx
427 ; SSE-32-NEXT: movl $0, %edx
428 ; SSE-32-NEXT: cmoval %ecx, %edx
429 ; SSE-32-NEXT: movd %edx, %xmm5
430 ; SSE-32-NEXT: movaps %xmm2, %xmm4
431 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
432 ; SSE-32-NEXT: movaps %xmm3, %xmm6
433 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
434 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
435 ; SSE-32-NEXT: movl $0, %edx
436 ; SSE-32-NEXT: cmoval %ecx, %edx
437 ; SSE-32-NEXT: movd %edx, %xmm4
438 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
439 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
440 ; SSE-32-NEXT: movl $0, %edx
441 ; SSE-32-NEXT: cmoval %ecx, %edx
442 ; SSE-32-NEXT: movd %edx, %xmm5
443 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
444 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
445 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
446 ; SSE-32-NEXT: cmoval %ecx, %eax
447 ; SSE-32-NEXT: movd %eax, %xmm2
448 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
449 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
450 ; SSE-32-NEXT: pand %xmm5, %xmm0
451 ; SSE-32-NEXT: pandn %xmm1, %xmm5
452 ; SSE-32-NEXT: por %xmm5, %xmm0
453 ; SSE-32-NEXT: movl %ebp, %esp
454 ; SSE-32-NEXT: popl %ebp
455 ; SSE-32-NEXT: retl
457 ; SSE-64-LABEL: test_v4f32_olt_q:
458 ; SSE-64: # %bb.0:
459 ; SSE-64-NEXT: movaps %xmm2, %xmm4
460 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
461 ; SSE-64-NEXT: movaps %xmm3, %xmm5
462 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
463 ; SSE-64-NEXT: xorl %eax, %eax
464 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
465 ; SSE-64-NEXT: movl $-1, %ecx
466 ; SSE-64-NEXT: movl $0, %edx
467 ; SSE-64-NEXT: cmoval %ecx, %edx
468 ; SSE-64-NEXT: movd %edx, %xmm4
469 ; SSE-64-NEXT: movaps %xmm2, %xmm5
470 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]
471 ; SSE-64-NEXT: movaps %xmm3, %xmm6
472 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
473 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
474 ; SSE-64-NEXT: movl $0, %edx
475 ; SSE-64-NEXT: cmoval %ecx, %edx
476 ; SSE-64-NEXT: movd %edx, %xmm5
477 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
478 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
479 ; SSE-64-NEXT: movl $0, %edx
480 ; SSE-64-NEXT: cmoval %ecx, %edx
481 ; SSE-64-NEXT: movd %edx, %xmm4
482 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
483 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
484 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
485 ; SSE-64-NEXT: cmoval %ecx, %eax
486 ; SSE-64-NEXT: movd %eax, %xmm2
487 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
488 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
489 ; SSE-64-NEXT: pand %xmm4, %xmm0
490 ; SSE-64-NEXT: pandn %xmm1, %xmm4
491 ; SSE-64-NEXT: por %xmm4, %xmm0
492 ; SSE-64-NEXT: retq
565 ; SSE-32-LABEL: test_v4f32_ole_q:
566 ; SSE-32: # %bb.0:
567 ; SSE-32-NEXT: pushl %ebp
568 ; SSE-32-NEXT: movl %esp, %ebp
569 ; SSE-32-NEXT: andl $-16, %esp
570 ; SSE-32-NEXT: subl $16, %esp
571 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
572 ; SSE-32-NEXT: movaps %xmm2, %xmm4
573 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
574 ; SSE-32-NEXT: movaps %xmm3, %xmm5
575 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
576 ; SSE-32-NEXT: xorl %eax, %eax
577 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
578 ; SSE-32-NEXT: movl $-1, %ecx
579 ; SSE-32-NEXT: movl $0, %edx
580 ; SSE-32-NEXT: cmovael %ecx, %edx
581 ; SSE-32-NEXT: movd %edx, %xmm5
582 ; SSE-32-NEXT: movaps %xmm2, %xmm4
583 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
584 ; SSE-32-NEXT: movaps %xmm3, %xmm6
585 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
586 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
587 ; SSE-32-NEXT: movl $0, %edx
588 ; SSE-32-NEXT: cmovael %ecx, %edx
589 ; SSE-32-NEXT: movd %edx, %xmm4
590 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
591 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
592 ; SSE-32-NEXT: movl $0, %edx
593 ; SSE-32-NEXT: cmovael %ecx, %edx
594 ; SSE-32-NEXT: movd %edx, %xmm5
595 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
596 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
597 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
598 ; SSE-32-NEXT: cmovael %ecx, %eax
599 ; SSE-32-NEXT: movd %eax, %xmm2
600 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
601 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
602 ; SSE-32-NEXT: pand %xmm5, %xmm0
603 ; SSE-32-NEXT: pandn %xmm1, %xmm5
604 ; SSE-32-NEXT: por %xmm5, %xmm0
605 ; SSE-32-NEXT: movl %ebp, %esp
606 ; SSE-32-NEXT: popl %ebp
607 ; SSE-32-NEXT: retl
609 ; SSE-64-LABEL: test_v4f32_ole_q:
610 ; SSE-64: # %bb.0:
611 ; SSE-64-NEXT: movaps %xmm2, %xmm4
612 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
613 ; SSE-64-NEXT: movaps %xmm3, %xmm5
614 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
615 ; SSE-64-NEXT: xorl %eax, %eax
616 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
617 ; SSE-64-NEXT: movl $-1, %ecx
618 ; SSE-64-NEXT: movl $0, %edx
619 ; SSE-64-NEXT: cmovael %ecx, %edx
620 ; SSE-64-NEXT: movd %edx, %xmm4
621 ; SSE-64-NEXT: movaps %xmm2, %xmm5
622 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]
623 ; SSE-64-NEXT: movaps %xmm3, %xmm6
624 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
625 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
626 ; SSE-64-NEXT: movl $0, %edx
627 ; SSE-64-NEXT: cmovael %ecx, %edx
628 ; SSE-64-NEXT: movd %edx, %xmm5
629 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
630 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
631 ; SSE-64-NEXT: movl $0, %edx
632 ; SSE-64-NEXT: cmovael %ecx, %edx
633 ; SSE-64-NEXT: movd %edx, %xmm4
634 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
635 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
636 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
637 ; SSE-64-NEXT: cmovael %ecx, %eax
638 ; SSE-64-NEXT: movd %eax, %xmm2
639 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
640 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
641 ; SSE-64-NEXT: pand %xmm4, %xmm0
642 ; SSE-64-NEXT: pandn %xmm1, %xmm4
643 ; SSE-64-NEXT: por %xmm4, %xmm0
644 ; SSE-64-NEXT: retq
717 ; SSE-32-LABEL: test_v4f32_one_q:
718 ; SSE-32: # %bb.0:
719 ; SSE-32-NEXT: pushl %ebp
720 ; SSE-32-NEXT: movl %esp, %ebp
721 ; SSE-32-NEXT: andl $-16, %esp
722 ; SSE-32-NEXT: subl $16, %esp
723 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
724 ; SSE-32-NEXT: movaps %xmm2, %xmm4
725 ; SSE-32-NEXT: cmpneqps %xmm3, %xmm4
726 ; SSE-32-NEXT: cmpordps %xmm2, %xmm3
727 ; SSE-32-NEXT: andps %xmm4, %xmm3
728 ; SSE-32-NEXT: andps %xmm3, %xmm0
729 ; SSE-32-NEXT: andnps %xmm1, %xmm3
730 ; SSE-32-NEXT: orps %xmm3, %xmm0
731 ; SSE-32-NEXT: movl %ebp, %esp
732 ; SSE-32-NEXT: popl %ebp
733 ; SSE-32-NEXT: retl
735 ; SSE-64-LABEL: test_v4f32_one_q:
736 ; SSE-64: # %bb.0:
737 ; SSE-64-NEXT: movaps %xmm2, %xmm4
738 ; SSE-64-NEXT: cmpneqps %xmm3, %xmm4
739 ; SSE-64-NEXT: cmpordps %xmm3, %xmm2
740 ; SSE-64-NEXT: andps %xmm2, %xmm4
741 ; SSE-64-NEXT: andps %xmm4, %xmm0
742 ; SSE-64-NEXT: andnps %xmm1, %xmm4
743 ; SSE-64-NEXT: orps %xmm4, %xmm0
744 ; SSE-64-NEXT: retq
817 ; SSE-32-LABEL: test_v4f32_ord_q:
818 ; SSE-32: # %bb.0:
819 ; SSE-32-NEXT: pushl %ebp
820 ; SSE-32-NEXT: movl %esp, %ebp
821 ; SSE-32-NEXT: andl $-16, %esp
822 ; SSE-32-NEXT: subl $16, %esp
823 ; SSE-32-NEXT: cmpordps 8(%ebp), %xmm2
824 ; SSE-32-NEXT: andps %xmm2, %xmm0
825 ; SSE-32-NEXT: andnps %xmm1, %xmm2
826 ; SSE-32-NEXT: orps %xmm2, %xmm0
827 ; SSE-32-NEXT: movl %ebp, %esp
828 ; SSE-32-NEXT: popl %ebp
829 ; SSE-32-NEXT: retl
831 ; SSE-64-LABEL: test_v4f32_ord_q:
832 ; SSE-64: # %bb.0:
833 ; SSE-64-NEXT: cmpordps %xmm3, %xmm2
834 ; SSE-64-NEXT: andps %xmm2, %xmm0
835 ; SSE-64-NEXT: andnps %xmm1, %xmm2
836 ; SSE-64-NEXT: orps %xmm2, %xmm0
837 ; SSE-64-NEXT: retq
910 ; SSE-32-LABEL: test_v4f32_ueq_q:
911 ; SSE-32: # %bb.0:
912 ; SSE-32-NEXT: pushl %ebp
913 ; SSE-32-NEXT: movl %esp, %ebp
914 ; SSE-32-NEXT: andl $-16, %esp
915 ; SSE-32-NEXT: subl $16, %esp
916 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
917 ; SSE-32-NEXT: movaps %xmm2, %xmm4
918 ; SSE-32-NEXT: cmpeqps %xmm3, %xmm4
919 ; SSE-32-NEXT: cmpunordps %xmm2, %xmm3
920 ; SSE-32-NEXT: orps %xmm4, %xmm3
921 ; SSE-32-NEXT: andps %xmm3, %xmm0
922 ; SSE-32-NEXT: andnps %xmm1, %xmm3
923 ; SSE-32-NEXT: orps %xmm3, %xmm0
924 ; SSE-32-NEXT: movl %ebp, %esp
925 ; SSE-32-NEXT: popl %ebp
926 ; SSE-32-NEXT: retl
928 ; SSE-64-LABEL: test_v4f32_ueq_q:
929 ; SSE-64: # %bb.0:
930 ; SSE-64-NEXT: movaps %xmm2, %xmm4
931 ; SSE-64-NEXT: cmpeqps %xmm3, %xmm4
932 ; SSE-64-NEXT: cmpunordps %xmm3, %xmm2
933 ; SSE-64-NEXT: orps %xmm2, %xmm4
934 ; SSE-64-NEXT: andps %xmm4, %xmm0
935 ; SSE-64-NEXT: andnps %xmm1, %xmm4
936 ; SSE-64-NEXT: orps %xmm4, %xmm0
937 ; SSE-64-NEXT: retq
1010 ; SSE-32-LABEL: test_v4f32_ugt_q:
1011 ; SSE-32: # %bb.0:
1012 ; SSE-32-NEXT: pushl %ebp
1013 ; SSE-32-NEXT: movl %esp, %ebp
1014 ; SSE-32-NEXT: andl $-16, %esp
1015 ; SSE-32-NEXT: subl $16, %esp
1016 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
1017 ; SSE-32-NEXT: movaps %xmm2, %xmm4
1018 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
1019 ; SSE-32-NEXT: movaps %xmm3, %xmm5
1020 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
1021 ; SSE-32-NEXT: xorl %eax, %eax
1022 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
1023 ; SSE-32-NEXT: movl $-1, %ecx
1024 ; SSE-32-NEXT: movl $0, %edx
1025 ; SSE-32-NEXT: cmovbl %ecx, %edx
1026 ; SSE-32-NEXT: movd %edx, %xmm5
1027 ; SSE-32-NEXT: movaps %xmm2, %xmm4
1028 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
1029 ; SSE-32-NEXT: movaps %xmm3, %xmm6
1030 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
1031 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
1032 ; SSE-32-NEXT: movl $0, %edx
1033 ; SSE-32-NEXT: cmovbl %ecx, %edx
1034 ; SSE-32-NEXT: movd %edx, %xmm4
1035 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
1036 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
1037 ; SSE-32-NEXT: movl $0, %edx
1038 ; SSE-32-NEXT: cmovbl %ecx, %edx
1039 ; SSE-32-NEXT: movd %edx, %xmm5
1040 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1041 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1042 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
1043 ; SSE-32-NEXT: cmovbl %ecx, %eax
1044 ; SSE-32-NEXT: movd %eax, %xmm2
1045 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
1046 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
1047 ; SSE-32-NEXT: pand %xmm5, %xmm0
1048 ; SSE-32-NEXT: pandn %xmm1, %xmm5
1049 ; SSE-32-NEXT: por %xmm5, %xmm0
1050 ; SSE-32-NEXT: movl %ebp, %esp
1051 ; SSE-32-NEXT: popl %ebp
1052 ; SSE-32-NEXT: retl
1054 ; SSE-64-LABEL: test_v4f32_ugt_q:
1055 ; SSE-64: # %bb.0:
1056 ; SSE-64-NEXT: movaps %xmm2, %xmm4
1057 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
1058 ; SSE-64-NEXT: movaps %xmm3, %xmm5
1059 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
1060 ; SSE-64-NEXT: xorl %eax, %eax
1061 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
1062 ; SSE-64-NEXT: movl $-1, %ecx
1063 ; SSE-64-NEXT: movl $0, %edx
1064 ; SSE-64-NEXT: cmovbl %ecx, %edx
1065 ; SSE-64-NEXT: movd %edx, %xmm4
1066 ; SSE-64-NEXT: movaps %xmm2, %xmm5
1067 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]
1068 ; SSE-64-NEXT: movaps %xmm3, %xmm6
1069 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
1070 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
1071 ; SSE-64-NEXT: movl $0, %edx
1072 ; SSE-64-NEXT: cmovbl %ecx, %edx
1073 ; SSE-64-NEXT: movd %edx, %xmm5
1074 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
1075 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
1076 ; SSE-64-NEXT: movl $0, %edx
1077 ; SSE-64-NEXT: cmovbl %ecx, %edx
1078 ; SSE-64-NEXT: movd %edx, %xmm4
1079 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1080 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1081 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
1082 ; SSE-64-NEXT: cmovbl %ecx, %eax
1083 ; SSE-64-NEXT: movd %eax, %xmm2
1084 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
1085 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
1086 ; SSE-64-NEXT: pand %xmm4, %xmm0
1087 ; SSE-64-NEXT: pandn %xmm1, %xmm4
1088 ; SSE-64-NEXT: por %xmm4, %xmm0
1089 ; SSE-64-NEXT: retq
1162 ; SSE-32-LABEL: test_v4f32_uge_q:
1163 ; SSE-32: # %bb.0:
1164 ; SSE-32-NEXT: pushl %ebp
1165 ; SSE-32-NEXT: movl %esp, %ebp
1166 ; SSE-32-NEXT: andl $-16, %esp
1167 ; SSE-32-NEXT: subl $16, %esp
1168 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
1169 ; SSE-32-NEXT: movaps %xmm2, %xmm4
1170 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
1171 ; SSE-32-NEXT: movaps %xmm3, %xmm5
1172 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
1173 ; SSE-32-NEXT: xorl %eax, %eax
1174 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
1175 ; SSE-32-NEXT: movl $-1, %ecx
1176 ; SSE-32-NEXT: movl $0, %edx
1177 ; SSE-32-NEXT: cmovbel %ecx, %edx
1178 ; SSE-32-NEXT: movd %edx, %xmm5
1179 ; SSE-32-NEXT: movaps %xmm2, %xmm4
1180 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm2[1]
1181 ; SSE-32-NEXT: movaps %xmm3, %xmm6
1182 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
1183 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
1184 ; SSE-32-NEXT: movl $0, %edx
1185 ; SSE-32-NEXT: cmovbel %ecx, %edx
1186 ; SSE-32-NEXT: movd %edx, %xmm4
1187 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
1188 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
1189 ; SSE-32-NEXT: movl $0, %edx
1190 ; SSE-32-NEXT: cmovbel %ecx, %edx
1191 ; SSE-32-NEXT: movd %edx, %xmm5
1192 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1193 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1194 ; SSE-32-NEXT: ucomiss %xmm2, %xmm3
1195 ; SSE-32-NEXT: cmovbel %ecx, %eax
1196 ; SSE-32-NEXT: movd %eax, %xmm2
1197 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
1198 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
1199 ; SSE-32-NEXT: pand %xmm5, %xmm0
1200 ; SSE-32-NEXT: pandn %xmm1, %xmm5
1201 ; SSE-32-NEXT: por %xmm5, %xmm0
1202 ; SSE-32-NEXT: movl %ebp, %esp
1203 ; SSE-32-NEXT: popl %ebp
1204 ; SSE-32-NEXT: retl
1206 ; SSE-64-LABEL: test_v4f32_uge_q:
1207 ; SSE-64: # %bb.0:
1208 ; SSE-64-NEXT: movaps %xmm2, %xmm4
1209 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm2[3,3]
1210 ; SSE-64-NEXT: movaps %xmm3, %xmm5
1211 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm3[3,3]
1212 ; SSE-64-NEXT: xorl %eax, %eax
1213 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
1214 ; SSE-64-NEXT: movl $-1, %ecx
1215 ; SSE-64-NEXT: movl $0, %edx
1216 ; SSE-64-NEXT: cmovbel %ecx, %edx
1217 ; SSE-64-NEXT: movd %edx, %xmm4
1218 ; SSE-64-NEXT: movaps %xmm2, %xmm5
1219 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm2[1]
1220 ; SSE-64-NEXT: movaps %xmm3, %xmm6
1221 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm3[1]
1222 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
1223 ; SSE-64-NEXT: movl $0, %edx
1224 ; SSE-64-NEXT: cmovbel %ecx, %edx
1225 ; SSE-64-NEXT: movd %edx, %xmm5
1226 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
1227 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
1228 ; SSE-64-NEXT: movl $0, %edx
1229 ; SSE-64-NEXT: cmovbel %ecx, %edx
1230 ; SSE-64-NEXT: movd %edx, %xmm4
1231 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1232 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1233 ; SSE-64-NEXT: ucomiss %xmm2, %xmm3
1234 ; SSE-64-NEXT: cmovbel %ecx, %eax
1235 ; SSE-64-NEXT: movd %eax, %xmm2
1236 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
1237 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
1238 ; SSE-64-NEXT: pand %xmm4, %xmm0
1239 ; SSE-64-NEXT: pandn %xmm1, %xmm4
1240 ; SSE-64-NEXT: por %xmm4, %xmm0
1241 ; SSE-64-NEXT: retq
1314 ; SSE-32-LABEL: test_v4f32_ult_q:
1315 ; SSE-32: # %bb.0:
1316 ; SSE-32-NEXT: pushl %ebp
1317 ; SSE-32-NEXT: movl %esp, %ebp
1318 ; SSE-32-NEXT: andl $-16, %esp
1319 ; SSE-32-NEXT: subl $16, %esp
1320 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
1321 ; SSE-32-NEXT: movaps %xmm3, %xmm4
1322 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
1323 ; SSE-32-NEXT: movaps %xmm2, %xmm5
1324 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
1325 ; SSE-32-NEXT: xorl %eax, %eax
1326 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
1327 ; SSE-32-NEXT: movl $-1, %ecx
1328 ; SSE-32-NEXT: movl $0, %edx
1329 ; SSE-32-NEXT: cmovbl %ecx, %edx
1330 ; SSE-32-NEXT: movd %edx, %xmm5
1331 ; SSE-32-NEXT: movaps %xmm3, %xmm4
1332 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
1333 ; SSE-32-NEXT: movaps %xmm2, %xmm6
1334 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
1335 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
1336 ; SSE-32-NEXT: movl $0, %edx
1337 ; SSE-32-NEXT: cmovbl %ecx, %edx
1338 ; SSE-32-NEXT: movd %edx, %xmm4
1339 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
1340 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
1341 ; SSE-32-NEXT: movl $0, %edx
1342 ; SSE-32-NEXT: cmovbl %ecx, %edx
1343 ; SSE-32-NEXT: movd %edx, %xmm5
1344 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1345 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1346 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
1347 ; SSE-32-NEXT: cmovbl %ecx, %eax
1348 ; SSE-32-NEXT: movd %eax, %xmm2
1349 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
1350 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
1351 ; SSE-32-NEXT: pand %xmm5, %xmm0
1352 ; SSE-32-NEXT: pandn %xmm1, %xmm5
1353 ; SSE-32-NEXT: por %xmm5, %xmm0
1354 ; SSE-32-NEXT: movl %ebp, %esp
1355 ; SSE-32-NEXT: popl %ebp
1356 ; SSE-32-NEXT: retl
1358 ; SSE-64-LABEL: test_v4f32_ult_q:
1359 ; SSE-64: # %bb.0:
1360 ; SSE-64-NEXT: movaps %xmm3, %xmm4
1361 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
1362 ; SSE-64-NEXT: movaps %xmm2, %xmm5
1363 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
1364 ; SSE-64-NEXT: xorl %eax, %eax
1365 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
1366 ; SSE-64-NEXT: movl $-1, %ecx
1367 ; SSE-64-NEXT: movl $0, %edx
1368 ; SSE-64-NEXT: cmovbl %ecx, %edx
1369 ; SSE-64-NEXT: movd %edx, %xmm4
1370 ; SSE-64-NEXT: movaps %xmm3, %xmm5
1371 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]
1372 ; SSE-64-NEXT: movaps %xmm2, %xmm6
1373 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
1374 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
1375 ; SSE-64-NEXT: movl $0, %edx
1376 ; SSE-64-NEXT: cmovbl %ecx, %edx
1377 ; SSE-64-NEXT: movd %edx, %xmm5
1378 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
1379 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
1380 ; SSE-64-NEXT: movl $0, %edx
1381 ; SSE-64-NEXT: cmovbl %ecx, %edx
1382 ; SSE-64-NEXT: movd %edx, %xmm4
1383 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1384 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1385 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
1386 ; SSE-64-NEXT: cmovbl %ecx, %eax
1387 ; SSE-64-NEXT: movd %eax, %xmm2
1388 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
1389 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
1390 ; SSE-64-NEXT: pand %xmm4, %xmm0
1391 ; SSE-64-NEXT: pandn %xmm1, %xmm4
1392 ; SSE-64-NEXT: por %xmm4, %xmm0
1393 ; SSE-64-NEXT: retq
1468 ; SSE-32-LABEL: test_v4f32_ule_q:
1469 ; SSE-32: # %bb.0:
1470 ; SSE-32-NEXT: pushl %ebp
1471 ; SSE-32-NEXT: movl %esp, %ebp
1472 ; SSE-32-NEXT: andl $-16, %esp
1473 ; SSE-32-NEXT: subl $16, %esp
1474 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
1475 ; SSE-32-NEXT: movaps %xmm3, %xmm4
1476 ; SSE-32-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
1477 ; SSE-32-NEXT: movaps %xmm2, %xmm5
1478 ; SSE-32-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
1479 ; SSE-32-NEXT: xorl %eax, %eax
1480 ; SSE-32-NEXT: ucomiss %xmm4, %xmm5
1481 ; SSE-32-NEXT: movl $-1, %ecx
1482 ; SSE-32-NEXT: movl $0, %edx
1483 ; SSE-32-NEXT: cmovbel %ecx, %edx
1484 ; SSE-32-NEXT: movd %edx, %xmm5
1485 ; SSE-32-NEXT: movaps %xmm3, %xmm4
1486 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm3[1]
1487 ; SSE-32-NEXT: movaps %xmm2, %xmm6
1488 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
1489 ; SSE-32-NEXT: ucomiss %xmm4, %xmm6
1490 ; SSE-32-NEXT: movl $0, %edx
1491 ; SSE-32-NEXT: cmovbel %ecx, %edx
1492 ; SSE-32-NEXT: movd %edx, %xmm4
1493 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1]
1494 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
1495 ; SSE-32-NEXT: movl $0, %edx
1496 ; SSE-32-NEXT: cmovbel %ecx, %edx
1497 ; SSE-32-NEXT: movd %edx, %xmm5
1498 ; SSE-32-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1499 ; SSE-32-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1500 ; SSE-32-NEXT: ucomiss %xmm3, %xmm2
1501 ; SSE-32-NEXT: cmovbel %ecx, %eax
1502 ; SSE-32-NEXT: movd %eax, %xmm2
1503 ; SSE-32-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm2[0],xmm5[1],xmm2[1]
1504 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm5 = xmm5[0],xmm4[0]
1505 ; SSE-32-NEXT: pand %xmm5, %xmm0
1506 ; SSE-32-NEXT: pandn %xmm1, %xmm5
1507 ; SSE-32-NEXT: por %xmm5, %xmm0
1508 ; SSE-32-NEXT: movl %ebp, %esp
1509 ; SSE-32-NEXT: popl %ebp
1510 ; SSE-32-NEXT: retl
1512 ; SSE-64-LABEL: test_v4f32_ule_q:
1513 ; SSE-64: # %bb.0:
1514 ; SSE-64-NEXT: movaps %xmm3, %xmm4
1515 ; SSE-64-NEXT: shufps {{.*#+}} xmm4 = xmm4[3,3],xmm3[3,3]
1516 ; SSE-64-NEXT: movaps %xmm2, %xmm5
1517 ; SSE-64-NEXT: shufps {{.*#+}} xmm5 = xmm5[3,3],xmm2[3,3]
1518 ; SSE-64-NEXT: xorl %eax, %eax
1519 ; SSE-64-NEXT: ucomiss %xmm4, %xmm5
1520 ; SSE-64-NEXT: movl $-1, %ecx
1521 ; SSE-64-NEXT: movl $0, %edx
1522 ; SSE-64-NEXT: cmovbel %ecx, %edx
1523 ; SSE-64-NEXT: movd %edx, %xmm4
1524 ; SSE-64-NEXT: movaps %xmm3, %xmm5
1525 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm5 = xmm5[1],xmm3[1]
1526 ; SSE-64-NEXT: movaps %xmm2, %xmm6
1527 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm6 = xmm6[1],xmm2[1]
1528 ; SSE-64-NEXT: ucomiss %xmm5, %xmm6
1529 ; SSE-64-NEXT: movl $0, %edx
1530 ; SSE-64-NEXT: cmovbel %ecx, %edx
1531 ; SSE-64-NEXT: movd %edx, %xmm5
1532 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm5 = xmm5[0],xmm4[0],xmm5[1],xmm4[1]
1533 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
1534 ; SSE-64-NEXT: movl $0, %edx
1535 ; SSE-64-NEXT: cmovbel %ecx, %edx
1536 ; SSE-64-NEXT: movd %edx, %xmm4
1537 ; SSE-64-NEXT: shufps {{.*#+}} xmm3 = xmm3[1,1,1,1]
1538 ; SSE-64-NEXT: shufps {{.*#+}} xmm2 = xmm2[1,1,1,1]
1539 ; SSE-64-NEXT: ucomiss %xmm3, %xmm2
1540 ; SSE-64-NEXT: cmovbel %ecx, %eax
1541 ; SSE-64-NEXT: movd %eax, %xmm2
1542 ; SSE-64-NEXT: punpckldq {{.*#+}} xmm4 = xmm4[0],xmm2[0],xmm4[1],xmm2[1]
1543 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm5[0]
1544 ; SSE-64-NEXT: pand %xmm4, %xmm0
1545 ; SSE-64-NEXT: pandn %xmm1, %xmm4
1546 ; SSE-64-NEXT: por %xmm4, %xmm0
1547 ; SSE-64-NEXT: retq
1622 ; SSE-32-LABEL: test_v4f32_une_q:
1623 ; SSE-32: # %bb.0:
1624 ; SSE-32-NEXT: pushl %ebp
1625 ; SSE-32-NEXT: movl %esp, %ebp
1626 ; SSE-32-NEXT: andl $-16, %esp
1627 ; SSE-32-NEXT: subl $16, %esp
1628 ; SSE-32-NEXT: cmpneqps 8(%ebp), %xmm2
1629 ; SSE-32-NEXT: andps %xmm2, %xmm0
1630 ; SSE-32-NEXT: andnps %xmm1, %xmm2
1631 ; SSE-32-NEXT: orps %xmm2, %xmm0
1632 ; SSE-32-NEXT: movl %ebp, %esp
1633 ; SSE-32-NEXT: popl %ebp
1634 ; SSE-32-NEXT: retl
1636 ; SSE-64-LABEL: test_v4f32_une_q:
1637 ; SSE-64: # %bb.0:
1638 ; SSE-64-NEXT: cmpneqps %xmm3, %xmm2
1639 ; SSE-64-NEXT: andps %xmm2, %xmm0
1640 ; SSE-64-NEXT: andnps %xmm1, %xmm2
1641 ; SSE-64-NEXT: orps %xmm2, %xmm0
1642 ; SSE-64-NEXT: retq
1715 ; SSE-32-LABEL: test_v4f32_uno_q:
1716 ; SSE-32: # %bb.0:
1717 ; SSE-32-NEXT: pushl %ebp
1718 ; SSE-32-NEXT: movl %esp, %ebp
1719 ; SSE-32-NEXT: andl $-16, %esp
1720 ; SSE-32-NEXT: subl $16, %esp
1721 ; SSE-32-NEXT: cmpunordps 8(%ebp), %xmm2
1722 ; SSE-32-NEXT: andps %xmm2, %xmm0
1723 ; SSE-32-NEXT: andnps %xmm1, %xmm2
1724 ; SSE-32-NEXT: orps %xmm2, %xmm0
1725 ; SSE-32-NEXT: movl %ebp, %esp
1726 ; SSE-32-NEXT: popl %ebp
1727 ; SSE-32-NEXT: retl
1729 ; SSE-64-LABEL: test_v4f32_uno_q:
1730 ; SSE-64: # %bb.0:
1731 ; SSE-64-NEXT: cmpunordps %xmm3, %xmm2
1732 ; SSE-64-NEXT: andps %xmm2, %xmm0
1733 ; SSE-64-NEXT: andnps %xmm1, %xmm2
1734 ; SSE-64-NEXT: orps %xmm2, %xmm0
1735 ; SSE-64-NEXT: retq
1808 ; SSE-32-LABEL: test_v2f64_oeq_q:
1809 ; SSE-32: # %bb.0:
1810 ; SSE-32-NEXT: pushl %ebp
1811 ; SSE-32-NEXT: movl %esp, %ebp
1812 ; SSE-32-NEXT: andl $-16, %esp
1813 ; SSE-32-NEXT: subl $16, %esp
1814 ; SSE-32-NEXT: cmpeqpd 8(%ebp), %xmm2
1815 ; SSE-32-NEXT: andpd %xmm2, %xmm0
1816 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
1817 ; SSE-32-NEXT: orpd %xmm2, %xmm0
1818 ; SSE-32-NEXT: movl %ebp, %esp
1819 ; SSE-32-NEXT: popl %ebp
1820 ; SSE-32-NEXT: retl
1822 ; SSE-64-LABEL: test_v2f64_oeq_q:
1823 ; SSE-64: # %bb.0:
1824 ; SSE-64-NEXT: cmpeqpd %xmm3, %xmm2
1825 ; SSE-64-NEXT: andpd %xmm2, %xmm0
1826 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
1827 ; SSE-64-NEXT: orpd %xmm2, %xmm0
1828 ; SSE-64-NEXT: retq
1901 ; SSE-32-LABEL: test_v2f64_ogt_q:
1902 ; SSE-32: # %bb.0:
1903 ; SSE-32-NEXT: pushl %ebp
1904 ; SSE-32-NEXT: movl %esp, %ebp
1905 ; SSE-32-NEXT: andl $-16, %esp
1906 ; SSE-32-NEXT: subl $16, %esp
1907 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
1908 ; SSE-32-NEXT: xorl %eax, %eax
1909 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
1910 ; SSE-32-NEXT: movl $-1, %ecx
1911 ; SSE-32-NEXT: movl $0, %edx
1912 ; SSE-32-NEXT: cmoval %ecx, %edx
1913 ; SSE-32-NEXT: movd %edx, %xmm3
1914 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
1915 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
1916 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
1917 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
1918 ; SSE-32-NEXT: cmoval %ecx, %eax
1919 ; SSE-32-NEXT: movd %eax, %xmm2
1920 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
1921 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
1922 ; SSE-32-NEXT: pand %xmm3, %xmm0
1923 ; SSE-32-NEXT: pandn %xmm1, %xmm3
1924 ; SSE-32-NEXT: por %xmm3, %xmm0
1925 ; SSE-32-NEXT: movl %ebp, %esp
1926 ; SSE-32-NEXT: popl %ebp
1927 ; SSE-32-NEXT: retl
1929 ; SSE-64-LABEL: test_v2f64_ogt_q:
1930 ; SSE-64: # %bb.0:
1931 ; SSE-64-NEXT: xorl %eax, %eax
1932 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
1933 ; SSE-64-NEXT: movq $-1, %rcx
1934 ; SSE-64-NEXT: movl $0, %edx
1935 ; SSE-64-NEXT: cmovaq %rcx, %rdx
1936 ; SSE-64-NEXT: movq %rdx, %xmm4
1937 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
1938 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
1939 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
1940 ; SSE-64-NEXT: cmovaq %rcx, %rax
1941 ; SSE-64-NEXT: movq %rax, %xmm2
1942 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
1943 ; SSE-64-NEXT: pand %xmm4, %xmm0
1944 ; SSE-64-NEXT: pandn %xmm1, %xmm4
1945 ; SSE-64-NEXT: por %xmm4, %xmm0
1946 ; SSE-64-NEXT: retq
2021 ; SSE-32-LABEL: test_v2f64_oge_q:
2022 ; SSE-32: # %bb.0:
2023 ; SSE-32-NEXT: pushl %ebp
2024 ; SSE-32-NEXT: movl %esp, %ebp
2025 ; SSE-32-NEXT: andl $-16, %esp
2026 ; SSE-32-NEXT: subl $16, %esp
2027 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
2028 ; SSE-32-NEXT: xorl %eax, %eax
2029 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
2030 ; SSE-32-NEXT: movl $-1, %ecx
2031 ; SSE-32-NEXT: movl $0, %edx
2032 ; SSE-32-NEXT: cmovael %ecx, %edx
2033 ; SSE-32-NEXT: movd %edx, %xmm3
2034 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
2035 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
2036 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2037 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
2038 ; SSE-32-NEXT: cmovael %ecx, %eax
2039 ; SSE-32-NEXT: movd %eax, %xmm2
2040 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
2041 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2042 ; SSE-32-NEXT: pand %xmm3, %xmm0
2043 ; SSE-32-NEXT: pandn %xmm1, %xmm3
2044 ; SSE-32-NEXT: por %xmm3, %xmm0
2045 ; SSE-32-NEXT: movl %ebp, %esp
2046 ; SSE-32-NEXT: popl %ebp
2047 ; SSE-32-NEXT: retl
2049 ; SSE-64-LABEL: test_v2f64_oge_q:
2050 ; SSE-64: # %bb.0:
2051 ; SSE-64-NEXT: xorl %eax, %eax
2052 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
2053 ; SSE-64-NEXT: movq $-1, %rcx
2054 ; SSE-64-NEXT: movl $0, %edx
2055 ; SSE-64-NEXT: cmovaeq %rcx, %rdx
2056 ; SSE-64-NEXT: movq %rdx, %xmm4
2057 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
2058 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2059 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
2060 ; SSE-64-NEXT: cmovaeq %rcx, %rax
2061 ; SSE-64-NEXT: movq %rax, %xmm2
2062 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
2063 ; SSE-64-NEXT: pand %xmm4, %xmm0
2064 ; SSE-64-NEXT: pandn %xmm1, %xmm4
2065 ; SSE-64-NEXT: por %xmm4, %xmm0
2066 ; SSE-64-NEXT: retq
2141 ; SSE-32-LABEL: test_v2f64_olt_q:
2142 ; SSE-32: # %bb.0:
2143 ; SSE-32-NEXT: pushl %ebp
2144 ; SSE-32-NEXT: movl %esp, %ebp
2145 ; SSE-32-NEXT: andl $-16, %esp
2146 ; SSE-32-NEXT: subl $16, %esp
2147 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
2148 ; SSE-32-NEXT: xorl %eax, %eax
2149 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2150 ; SSE-32-NEXT: movl $-1, %ecx
2151 ; SSE-32-NEXT: movl $0, %edx
2152 ; SSE-32-NEXT: cmoval %ecx, %edx
2153 ; SSE-32-NEXT: movd %edx, %xmm3
2154 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
2155 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2156 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
2157 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2158 ; SSE-32-NEXT: cmoval %ecx, %eax
2159 ; SSE-32-NEXT: movd %eax, %xmm2
2160 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
2161 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2162 ; SSE-32-NEXT: pand %xmm3, %xmm0
2163 ; SSE-32-NEXT: pandn %xmm1, %xmm3
2164 ; SSE-32-NEXT: por %xmm3, %xmm0
2165 ; SSE-32-NEXT: movl %ebp, %esp
2166 ; SSE-32-NEXT: popl %ebp
2167 ; SSE-32-NEXT: retl
2169 ; SSE-64-LABEL: test_v2f64_olt_q:
2170 ; SSE-64: # %bb.0:
2171 ; SSE-64-NEXT: xorl %eax, %eax
2172 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2173 ; SSE-64-NEXT: movq $-1, %rcx
2174 ; SSE-64-NEXT: movl $0, %edx
2175 ; SSE-64-NEXT: cmovaq %rcx, %rdx
2176 ; SSE-64-NEXT: movq %rdx, %xmm4
2177 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2178 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
2179 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2180 ; SSE-64-NEXT: cmovaq %rcx, %rax
2181 ; SSE-64-NEXT: movq %rax, %xmm2
2182 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
2183 ; SSE-64-NEXT: pand %xmm4, %xmm0
2184 ; SSE-64-NEXT: pandn %xmm1, %xmm4
2185 ; SSE-64-NEXT: por %xmm4, %xmm0
2186 ; SSE-64-NEXT: retq
2259 ; SSE-32-LABEL: test_v2f64_ole_q:
2260 ; SSE-32: # %bb.0:
2261 ; SSE-32-NEXT: pushl %ebp
2262 ; SSE-32-NEXT: movl %esp, %ebp
2263 ; SSE-32-NEXT: andl $-16, %esp
2264 ; SSE-32-NEXT: subl $16, %esp
2265 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
2266 ; SSE-32-NEXT: xorl %eax, %eax
2267 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2268 ; SSE-32-NEXT: movl $-1, %ecx
2269 ; SSE-32-NEXT: movl $0, %edx
2270 ; SSE-32-NEXT: cmovael %ecx, %edx
2271 ; SSE-32-NEXT: movd %edx, %xmm3
2272 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
2273 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2274 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
2275 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2276 ; SSE-32-NEXT: cmovael %ecx, %eax
2277 ; SSE-32-NEXT: movd %eax, %xmm2
2278 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
2279 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2280 ; SSE-32-NEXT: pand %xmm3, %xmm0
2281 ; SSE-32-NEXT: pandn %xmm1, %xmm3
2282 ; SSE-32-NEXT: por %xmm3, %xmm0
2283 ; SSE-32-NEXT: movl %ebp, %esp
2284 ; SSE-32-NEXT: popl %ebp
2285 ; SSE-32-NEXT: retl
2287 ; SSE-64-LABEL: test_v2f64_ole_q:
2288 ; SSE-64: # %bb.0:
2289 ; SSE-64-NEXT: xorl %eax, %eax
2290 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2291 ; SSE-64-NEXT: movq $-1, %rcx
2292 ; SSE-64-NEXT: movl $0, %edx
2293 ; SSE-64-NEXT: cmovaeq %rcx, %rdx
2294 ; SSE-64-NEXT: movq %rdx, %xmm4
2295 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2296 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
2297 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2298 ; SSE-64-NEXT: cmovaeq %rcx, %rax
2299 ; SSE-64-NEXT: movq %rax, %xmm2
2300 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
2301 ; SSE-64-NEXT: pand %xmm4, %xmm0
2302 ; SSE-64-NEXT: pandn %xmm1, %xmm4
2303 ; SSE-64-NEXT: por %xmm4, %xmm0
2304 ; SSE-64-NEXT: retq
2377 ; SSE-32-LABEL: test_v2f64_one_q:
2378 ; SSE-32: # %bb.0:
2379 ; SSE-32-NEXT: pushl %ebp
2380 ; SSE-32-NEXT: movl %esp, %ebp
2381 ; SSE-32-NEXT: andl $-16, %esp
2382 ; SSE-32-NEXT: subl $16, %esp
2383 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
2384 ; SSE-32-NEXT: movapd %xmm2, %xmm4
2385 ; SSE-32-NEXT: cmpneqpd %xmm3, %xmm4
2386 ; SSE-32-NEXT: cmpordpd %xmm2, %xmm3
2387 ; SSE-32-NEXT: andpd %xmm4, %xmm3
2388 ; SSE-32-NEXT: andpd %xmm3, %xmm0
2389 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
2390 ; SSE-32-NEXT: orpd %xmm3, %xmm0
2391 ; SSE-32-NEXT: movl %ebp, %esp
2392 ; SSE-32-NEXT: popl %ebp
2393 ; SSE-32-NEXT: retl
2395 ; SSE-64-LABEL: test_v2f64_one_q:
2396 ; SSE-64: # %bb.0:
2397 ; SSE-64-NEXT: movapd %xmm2, %xmm4
2398 ; SSE-64-NEXT: cmpneqpd %xmm3, %xmm4
2399 ; SSE-64-NEXT: cmpordpd %xmm3, %xmm2
2400 ; SSE-64-NEXT: andpd %xmm2, %xmm4
2401 ; SSE-64-NEXT: andpd %xmm4, %xmm0
2402 ; SSE-64-NEXT: andnpd %xmm1, %xmm4
2403 ; SSE-64-NEXT: orpd %xmm4, %xmm0
2404 ; SSE-64-NEXT: retq
2477 ; SSE-32-LABEL: test_v2f64_ord_q:
2478 ; SSE-32: # %bb.0:
2479 ; SSE-32-NEXT: pushl %ebp
2480 ; SSE-32-NEXT: movl %esp, %ebp
2481 ; SSE-32-NEXT: andl $-16, %esp
2482 ; SSE-32-NEXT: subl $16, %esp
2483 ; SSE-32-NEXT: cmpordpd 8(%ebp), %xmm2
2484 ; SSE-32-NEXT: andpd %xmm2, %xmm0
2485 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
2486 ; SSE-32-NEXT: orpd %xmm2, %xmm0
2487 ; SSE-32-NEXT: movl %ebp, %esp
2488 ; SSE-32-NEXT: popl %ebp
2489 ; SSE-32-NEXT: retl
2491 ; SSE-64-LABEL: test_v2f64_ord_q:
2492 ; SSE-64: # %bb.0:
2493 ; SSE-64-NEXT: cmpordpd %xmm3, %xmm2
2494 ; SSE-64-NEXT: andpd %xmm2, %xmm0
2495 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
2496 ; SSE-64-NEXT: orpd %xmm2, %xmm0
2497 ; SSE-64-NEXT: retq
2570 ; SSE-32-LABEL: test_v2f64_ueq_q:
2571 ; SSE-32: # %bb.0:
2572 ; SSE-32-NEXT: pushl %ebp
2573 ; SSE-32-NEXT: movl %esp, %ebp
2574 ; SSE-32-NEXT: andl $-16, %esp
2575 ; SSE-32-NEXT: subl $16, %esp
2576 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
2577 ; SSE-32-NEXT: movapd %xmm2, %xmm4
2578 ; SSE-32-NEXT: cmpeqpd %xmm3, %xmm4
2579 ; SSE-32-NEXT: cmpunordpd %xmm2, %xmm3
2580 ; SSE-32-NEXT: orpd %xmm4, %xmm3
2581 ; SSE-32-NEXT: andpd %xmm3, %xmm0
2582 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
2583 ; SSE-32-NEXT: orpd %xmm3, %xmm0
2584 ; SSE-32-NEXT: movl %ebp, %esp
2585 ; SSE-32-NEXT: popl %ebp
2586 ; SSE-32-NEXT: retl
2588 ; SSE-64-LABEL: test_v2f64_ueq_q:
2589 ; SSE-64: # %bb.0:
2590 ; SSE-64-NEXT: movapd %xmm2, %xmm4
2591 ; SSE-64-NEXT: cmpeqpd %xmm3, %xmm4
2592 ; SSE-64-NEXT: cmpunordpd %xmm3, %xmm2
2593 ; SSE-64-NEXT: orpd %xmm2, %xmm4
2594 ; SSE-64-NEXT: andpd %xmm4, %xmm0
2595 ; SSE-64-NEXT: andnpd %xmm1, %xmm4
2596 ; SSE-64-NEXT: orpd %xmm4, %xmm0
2597 ; SSE-64-NEXT: retq
2670 ; SSE-32-LABEL: test_v2f64_ugt_q:
2671 ; SSE-32: # %bb.0:
2672 ; SSE-32-NEXT: pushl %ebp
2673 ; SSE-32-NEXT: movl %esp, %ebp
2674 ; SSE-32-NEXT: andl $-16, %esp
2675 ; SSE-32-NEXT: subl $16, %esp
2676 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
2677 ; SSE-32-NEXT: xorl %eax, %eax
2678 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2679 ; SSE-32-NEXT: movl $-1, %ecx
2680 ; SSE-32-NEXT: movl $0, %edx
2681 ; SSE-32-NEXT: cmovbl %ecx, %edx
2682 ; SSE-32-NEXT: movd %edx, %xmm3
2683 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
2684 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2685 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
2686 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2687 ; SSE-32-NEXT: cmovbl %ecx, %eax
2688 ; SSE-32-NEXT: movd %eax, %xmm2
2689 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
2690 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2691 ; SSE-32-NEXT: pand %xmm3, %xmm0
2692 ; SSE-32-NEXT: pandn %xmm1, %xmm3
2693 ; SSE-32-NEXT: por %xmm3, %xmm0
2694 ; SSE-32-NEXT: movl %ebp, %esp
2695 ; SSE-32-NEXT: popl %ebp
2696 ; SSE-32-NEXT: retl
2698 ; SSE-64-LABEL: test_v2f64_ugt_q:
2699 ; SSE-64: # %bb.0:
2700 ; SSE-64-NEXT: xorl %eax, %eax
2701 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2702 ; SSE-64-NEXT: movq $-1, %rcx
2703 ; SSE-64-NEXT: movl $0, %edx
2704 ; SSE-64-NEXT: cmovbq %rcx, %rdx
2705 ; SSE-64-NEXT: movq %rdx, %xmm4
2706 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2707 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
2708 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2709 ; SSE-64-NEXT: cmovbq %rcx, %rax
2710 ; SSE-64-NEXT: movq %rax, %xmm2
2711 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
2712 ; SSE-64-NEXT: pand %xmm4, %xmm0
2713 ; SSE-64-NEXT: pandn %xmm1, %xmm4
2714 ; SSE-64-NEXT: por %xmm4, %xmm0
2715 ; SSE-64-NEXT: retq
2788 ; SSE-32-LABEL: test_v2f64_uge_q:
2789 ; SSE-32: # %bb.0:
2790 ; SSE-32-NEXT: pushl %ebp
2791 ; SSE-32-NEXT: movl %esp, %ebp
2792 ; SSE-32-NEXT: andl $-16, %esp
2793 ; SSE-32-NEXT: subl $16, %esp
2794 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
2795 ; SSE-32-NEXT: xorl %eax, %eax
2796 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2797 ; SSE-32-NEXT: movl $-1, %ecx
2798 ; SSE-32-NEXT: movl $0, %edx
2799 ; SSE-32-NEXT: cmovbel %ecx, %edx
2800 ; SSE-32-NEXT: movd %edx, %xmm3
2801 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
2802 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2803 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
2804 ; SSE-32-NEXT: ucomisd %xmm2, %xmm4
2805 ; SSE-32-NEXT: cmovbel %ecx, %eax
2806 ; SSE-32-NEXT: movd %eax, %xmm2
2807 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
2808 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2809 ; SSE-32-NEXT: pand %xmm3, %xmm0
2810 ; SSE-32-NEXT: pandn %xmm1, %xmm3
2811 ; SSE-32-NEXT: por %xmm3, %xmm0
2812 ; SSE-32-NEXT: movl %ebp, %esp
2813 ; SSE-32-NEXT: popl %ebp
2814 ; SSE-32-NEXT: retl
2816 ; SSE-64-LABEL: test_v2f64_uge_q:
2817 ; SSE-64: # %bb.0:
2818 ; SSE-64-NEXT: xorl %eax, %eax
2819 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2820 ; SSE-64-NEXT: movq $-1, %rcx
2821 ; SSE-64-NEXT: movl $0, %edx
2822 ; SSE-64-NEXT: cmovbeq %rcx, %rdx
2823 ; SSE-64-NEXT: movq %rdx, %xmm4
2824 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2825 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
2826 ; SSE-64-NEXT: ucomisd %xmm2, %xmm3
2827 ; SSE-64-NEXT: cmovbeq %rcx, %rax
2828 ; SSE-64-NEXT: movq %rax, %xmm2
2829 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
2830 ; SSE-64-NEXT: pand %xmm4, %xmm0
2831 ; SSE-64-NEXT: pandn %xmm1, %xmm4
2832 ; SSE-64-NEXT: por %xmm4, %xmm0
2833 ; SSE-64-NEXT: retq
2906 ; SSE-32-LABEL: test_v2f64_ult_q:
2907 ; SSE-32: # %bb.0:
2908 ; SSE-32-NEXT: pushl %ebp
2909 ; SSE-32-NEXT: movl %esp, %ebp
2910 ; SSE-32-NEXT: andl $-16, %esp
2911 ; SSE-32-NEXT: subl $16, %esp
2912 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
2913 ; SSE-32-NEXT: xorl %eax, %eax
2914 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
2915 ; SSE-32-NEXT: movl $-1, %ecx
2916 ; SSE-32-NEXT: movl $0, %edx
2917 ; SSE-32-NEXT: cmovbl %ecx, %edx
2918 ; SSE-32-NEXT: movd %edx, %xmm3
2919 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
2920 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
2921 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2922 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
2923 ; SSE-32-NEXT: cmovbl %ecx, %eax
2924 ; SSE-32-NEXT: movd %eax, %xmm2
2925 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
2926 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
2927 ; SSE-32-NEXT: pand %xmm3, %xmm0
2928 ; SSE-32-NEXT: pandn %xmm1, %xmm3
2929 ; SSE-32-NEXT: por %xmm3, %xmm0
2930 ; SSE-32-NEXT: movl %ebp, %esp
2931 ; SSE-32-NEXT: popl %ebp
2932 ; SSE-32-NEXT: retl
2934 ; SSE-64-LABEL: test_v2f64_ult_q:
2935 ; SSE-64: # %bb.0:
2936 ; SSE-64-NEXT: xorl %eax, %eax
2937 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
2938 ; SSE-64-NEXT: movq $-1, %rcx
2939 ; SSE-64-NEXT: movl $0, %edx
2940 ; SSE-64-NEXT: cmovbq %rcx, %rdx
2941 ; SSE-64-NEXT: movq %rdx, %xmm4
2942 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
2943 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
2944 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
2945 ; SSE-64-NEXT: cmovbq %rcx, %rax
2946 ; SSE-64-NEXT: movq %rax, %xmm2
2947 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
2948 ; SSE-64-NEXT: pand %xmm4, %xmm0
2949 ; SSE-64-NEXT: pandn %xmm1, %xmm4
2950 ; SSE-64-NEXT: por %xmm4, %xmm0
2951 ; SSE-64-NEXT: retq
3026 ; SSE-32-LABEL: test_v2f64_ule_q:
3027 ; SSE-32: # %bb.0:
3028 ; SSE-32-NEXT: pushl %ebp
3029 ; SSE-32-NEXT: movl %esp, %ebp
3030 ; SSE-32-NEXT: andl $-16, %esp
3031 ; SSE-32-NEXT: subl $16, %esp
3032 ; SSE-32-NEXT: movapd 8(%ebp), %xmm4
3033 ; SSE-32-NEXT: xorl %eax, %eax
3034 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
3035 ; SSE-32-NEXT: movl $-1, %ecx
3036 ; SSE-32-NEXT: movl $0, %edx
3037 ; SSE-32-NEXT: cmovbel %ecx, %edx
3038 ; SSE-32-NEXT: movd %edx, %xmm3
3039 ; SSE-32-NEXT: pshufd {{.*#+}} xmm3 = xmm3[0,0,1,1]
3040 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm4 = xmm4[1,1]
3041 ; SSE-32-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
3042 ; SSE-32-NEXT: ucomisd %xmm4, %xmm2
3043 ; SSE-32-NEXT: cmovbel %ecx, %eax
3044 ; SSE-32-NEXT: movd %eax, %xmm2
3045 ; SSE-32-NEXT: pshufd {{.*#+}} xmm2 = xmm2[0,0,1,1]
3046 ; SSE-32-NEXT: punpcklqdq {{.*#+}} xmm3 = xmm3[0],xmm2[0]
3047 ; SSE-32-NEXT: pand %xmm3, %xmm0
3048 ; SSE-32-NEXT: pandn %xmm1, %xmm3
3049 ; SSE-32-NEXT: por %xmm3, %xmm0
3050 ; SSE-32-NEXT: movl %ebp, %esp
3051 ; SSE-32-NEXT: popl %ebp
3052 ; SSE-32-NEXT: retl
3054 ; SSE-64-LABEL: test_v2f64_ule_q:
3055 ; SSE-64: # %bb.0:
3056 ; SSE-64-NEXT: xorl %eax, %eax
3057 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
3058 ; SSE-64-NEXT: movq $-1, %rcx
3059 ; SSE-64-NEXT: movl $0, %edx
3060 ; SSE-64-NEXT: cmovbeq %rcx, %rdx
3061 ; SSE-64-NEXT: movq %rdx, %xmm4
3062 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm3 = xmm3[1,1]
3063 ; SSE-64-NEXT: unpckhpd {{.*#+}} xmm2 = xmm2[1,1]
3064 ; SSE-64-NEXT: ucomisd %xmm3, %xmm2
3065 ; SSE-64-NEXT: cmovbeq %rcx, %rax
3066 ; SSE-64-NEXT: movq %rax, %xmm2
3067 ; SSE-64-NEXT: punpcklqdq {{.*#+}} xmm4 = xmm4[0],xmm2[0]
3068 ; SSE-64-NEXT: pand %xmm4, %xmm0
3069 ; SSE-64-NEXT: pandn %xmm1, %xmm4
3070 ; SSE-64-NEXT: por %xmm4, %xmm0
3071 ; SSE-64-NEXT: retq
3146 ; SSE-32-LABEL: test_v2f64_une_q:
3147 ; SSE-32: # %bb.0:
3148 ; SSE-32-NEXT: pushl %ebp
3149 ; SSE-32-NEXT: movl %esp, %ebp
3150 ; SSE-32-NEXT: andl $-16, %esp
3151 ; SSE-32-NEXT: subl $16, %esp
3152 ; SSE-32-NEXT: cmpneqpd 8(%ebp), %xmm2
3153 ; SSE-32-NEXT: andpd %xmm2, %xmm0
3154 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
3155 ; SSE-32-NEXT: orpd %xmm2, %xmm0
3156 ; SSE-32-NEXT: movl %ebp, %esp
3157 ; SSE-32-NEXT: popl %ebp
3158 ; SSE-32-NEXT: retl
3160 ; SSE-64-LABEL: test_v2f64_une_q:
3161 ; SSE-64: # %bb.0:
3162 ; SSE-64-NEXT: cmpneqpd %xmm3, %xmm2
3163 ; SSE-64-NEXT: andpd %xmm2, %xmm0
3164 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
3165 ; SSE-64-NEXT: orpd %xmm2, %xmm0
3166 ; SSE-64-NEXT: retq
3239 ; SSE-32-LABEL: test_v2f64_uno_q:
3240 ; SSE-32: # %bb.0:
3241 ; SSE-32-NEXT: pushl %ebp
3242 ; SSE-32-NEXT: movl %esp, %ebp
3243 ; SSE-32-NEXT: andl $-16, %esp
3244 ; SSE-32-NEXT: subl $16, %esp
3245 ; SSE-32-NEXT: cmpunordpd 8(%ebp), %xmm2
3246 ; SSE-32-NEXT: andpd %xmm2, %xmm0
3247 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
3248 ; SSE-32-NEXT: orpd %xmm2, %xmm0
3249 ; SSE-32-NEXT: movl %ebp, %esp
3250 ; SSE-32-NEXT: popl %ebp
3251 ; SSE-32-NEXT: retl
3253 ; SSE-64-LABEL: test_v2f64_uno_q:
3254 ; SSE-64: # %bb.0:
3255 ; SSE-64-NEXT: cmpunordpd %xmm3, %xmm2
3256 ; SSE-64-NEXT: andpd %xmm2, %xmm0
3257 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
3258 ; SSE-64-NEXT: orpd %xmm2, %xmm0
3259 ; SSE-64-NEXT: retq
3332 ; SSE-32-LABEL: test_v4f32_oeq_s:
3333 ; SSE-32: # %bb.0:
3334 ; SSE-32-NEXT: pushl %ebp
3335 ; SSE-32-NEXT: movl %esp, %ebp
3336 ; SSE-32-NEXT: andl $-16, %esp
3337 ; SSE-32-NEXT: subl $16, %esp
3338 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
3339 ; SSE-32-NEXT: movaps %xmm2, %xmm4
3340 ; SSE-32-NEXT: cmpltps %xmm3, %xmm4
3341 ; SSE-32-NEXT: cmpeqps %xmm2, %xmm3
3342 ; SSE-32-NEXT: andps %xmm3, %xmm0
3343 ; SSE-32-NEXT: andnps %xmm1, %xmm3
3344 ; SSE-32-NEXT: orps %xmm3, %xmm0
3345 ; SSE-32-NEXT: movl %ebp, %esp
3346 ; SSE-32-NEXT: popl %ebp
3347 ; SSE-32-NEXT: retl
3349 ; SSE-64-LABEL: test_v4f32_oeq_s:
3350 ; SSE-64: # %bb.0:
3351 ; SSE-64-NEXT: movaps %xmm2, %xmm4
3352 ; SSE-64-NEXT: cmpltps %xmm3, %xmm4
3353 ; SSE-64-NEXT: cmpeqps %xmm3, %xmm2
3354 ; SSE-64-NEXT: andps %xmm2, %xmm0
3355 ; SSE-64-NEXT: andnps %xmm1, %xmm2
3356 ; SSE-64-NEXT: orps %xmm2, %xmm0
3357 ; SSE-64-NEXT: retq
3430 ; SSE-32-LABEL: test_v4f32_ogt_s:
3431 ; SSE-32: # %bb.0:
3432 ; SSE-32-NEXT: pushl %ebp
3433 ; SSE-32-NEXT: movl %esp, %ebp
3434 ; SSE-32-NEXT: andl $-16, %esp
3435 ; SSE-32-NEXT: subl $16, %esp
3436 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
3437 ; SSE-32-NEXT: cmpltps %xmm2, %xmm3
3438 ; SSE-32-NEXT: andps %xmm3, %xmm0
3439 ; SSE-32-NEXT: andnps %xmm1, %xmm3
3440 ; SSE-32-NEXT: orps %xmm3, %xmm0
3441 ; SSE-32-NEXT: movl %ebp, %esp
3442 ; SSE-32-NEXT: popl %ebp
3443 ; SSE-32-NEXT: retl
3445 ; SSE-64-LABEL: test_v4f32_ogt_s:
3446 ; SSE-64: # %bb.0:
3447 ; SSE-64-NEXT: cmpltps %xmm2, %xmm3
3448 ; SSE-64-NEXT: andps %xmm3, %xmm0
3449 ; SSE-64-NEXT: andnps %xmm1, %xmm3
3450 ; SSE-64-NEXT: orps %xmm3, %xmm0
3451 ; SSE-64-NEXT: retq
3526 ; SSE-32-LABEL: test_v4f32_oge_s:
3527 ; SSE-32: # %bb.0:
3528 ; SSE-32-NEXT: pushl %ebp
3529 ; SSE-32-NEXT: movl %esp, %ebp
3530 ; SSE-32-NEXT: andl $-16, %esp
3531 ; SSE-32-NEXT: subl $16, %esp
3532 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
3533 ; SSE-32-NEXT: cmpleps %xmm2, %xmm3
3534 ; SSE-32-NEXT: andps %xmm3, %xmm0
3535 ; SSE-32-NEXT: andnps %xmm1, %xmm3
3536 ; SSE-32-NEXT: orps %xmm3, %xmm0
3537 ; SSE-32-NEXT: movl %ebp, %esp
3538 ; SSE-32-NEXT: popl %ebp
3539 ; SSE-32-NEXT: retl
3541 ; SSE-64-LABEL: test_v4f32_oge_s:
3542 ; SSE-64: # %bb.0:
3543 ; SSE-64-NEXT: cmpleps %xmm2, %xmm3
3544 ; SSE-64-NEXT: andps %xmm3, %xmm0
3545 ; SSE-64-NEXT: andnps %xmm1, %xmm3
3546 ; SSE-64-NEXT: orps %xmm3, %xmm0
3547 ; SSE-64-NEXT: retq
3622 ; SSE-32-LABEL: test_v4f32_olt_s:
3623 ; SSE-32: # %bb.0:
3624 ; SSE-32-NEXT: pushl %ebp
3625 ; SSE-32-NEXT: movl %esp, %ebp
3626 ; SSE-32-NEXT: andl $-16, %esp
3627 ; SSE-32-NEXT: subl $16, %esp
3628 ; SSE-32-NEXT: cmpltps 8(%ebp), %xmm2
3629 ; SSE-32-NEXT: andps %xmm2, %xmm0
3630 ; SSE-32-NEXT: andnps %xmm1, %xmm2
3631 ; SSE-32-NEXT: orps %xmm2, %xmm0
3632 ; SSE-32-NEXT: movl %ebp, %esp
3633 ; SSE-32-NEXT: popl %ebp
3634 ; SSE-32-NEXT: retl
3636 ; SSE-64-LABEL: test_v4f32_olt_s:
3637 ; SSE-64: # %bb.0:
3638 ; SSE-64-NEXT: cmpltps %xmm3, %xmm2
3639 ; SSE-64-NEXT: andps %xmm2, %xmm0
3640 ; SSE-64-NEXT: andnps %xmm1, %xmm2
3641 ; SSE-64-NEXT: orps %xmm2, %xmm0
3642 ; SSE-64-NEXT: retq
3715 ; SSE-32-LABEL: test_v4f32_ole_s:
3716 ; SSE-32: # %bb.0:
3717 ; SSE-32-NEXT: pushl %ebp
3718 ; SSE-32-NEXT: movl %esp, %ebp
3719 ; SSE-32-NEXT: andl $-16, %esp
3720 ; SSE-32-NEXT: subl $16, %esp
3721 ; SSE-32-NEXT: cmpleps 8(%ebp), %xmm2
3722 ; SSE-32-NEXT: andps %xmm2, %xmm0
3723 ; SSE-32-NEXT: andnps %xmm1, %xmm2
3724 ; SSE-32-NEXT: orps %xmm2, %xmm0
3725 ; SSE-32-NEXT: movl %ebp, %esp
3726 ; SSE-32-NEXT: popl %ebp
3727 ; SSE-32-NEXT: retl
3729 ; SSE-64-LABEL: test_v4f32_ole_s:
3730 ; SSE-64: # %bb.0:
3731 ; SSE-64-NEXT: cmpleps %xmm3, %xmm2
3732 ; SSE-64-NEXT: andps %xmm2, %xmm0
3733 ; SSE-64-NEXT: andnps %xmm1, %xmm2
3734 ; SSE-64-NEXT: orps %xmm2, %xmm0
3735 ; SSE-64-NEXT: retq
3808 ; SSE-32-LABEL: test_v4f32_one_s:
3809 ; SSE-32: # %bb.0:
3810 ; SSE-32-NEXT: pushl %ebp
3811 ; SSE-32-NEXT: movl %esp, %ebp
3812 ; SSE-32-NEXT: andl $-16, %esp
3813 ; SSE-32-NEXT: subl $16, %esp
3814 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
3815 ; SSE-32-NEXT: movaps %xmm2, %xmm4
3816 ; SSE-32-NEXT: cmpltps %xmm3, %xmm4
3817 ; SSE-32-NEXT: movaps %xmm2, %xmm4
3818 ; SSE-32-NEXT: cmpneqps %xmm3, %xmm4
3819 ; SSE-32-NEXT: cmpordps %xmm2, %xmm3
3820 ; SSE-32-NEXT: andps %xmm4, %xmm3
3821 ; SSE-32-NEXT: andps %xmm3, %xmm0
3822 ; SSE-32-NEXT: andnps %xmm1, %xmm3
3823 ; SSE-32-NEXT: orps %xmm3, %xmm0
3824 ; SSE-32-NEXT: movl %ebp, %esp
3825 ; SSE-32-NEXT: popl %ebp
3826 ; SSE-32-NEXT: retl
3828 ; SSE-64-LABEL: test_v4f32_one_s:
3829 ; SSE-64: # %bb.0:
3830 ; SSE-64-NEXT: movaps %xmm2, %xmm4
3831 ; SSE-64-NEXT: cmpltps %xmm3, %xmm4
3832 ; SSE-64-NEXT: movaps %xmm2, %xmm4
3833 ; SSE-64-NEXT: cmpneqps %xmm3, %xmm4
3834 ; SSE-64-NEXT: cmpordps %xmm3, %xmm2
3835 ; SSE-64-NEXT: andps %xmm2, %xmm4
3836 ; SSE-64-NEXT: andps %xmm4, %xmm0
3837 ; SSE-64-NEXT: andnps %xmm1, %xmm4
3838 ; SSE-64-NEXT: orps %xmm4, %xmm0
3839 ; SSE-64-NEXT: retq
3912 ; SSE-32-LABEL: test_v4f32_ord_s:
3913 ; SSE-32: # %bb.0:
3914 ; SSE-32-NEXT: pushl %ebp
3915 ; SSE-32-NEXT: movl %esp, %ebp
3916 ; SSE-32-NEXT: andl $-16, %esp
3917 ; SSE-32-NEXT: subl $16, %esp
3918 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
3919 ; SSE-32-NEXT: movaps %xmm2, %xmm4
3920 ; SSE-32-NEXT: cmpltps %xmm3, %xmm4
3921 ; SSE-32-NEXT: cmpordps %xmm2, %xmm3
3922 ; SSE-32-NEXT: andps %xmm3, %xmm0
3923 ; SSE-32-NEXT: andnps %xmm1, %xmm3
3924 ; SSE-32-NEXT: orps %xmm3, %xmm0
3925 ; SSE-32-NEXT: movl %ebp, %esp
3926 ; SSE-32-NEXT: popl %ebp
3927 ; SSE-32-NEXT: retl
3929 ; SSE-64-LABEL: test_v4f32_ord_s:
3930 ; SSE-64: # %bb.0:
3931 ; SSE-64-NEXT: movaps %xmm2, %xmm4
3932 ; SSE-64-NEXT: cmpltps %xmm3, %xmm4
3933 ; SSE-64-NEXT: cmpordps %xmm3, %xmm2
3934 ; SSE-64-NEXT: andps %xmm2, %xmm0
3935 ; SSE-64-NEXT: andnps %xmm1, %xmm2
3936 ; SSE-64-NEXT: orps %xmm2, %xmm0
3937 ; SSE-64-NEXT: retq
4010 ; SSE-32-LABEL: test_v4f32_ueq_s:
4011 ; SSE-32: # %bb.0:
4012 ; SSE-32-NEXT: pushl %ebp
4013 ; SSE-32-NEXT: movl %esp, %ebp
4014 ; SSE-32-NEXT: andl $-16, %esp
4015 ; SSE-32-NEXT: subl $16, %esp
4016 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
4017 ; SSE-32-NEXT: movaps %xmm2, %xmm4
4018 ; SSE-32-NEXT: cmpltps %xmm3, %xmm4
4019 ; SSE-32-NEXT: movaps %xmm2, %xmm4
4020 ; SSE-32-NEXT: cmpeqps %xmm3, %xmm4
4021 ; SSE-32-NEXT: cmpunordps %xmm2, %xmm3
4022 ; SSE-32-NEXT: orps %xmm4, %xmm3
4023 ; SSE-32-NEXT: andps %xmm3, %xmm0
4024 ; SSE-32-NEXT: andnps %xmm1, %xmm3
4025 ; SSE-32-NEXT: orps %xmm3, %xmm0
4026 ; SSE-32-NEXT: movl %ebp, %esp
4027 ; SSE-32-NEXT: popl %ebp
4028 ; SSE-32-NEXT: retl
4030 ; SSE-64-LABEL: test_v4f32_ueq_s:
4031 ; SSE-64: # %bb.0:
4032 ; SSE-64-NEXT: movaps %xmm2, %xmm4
4033 ; SSE-64-NEXT: cmpltps %xmm3, %xmm4
4034 ; SSE-64-NEXT: movaps %xmm2, %xmm4
4035 ; SSE-64-NEXT: cmpeqps %xmm3, %xmm4
4036 ; SSE-64-NEXT: cmpunordps %xmm3, %xmm2
4037 ; SSE-64-NEXT: orps %xmm2, %xmm4
4038 ; SSE-64-NEXT: andps %xmm4, %xmm0
4039 ; SSE-64-NEXT: andnps %xmm1, %xmm4
4040 ; SSE-64-NEXT: orps %xmm4, %xmm0
4041 ; SSE-64-NEXT: retq
4114 ; SSE-32-LABEL: test_v4f32_ugt_s:
4115 ; SSE-32: # %bb.0:
4116 ; SSE-32-NEXT: pushl %ebp
4117 ; SSE-32-NEXT: movl %esp, %ebp
4118 ; SSE-32-NEXT: andl $-16, %esp
4119 ; SSE-32-NEXT: subl $16, %esp
4120 ; SSE-32-NEXT: cmpnleps 8(%ebp), %xmm2
4121 ; SSE-32-NEXT: andps %xmm2, %xmm0
4122 ; SSE-32-NEXT: andnps %xmm1, %xmm2
4123 ; SSE-32-NEXT: orps %xmm2, %xmm0
4124 ; SSE-32-NEXT: movl %ebp, %esp
4125 ; SSE-32-NEXT: popl %ebp
4126 ; SSE-32-NEXT: retl
4128 ; SSE-64-LABEL: test_v4f32_ugt_s:
4129 ; SSE-64: # %bb.0:
4130 ; SSE-64-NEXT: cmpnleps %xmm3, %xmm2
4131 ; SSE-64-NEXT: andps %xmm2, %xmm0
4132 ; SSE-64-NEXT: andnps %xmm1, %xmm2
4133 ; SSE-64-NEXT: orps %xmm2, %xmm0
4134 ; SSE-64-NEXT: retq
4207 ; SSE-32-LABEL: test_v4f32_uge_s:
4208 ; SSE-32: # %bb.0:
4209 ; SSE-32-NEXT: pushl %ebp
4210 ; SSE-32-NEXT: movl %esp, %ebp
4211 ; SSE-32-NEXT: andl $-16, %esp
4212 ; SSE-32-NEXT: subl $16, %esp
4213 ; SSE-32-NEXT: cmpnltps 8(%ebp), %xmm2
4214 ; SSE-32-NEXT: andps %xmm2, %xmm0
4215 ; SSE-32-NEXT: andnps %xmm1, %xmm2
4216 ; SSE-32-NEXT: orps %xmm2, %xmm0
4217 ; SSE-32-NEXT: movl %ebp, %esp
4218 ; SSE-32-NEXT: popl %ebp
4219 ; SSE-32-NEXT: retl
4221 ; SSE-64-LABEL: test_v4f32_uge_s:
4222 ; SSE-64: # %bb.0:
4223 ; SSE-64-NEXT: cmpnltps %xmm3, %xmm2
4224 ; SSE-64-NEXT: andps %xmm2, %xmm0
4225 ; SSE-64-NEXT: andnps %xmm1, %xmm2
4226 ; SSE-64-NEXT: orps %xmm2, %xmm0
4227 ; SSE-64-NEXT: retq
4300 ; SSE-32-LABEL: test_v4f32_ult_s:
4301 ; SSE-32: # %bb.0:
4302 ; SSE-32-NEXT: pushl %ebp
4303 ; SSE-32-NEXT: movl %esp, %ebp
4304 ; SSE-32-NEXT: andl $-16, %esp
4305 ; SSE-32-NEXT: subl $16, %esp
4306 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
4307 ; SSE-32-NEXT: cmpnleps %xmm2, %xmm3
4308 ; SSE-32-NEXT: andps %xmm3, %xmm0
4309 ; SSE-32-NEXT: andnps %xmm1, %xmm3
4310 ; SSE-32-NEXT: orps %xmm3, %xmm0
4311 ; SSE-32-NEXT: movl %ebp, %esp
4312 ; SSE-32-NEXT: popl %ebp
4313 ; SSE-32-NEXT: retl
4315 ; SSE-64-LABEL: test_v4f32_ult_s:
4316 ; SSE-64: # %bb.0:
4317 ; SSE-64-NEXT: cmpnleps %xmm2, %xmm3
4318 ; SSE-64-NEXT: andps %xmm3, %xmm0
4319 ; SSE-64-NEXT: andnps %xmm1, %xmm3
4320 ; SSE-64-NEXT: orps %xmm3, %xmm0
4321 ; SSE-64-NEXT: retq
4396 ; SSE-32-LABEL: test_v4f32_ule_s:
4397 ; SSE-32: # %bb.0:
4398 ; SSE-32-NEXT: pushl %ebp
4399 ; SSE-32-NEXT: movl %esp, %ebp
4400 ; SSE-32-NEXT: andl $-16, %esp
4401 ; SSE-32-NEXT: subl $16, %esp
4402 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
4403 ; SSE-32-NEXT: cmpnltps %xmm2, %xmm3
4404 ; SSE-32-NEXT: andps %xmm3, %xmm0
4405 ; SSE-32-NEXT: andnps %xmm1, %xmm3
4406 ; SSE-32-NEXT: orps %xmm3, %xmm0
4407 ; SSE-32-NEXT: movl %ebp, %esp
4408 ; SSE-32-NEXT: popl %ebp
4409 ; SSE-32-NEXT: retl
4411 ; SSE-64-LABEL: test_v4f32_ule_s:
4412 ; SSE-64: # %bb.0:
4413 ; SSE-64-NEXT: cmpnltps %xmm2, %xmm3
4414 ; SSE-64-NEXT: andps %xmm3, %xmm0
4415 ; SSE-64-NEXT: andnps %xmm1, %xmm3
4416 ; SSE-64-NEXT: orps %xmm3, %xmm0
4417 ; SSE-64-NEXT: retq
4492 ; SSE-32-LABEL: test_v4f32_une_s:
4493 ; SSE-32: # %bb.0:
4494 ; SSE-32-NEXT: pushl %ebp
4495 ; SSE-32-NEXT: movl %esp, %ebp
4496 ; SSE-32-NEXT: andl $-16, %esp
4497 ; SSE-32-NEXT: subl $16, %esp
4498 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
4499 ; SSE-32-NEXT: movaps %xmm2, %xmm4
4500 ; SSE-32-NEXT: cmpltps %xmm3, %xmm4
4501 ; SSE-32-NEXT: cmpneqps %xmm2, %xmm3
4502 ; SSE-32-NEXT: andps %xmm3, %xmm0
4503 ; SSE-32-NEXT: andnps %xmm1, %xmm3
4504 ; SSE-32-NEXT: orps %xmm3, %xmm0
4505 ; SSE-32-NEXT: movl %ebp, %esp
4506 ; SSE-32-NEXT: popl %ebp
4507 ; SSE-32-NEXT: retl
4509 ; SSE-64-LABEL: test_v4f32_une_s:
4510 ; SSE-64: # %bb.0:
4511 ; SSE-64-NEXT: movaps %xmm2, %xmm4
4512 ; SSE-64-NEXT: cmpltps %xmm3, %xmm4
4513 ; SSE-64-NEXT: cmpneqps %xmm3, %xmm2
4514 ; SSE-64-NEXT: andps %xmm2, %xmm0
4515 ; SSE-64-NEXT: andnps %xmm1, %xmm2
4516 ; SSE-64-NEXT: orps %xmm2, %xmm0
4517 ; SSE-64-NEXT: retq
4590 ; SSE-32-LABEL: test_v4f32_uno_s:
4591 ; SSE-32: # %bb.0:
4592 ; SSE-32-NEXT: pushl %ebp
4593 ; SSE-32-NEXT: movl %esp, %ebp
4594 ; SSE-32-NEXT: andl $-16, %esp
4595 ; SSE-32-NEXT: subl $16, %esp
4596 ; SSE-32-NEXT: movaps 8(%ebp), %xmm3
4597 ; SSE-32-NEXT: movaps %xmm2, %xmm4
4598 ; SSE-32-NEXT: cmpltps %xmm3, %xmm4
4599 ; SSE-32-NEXT: cmpunordps %xmm2, %xmm3
4600 ; SSE-32-NEXT: andps %xmm3, %xmm0
4601 ; SSE-32-NEXT: andnps %xmm1, %xmm3
4602 ; SSE-32-NEXT: orps %xmm3, %xmm0
4603 ; SSE-32-NEXT: movl %ebp, %esp
4604 ; SSE-32-NEXT: popl %ebp
4605 ; SSE-32-NEXT: retl
4607 ; SSE-64-LABEL: test_v4f32_uno_s:
4608 ; SSE-64: # %bb.0:
4609 ; SSE-64-NEXT: movaps %xmm2, %xmm4
4610 ; SSE-64-NEXT: cmpltps %xmm3, %xmm4
4611 ; SSE-64-NEXT: cmpunordps %xmm3, %xmm2
4612 ; SSE-64-NEXT: andps %xmm2, %xmm0
4613 ; SSE-64-NEXT: andnps %xmm1, %xmm2
4614 ; SSE-64-NEXT: orps %xmm2, %xmm0
4615 ; SSE-64-NEXT: retq
4688 ; SSE-32-LABEL: test_v2f64_oeq_s:
4689 ; SSE-32: # %bb.0:
4690 ; SSE-32-NEXT: pushl %ebp
4691 ; SSE-32-NEXT: movl %esp, %ebp
4692 ; SSE-32-NEXT: andl $-16, %esp
4693 ; SSE-32-NEXT: subl $16, %esp
4694 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
4695 ; SSE-32-NEXT: movapd %xmm2, %xmm4
4696 ; SSE-32-NEXT: cmpltpd %xmm3, %xmm4
4697 ; SSE-32-NEXT: cmpeqpd %xmm2, %xmm3
4698 ; SSE-32-NEXT: andpd %xmm3, %xmm0
4699 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
4700 ; SSE-32-NEXT: orpd %xmm3, %xmm0
4701 ; SSE-32-NEXT: movl %ebp, %esp
4702 ; SSE-32-NEXT: popl %ebp
4703 ; SSE-32-NEXT: retl
4705 ; SSE-64-LABEL: test_v2f64_oeq_s:
4706 ; SSE-64: # %bb.0:
4707 ; SSE-64-NEXT: movapd %xmm2, %xmm4
4708 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm4
4709 ; SSE-64-NEXT: cmpeqpd %xmm3, %xmm2
4710 ; SSE-64-NEXT: andpd %xmm2, %xmm0
4711 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
4712 ; SSE-64-NEXT: orpd %xmm2, %xmm0
4713 ; SSE-64-NEXT: retq
4786 ; SSE-32-LABEL: test_v2f64_ogt_s:
4787 ; SSE-32: # %bb.0:
4788 ; SSE-32-NEXT: pushl %ebp
4789 ; SSE-32-NEXT: movl %esp, %ebp
4790 ; SSE-32-NEXT: andl $-16, %esp
4791 ; SSE-32-NEXT: subl $16, %esp
4792 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
4793 ; SSE-32-NEXT: cmpltpd %xmm2, %xmm3
4794 ; SSE-32-NEXT: andpd %xmm3, %xmm0
4795 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
4796 ; SSE-32-NEXT: orpd %xmm3, %xmm0
4797 ; SSE-32-NEXT: movl %ebp, %esp
4798 ; SSE-32-NEXT: popl %ebp
4799 ; SSE-32-NEXT: retl
4801 ; SSE-64-LABEL: test_v2f64_ogt_s:
4802 ; SSE-64: # %bb.0:
4803 ; SSE-64-NEXT: cmpltpd %xmm2, %xmm3
4804 ; SSE-64-NEXT: andpd %xmm3, %xmm0
4805 ; SSE-64-NEXT: andnpd %xmm1, %xmm3
4806 ; SSE-64-NEXT: orpd %xmm3, %xmm0
4807 ; SSE-64-NEXT: retq
4882 ; SSE-32-LABEL: test_v2f64_oge_s:
4883 ; SSE-32: # %bb.0:
4884 ; SSE-32-NEXT: pushl %ebp
4885 ; SSE-32-NEXT: movl %esp, %ebp
4886 ; SSE-32-NEXT: andl $-16, %esp
4887 ; SSE-32-NEXT: subl $16, %esp
4888 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
4889 ; SSE-32-NEXT: cmplepd %xmm2, %xmm3
4890 ; SSE-32-NEXT: andpd %xmm3, %xmm0
4891 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
4892 ; SSE-32-NEXT: orpd %xmm3, %xmm0
4893 ; SSE-32-NEXT: movl %ebp, %esp
4894 ; SSE-32-NEXT: popl %ebp
4895 ; SSE-32-NEXT: retl
4897 ; SSE-64-LABEL: test_v2f64_oge_s:
4898 ; SSE-64: # %bb.0:
4899 ; SSE-64-NEXT: cmplepd %xmm2, %xmm3
4900 ; SSE-64-NEXT: andpd %xmm3, %xmm0
4901 ; SSE-64-NEXT: andnpd %xmm1, %xmm3
4902 ; SSE-64-NEXT: orpd %xmm3, %xmm0
4903 ; SSE-64-NEXT: retq
4978 ; SSE-32-LABEL: test_v2f64_olt_s:
4979 ; SSE-32: # %bb.0:
4980 ; SSE-32-NEXT: pushl %ebp
4981 ; SSE-32-NEXT: movl %esp, %ebp
4982 ; SSE-32-NEXT: andl $-16, %esp
4983 ; SSE-32-NEXT: subl $16, %esp
4984 ; SSE-32-NEXT: cmpltpd 8(%ebp), %xmm2
4985 ; SSE-32-NEXT: andpd %xmm2, %xmm0
4986 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
4987 ; SSE-32-NEXT: orpd %xmm2, %xmm0
4988 ; SSE-32-NEXT: movl %ebp, %esp
4989 ; SSE-32-NEXT: popl %ebp
4990 ; SSE-32-NEXT: retl
4992 ; SSE-64-LABEL: test_v2f64_olt_s:
4993 ; SSE-64: # %bb.0:
4994 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm2
4995 ; SSE-64-NEXT: andpd %xmm2, %xmm0
4996 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
4997 ; SSE-64-NEXT: orpd %xmm2, %xmm0
4998 ; SSE-64-NEXT: retq
5071 ; SSE-32-LABEL: test_v2f64_ole_s:
5072 ; SSE-32: # %bb.0:
5073 ; SSE-32-NEXT: pushl %ebp
5074 ; SSE-32-NEXT: movl %esp, %ebp
5075 ; SSE-32-NEXT: andl $-16, %esp
5076 ; SSE-32-NEXT: subl $16, %esp
5077 ; SSE-32-NEXT: cmplepd 8(%ebp), %xmm2
5078 ; SSE-32-NEXT: andpd %xmm2, %xmm0
5079 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
5080 ; SSE-32-NEXT: orpd %xmm2, %xmm0
5081 ; SSE-32-NEXT: movl %ebp, %esp
5082 ; SSE-32-NEXT: popl %ebp
5083 ; SSE-32-NEXT: retl
5085 ; SSE-64-LABEL: test_v2f64_ole_s:
5086 ; SSE-64: # %bb.0:
5087 ; SSE-64-NEXT: cmplepd %xmm3, %xmm2
5088 ; SSE-64-NEXT: andpd %xmm2, %xmm0
5089 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
5090 ; SSE-64-NEXT: orpd %xmm2, %xmm0
5091 ; SSE-64-NEXT: retq
5164 ; SSE-32-LABEL: test_v2f64_one_s:
5165 ; SSE-32: # %bb.0:
5166 ; SSE-32-NEXT: pushl %ebp
5167 ; SSE-32-NEXT: movl %esp, %ebp
5168 ; SSE-32-NEXT: andl $-16, %esp
5169 ; SSE-32-NEXT: subl $16, %esp
5170 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5171 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5172 ; SSE-32-NEXT: cmpltpd %xmm3, %xmm4
5173 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5174 ; SSE-32-NEXT: cmpneqpd %xmm3, %xmm4
5175 ; SSE-32-NEXT: cmpordpd %xmm2, %xmm3
5176 ; SSE-32-NEXT: andpd %xmm4, %xmm3
5177 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5178 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5179 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5180 ; SSE-32-NEXT: movl %ebp, %esp
5181 ; SSE-32-NEXT: popl %ebp
5182 ; SSE-32-NEXT: retl
5184 ; SSE-64-LABEL: test_v2f64_one_s:
5185 ; SSE-64: # %bb.0:
5186 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5187 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm4
5188 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5189 ; SSE-64-NEXT: cmpneqpd %xmm3, %xmm4
5190 ; SSE-64-NEXT: cmpordpd %xmm3, %xmm2
5191 ; SSE-64-NEXT: andpd %xmm2, %xmm4
5192 ; SSE-64-NEXT: andpd %xmm4, %xmm0
5193 ; SSE-64-NEXT: andnpd %xmm1, %xmm4
5194 ; SSE-64-NEXT: orpd %xmm4, %xmm0
5195 ; SSE-64-NEXT: retq
5268 ; SSE-32-LABEL: test_v2f64_ord_s:
5269 ; SSE-32: # %bb.0:
5270 ; SSE-32-NEXT: pushl %ebp
5271 ; SSE-32-NEXT: movl %esp, %ebp
5272 ; SSE-32-NEXT: andl $-16, %esp
5273 ; SSE-32-NEXT: subl $16, %esp
5274 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5275 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5276 ; SSE-32-NEXT: cmpltpd %xmm3, %xmm4
5277 ; SSE-32-NEXT: cmpordpd %xmm2, %xmm3
5278 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5279 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5280 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5281 ; SSE-32-NEXT: movl %ebp, %esp
5282 ; SSE-32-NEXT: popl %ebp
5283 ; SSE-32-NEXT: retl
5285 ; SSE-64-LABEL: test_v2f64_ord_s:
5286 ; SSE-64: # %bb.0:
5287 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5288 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm4
5289 ; SSE-64-NEXT: cmpordpd %xmm3, %xmm2
5290 ; SSE-64-NEXT: andpd %xmm2, %xmm0
5291 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
5292 ; SSE-64-NEXT: orpd %xmm2, %xmm0
5293 ; SSE-64-NEXT: retq
5366 ; SSE-32-LABEL: test_v2f64_ueq_s:
5367 ; SSE-32: # %bb.0:
5368 ; SSE-32-NEXT: pushl %ebp
5369 ; SSE-32-NEXT: movl %esp, %ebp
5370 ; SSE-32-NEXT: andl $-16, %esp
5371 ; SSE-32-NEXT: subl $16, %esp
5372 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5373 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5374 ; SSE-32-NEXT: cmpltpd %xmm3, %xmm4
5375 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5376 ; SSE-32-NEXT: cmpeqpd %xmm3, %xmm4
5377 ; SSE-32-NEXT: cmpunordpd %xmm2, %xmm3
5378 ; SSE-32-NEXT: orpd %xmm4, %xmm3
5379 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5380 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5381 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5382 ; SSE-32-NEXT: movl %ebp, %esp
5383 ; SSE-32-NEXT: popl %ebp
5384 ; SSE-32-NEXT: retl
5386 ; SSE-64-LABEL: test_v2f64_ueq_s:
5387 ; SSE-64: # %bb.0:
5388 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5389 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm4
5390 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5391 ; SSE-64-NEXT: cmpeqpd %xmm3, %xmm4
5392 ; SSE-64-NEXT: cmpunordpd %xmm3, %xmm2
5393 ; SSE-64-NEXT: orpd %xmm2, %xmm4
5394 ; SSE-64-NEXT: andpd %xmm4, %xmm0
5395 ; SSE-64-NEXT: andnpd %xmm1, %xmm4
5396 ; SSE-64-NEXT: orpd %xmm4, %xmm0
5397 ; SSE-64-NEXT: retq
5470 ; SSE-32-LABEL: test_v2f64_ugt_s:
5471 ; SSE-32: # %bb.0:
5472 ; SSE-32-NEXT: pushl %ebp
5473 ; SSE-32-NEXT: movl %esp, %ebp
5474 ; SSE-32-NEXT: andl $-16, %esp
5475 ; SSE-32-NEXT: subl $16, %esp
5476 ; SSE-32-NEXT: cmpnlepd 8(%ebp), %xmm2
5477 ; SSE-32-NEXT: andpd %xmm2, %xmm0
5478 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
5479 ; SSE-32-NEXT: orpd %xmm2, %xmm0
5480 ; SSE-32-NEXT: movl %ebp, %esp
5481 ; SSE-32-NEXT: popl %ebp
5482 ; SSE-32-NEXT: retl
5484 ; SSE-64-LABEL: test_v2f64_ugt_s:
5485 ; SSE-64: # %bb.0:
5486 ; SSE-64-NEXT: cmpnlepd %xmm3, %xmm2
5487 ; SSE-64-NEXT: andpd %xmm2, %xmm0
5488 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
5489 ; SSE-64-NEXT: orpd %xmm2, %xmm0
5490 ; SSE-64-NEXT: retq
5563 ; SSE-32-LABEL: test_v2f64_uge_s:
5564 ; SSE-32: # %bb.0:
5565 ; SSE-32-NEXT: pushl %ebp
5566 ; SSE-32-NEXT: movl %esp, %ebp
5567 ; SSE-32-NEXT: andl $-16, %esp
5568 ; SSE-32-NEXT: subl $16, %esp
5569 ; SSE-32-NEXT: cmpnltpd 8(%ebp), %xmm2
5570 ; SSE-32-NEXT: andpd %xmm2, %xmm0
5571 ; SSE-32-NEXT: andnpd %xmm1, %xmm2
5572 ; SSE-32-NEXT: orpd %xmm2, %xmm0
5573 ; SSE-32-NEXT: movl %ebp, %esp
5574 ; SSE-32-NEXT: popl %ebp
5575 ; SSE-32-NEXT: retl
5577 ; SSE-64-LABEL: test_v2f64_uge_s:
5578 ; SSE-64: # %bb.0:
5579 ; SSE-64-NEXT: cmpnltpd %xmm3, %xmm2
5580 ; SSE-64-NEXT: andpd %xmm2, %xmm0
5581 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
5582 ; SSE-64-NEXT: orpd %xmm2, %xmm0
5583 ; SSE-64-NEXT: retq
5656 ; SSE-32-LABEL: test_v2f64_ult_s:
5657 ; SSE-32: # %bb.0:
5658 ; SSE-32-NEXT: pushl %ebp
5659 ; SSE-32-NEXT: movl %esp, %ebp
5660 ; SSE-32-NEXT: andl $-16, %esp
5661 ; SSE-32-NEXT: subl $16, %esp
5662 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5663 ; SSE-32-NEXT: cmpnlepd %xmm2, %xmm3
5664 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5665 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5666 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5667 ; SSE-32-NEXT: movl %ebp, %esp
5668 ; SSE-32-NEXT: popl %ebp
5669 ; SSE-32-NEXT: retl
5671 ; SSE-64-LABEL: test_v2f64_ult_s:
5672 ; SSE-64: # %bb.0:
5673 ; SSE-64-NEXT: cmpnlepd %xmm2, %xmm3
5674 ; SSE-64-NEXT: andpd %xmm3, %xmm0
5675 ; SSE-64-NEXT: andnpd %xmm1, %xmm3
5676 ; SSE-64-NEXT: orpd %xmm3, %xmm0
5677 ; SSE-64-NEXT: retq
5752 ; SSE-32-LABEL: test_v2f64_ule_s:
5753 ; SSE-32: # %bb.0:
5754 ; SSE-32-NEXT: pushl %ebp
5755 ; SSE-32-NEXT: movl %esp, %ebp
5756 ; SSE-32-NEXT: andl $-16, %esp
5757 ; SSE-32-NEXT: subl $16, %esp
5758 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5759 ; SSE-32-NEXT: cmpnltpd %xmm2, %xmm3
5760 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5761 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5762 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5763 ; SSE-32-NEXT: movl %ebp, %esp
5764 ; SSE-32-NEXT: popl %ebp
5765 ; SSE-32-NEXT: retl
5767 ; SSE-64-LABEL: test_v2f64_ule_s:
5768 ; SSE-64: # %bb.0:
5769 ; SSE-64-NEXT: cmpnltpd %xmm2, %xmm3
5770 ; SSE-64-NEXT: andpd %xmm3, %xmm0
5771 ; SSE-64-NEXT: andnpd %xmm1, %xmm3
5772 ; SSE-64-NEXT: orpd %xmm3, %xmm0
5773 ; SSE-64-NEXT: retq
5848 ; SSE-32-LABEL: test_v2f64_une_s:
5849 ; SSE-32: # %bb.0:
5850 ; SSE-32-NEXT: pushl %ebp
5851 ; SSE-32-NEXT: movl %esp, %ebp
5852 ; SSE-32-NEXT: andl $-16, %esp
5853 ; SSE-32-NEXT: subl $16, %esp
5854 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5855 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5856 ; SSE-32-NEXT: cmpltpd %xmm3, %xmm4
5857 ; SSE-32-NEXT: cmpneqpd %xmm2, %xmm3
5858 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5859 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5860 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5861 ; SSE-32-NEXT: movl %ebp, %esp
5862 ; SSE-32-NEXT: popl %ebp
5863 ; SSE-32-NEXT: retl
5865 ; SSE-64-LABEL: test_v2f64_une_s:
5866 ; SSE-64: # %bb.0:
5867 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5868 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm4
5869 ; SSE-64-NEXT: cmpneqpd %xmm3, %xmm2
5870 ; SSE-64-NEXT: andpd %xmm2, %xmm0
5871 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
5872 ; SSE-64-NEXT: orpd %xmm2, %xmm0
5873 ; SSE-64-NEXT: retq
5946 ; SSE-32-LABEL: test_v2f64_uno_s:
5947 ; SSE-32: # %bb.0:
5948 ; SSE-32-NEXT: pushl %ebp
5949 ; SSE-32-NEXT: movl %esp, %ebp
5950 ; SSE-32-NEXT: andl $-16, %esp
5951 ; SSE-32-NEXT: subl $16, %esp
5952 ; SSE-32-NEXT: movapd 8(%ebp), %xmm3
5953 ; SSE-32-NEXT: movapd %xmm2, %xmm4
5954 ; SSE-32-NEXT: cmpltpd %xmm3, %xmm4
5955 ; SSE-32-NEXT: cmpunordpd %xmm2, %xmm3
5956 ; SSE-32-NEXT: andpd %xmm3, %xmm0
5957 ; SSE-32-NEXT: andnpd %xmm1, %xmm3
5958 ; SSE-32-NEXT: orpd %xmm3, %xmm0
5959 ; SSE-32-NEXT: movl %ebp, %esp
5960 ; SSE-32-NEXT: popl %ebp
5961 ; SSE-32-NEXT: retl
5963 ; SSE-64-LABEL: test_v2f64_uno_s:
5964 ; SSE-64: # %bb.0:
5965 ; SSE-64-NEXT: movapd %xmm2, %xmm4
5966 ; SSE-64-NEXT: cmpltpd %xmm3, %xmm4
5967 ; SSE-64-NEXT: cmpunordpd %xmm3, %xmm2
5968 ; SSE-64-NEXT: andpd %xmm2, %xmm0
5969 ; SSE-64-NEXT: andnpd %xmm1, %xmm2
5970 ; SSE-64-NEXT: orpd %xmm2, %xmm0
5971 ; SSE-64-NEXT: retq