Lines Matching refs:SSE

2 …verify-machineinstrs -O0                                          | FileCheck %s --check-prefix=SSE
3 …verify-machineinstrs -O0 -fast-isel -fast-isel-abort=1 | FileCheck %s --check-prefix=SSE
9 ; Test all cmp predicates that can be used with SSE.
12 ; SSE-LABEL: select_fcmp_oeq_f32:
13 ; SSE: # %bb.0:
14 ; SSE-NEXT: cmpeqss %xmm1, %xmm0
15 ; SSE-NEXT: movaps %xmm0, %xmm1
16 ; SSE-NEXT: andps %xmm2, %xmm1
17 ; SSE-NEXT: andnps %xmm3, %xmm0
18 ; SSE-NEXT: orps %xmm1, %xmm0
19 ; SSE-NEXT: retq
39 ; SSE-LABEL: select_fcmp_oeq_f64:
40 ; SSE: # %bb.0:
41 ; SSE-NEXT: cmpeqsd %xmm1, %xmm0
42 ; SSE-NEXT: movaps %xmm0, %xmm1
43 ; SSE-NEXT: andpd %xmm2, %xmm1
44 ; SSE-NEXT: andnpd %xmm3, %xmm0
45 ; SSE-NEXT: orpd %xmm1, %xmm0
46 ; SSE-NEXT: retq
66 ; SSE-LABEL: select_fcmp_ogt_f32:
67 ; SSE: # %bb.0:
68 ; SSE-NEXT: movss %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
69 ; SSE-NEXT: movaps %xmm0, %xmm1
70 ; SSE-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
71 ; SSE-NEXT: # xmm0 = mem[0],zero,zero,zero
72 ; SSE-NEXT: cmpltss %xmm1, %xmm0
73 ; SSE-NEXT: movaps %xmm0, %xmm1
74 ; SSE-NEXT: andps %xmm2, %xmm1
75 ; SSE-NEXT: andnps %xmm3, %xmm0
76 ; SSE-NEXT: orps %xmm1, %xmm0
77 ; SSE-NEXT: retq
97 ; SSE-LABEL: select_fcmp_ogt_f64:
98 ; SSE: # %bb.0:
99 ; SSE-NEXT: movsd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
100 ; SSE-NEXT: movaps %xmm0, %xmm1
101 ; SSE-NEXT: movsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 8-byte Reload
102 ; SSE-NEXT: # xmm0 = mem[0],zero
103 ; SSE-NEXT: cmpltsd %xmm1, %xmm0
104 ; SSE-NEXT: movaps %xmm0, %xmm1
105 ; SSE-NEXT: andpd %xmm2, %xmm1
106 ; SSE-NEXT: andnpd %xmm3, %xmm0
107 ; SSE-NEXT: orpd %xmm1, %xmm0
108 ; SSE-NEXT: retq
128 ; SSE-LABEL: select_fcmp_oge_f32:
129 ; SSE: # %bb.0:
130 ; SSE-NEXT: movss %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
131 ; SSE-NEXT: movaps %xmm0, %xmm1
132 ; SSE-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
133 ; SSE-NEXT: # xmm0 = mem[0],zero,zero,zero
134 ; SSE-NEXT: cmpless %xmm1, %xmm0
135 ; SSE-NEXT: movaps %xmm0, %xmm1
136 ; SSE-NEXT: andps %xmm2, %xmm1
137 ; SSE-NEXT: andnps %xmm3, %xmm0
138 ; SSE-NEXT: orps %xmm1, %xmm0
139 ; SSE-NEXT: retq
159 ; SSE-LABEL: select_fcmp_oge_f64:
160 ; SSE: # %bb.0:
161 ; SSE-NEXT: movsd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
162 ; SSE-NEXT: movaps %xmm0, %xmm1
163 ; SSE-NEXT: movsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 8-byte Reload
164 ; SSE-NEXT: # xmm0 = mem[0],zero
165 ; SSE-NEXT: cmplesd %xmm1, %xmm0
166 ; SSE-NEXT: movaps %xmm0, %xmm1
167 ; SSE-NEXT: andpd %xmm2, %xmm1
168 ; SSE-NEXT: andnpd %xmm3, %xmm0
169 ; SSE-NEXT: orpd %xmm1, %xmm0
170 ; SSE-NEXT: retq
190 ; SSE-LABEL: select_fcmp_olt_f32:
191 ; SSE: # %bb.0:
192 ; SSE-NEXT: cmpltss %xmm1, %xmm0
193 ; SSE-NEXT: movaps %xmm0, %xmm1
194 ; SSE-NEXT: andps %xmm2, %xmm1
195 ; SSE-NEXT: andnps %xmm3, %xmm0
196 ; SSE-NEXT: orps %xmm1, %xmm0
197 ; SSE-NEXT: retq
217 ; SSE-LABEL: select_fcmp_olt_f64:
218 ; SSE: # %bb.0:
219 ; SSE-NEXT: cmpltsd %xmm1, %xmm0
220 ; SSE-NEXT: movaps %xmm0, %xmm1
221 ; SSE-NEXT: andpd %xmm2, %xmm1
222 ; SSE-NEXT: andnpd %xmm3, %xmm0
223 ; SSE-NEXT: orpd %xmm1, %xmm0
224 ; SSE-NEXT: retq
244 ; SSE-LABEL: select_fcmp_ole_f32:
245 ; SSE: # %bb.0:
246 ; SSE-NEXT: cmpless %xmm1, %xmm0
247 ; SSE-NEXT: movaps %xmm0, %xmm1
248 ; SSE-NEXT: andps %xmm2, %xmm1
249 ; SSE-NEXT: andnps %xmm3, %xmm0
250 ; SSE-NEXT: orps %xmm1, %xmm0
251 ; SSE-NEXT: retq
271 ; SSE-LABEL: select_fcmp_ole_f64:
272 ; SSE: # %bb.0:
273 ; SSE-NEXT: cmplesd %xmm1, %xmm0
274 ; SSE-NEXT: movaps %xmm0, %xmm1
275 ; SSE-NEXT: andpd %xmm2, %xmm1
276 ; SSE-NEXT: andnpd %xmm3, %xmm0
277 ; SSE-NEXT: orpd %xmm1, %xmm0
278 ; SSE-NEXT: retq
298 ; SSE-LABEL: select_fcmp_ord_f32:
299 ; SSE: # %bb.0:
300 ; SSE-NEXT: cmpordss %xmm1, %xmm0
301 ; SSE-NEXT: movaps %xmm0, %xmm1
302 ; SSE-NEXT: andps %xmm2, %xmm1
303 ; SSE-NEXT: andnps %xmm3, %xmm0
304 ; SSE-NEXT: orps %xmm1, %xmm0
305 ; SSE-NEXT: retq
325 ; SSE-LABEL: select_fcmp_ord_f64:
326 ; SSE: # %bb.0:
327 ; SSE-NEXT: cmpordsd %xmm1, %xmm0
328 ; SSE-NEXT: movaps %xmm0, %xmm1
329 ; SSE-NEXT: andpd %xmm2, %xmm1
330 ; SSE-NEXT: andnpd %xmm3, %xmm0
331 ; SSE-NEXT: orpd %xmm1, %xmm0
332 ; SSE-NEXT: retq
352 ; SSE-LABEL: select_fcmp_uno_f32:
353 ; SSE: # %bb.0:
354 ; SSE-NEXT: cmpunordss %xmm1, %xmm0
355 ; SSE-NEXT: movaps %xmm0, %xmm1
356 ; SSE-NEXT: andps %xmm2, %xmm1
357 ; SSE-NEXT: andnps %xmm3, %xmm0
358 ; SSE-NEXT: orps %xmm1, %xmm0
359 ; SSE-NEXT: retq
379 ; SSE-LABEL: select_fcmp_uno_f64:
380 ; SSE: # %bb.0:
381 ; SSE-NEXT: cmpunordsd %xmm1, %xmm0
382 ; SSE-NEXT: movaps %xmm0, %xmm1
383 ; SSE-NEXT: andpd %xmm2, %xmm1
384 ; SSE-NEXT: andnpd %xmm3, %xmm0
385 ; SSE-NEXT: orpd %xmm1, %xmm0
386 ; SSE-NEXT: retq
406 ; SSE-LABEL: select_fcmp_ugt_f32:
407 ; SSE: # %bb.0:
408 ; SSE-NEXT: cmpnless %xmm1, %xmm0
409 ; SSE-NEXT: movaps %xmm0, %xmm1
410 ; SSE-NEXT: andps %xmm2, %xmm1
411 ; SSE-NEXT: andnps %xmm3, %xmm0
412 ; SSE-NEXT: orps %xmm1, %xmm0
413 ; SSE-NEXT: retq
433 ; SSE-LABEL: select_fcmp_ugt_f64:
434 ; SSE: # %bb.0:
435 ; SSE-NEXT: cmpnlesd %xmm1, %xmm0
436 ; SSE-NEXT: movaps %xmm0, %xmm1
437 ; SSE-NEXT: andpd %xmm2, %xmm1
438 ; SSE-NEXT: andnpd %xmm3, %xmm0
439 ; SSE-NEXT: orpd %xmm1, %xmm0
440 ; SSE-NEXT: retq
460 ; SSE-LABEL: select_fcmp_uge_f32:
461 ; SSE: # %bb.0:
462 ; SSE-NEXT: cmpnltss %xmm1, %xmm0
463 ; SSE-NEXT: movaps %xmm0, %xmm1
464 ; SSE-NEXT: andps %xmm2, %xmm1
465 ; SSE-NEXT: andnps %xmm3, %xmm0
466 ; SSE-NEXT: orps %xmm1, %xmm0
467 ; SSE-NEXT: retq
487 ; SSE-LABEL: select_fcmp_uge_f64:
488 ; SSE: # %bb.0:
489 ; SSE-NEXT: cmpnltsd %xmm1, %xmm0
490 ; SSE-NEXT: movaps %xmm0, %xmm1
491 ; SSE-NEXT: andpd %xmm2, %xmm1
492 ; SSE-NEXT: andnpd %xmm3, %xmm0
493 ; SSE-NEXT: orpd %xmm1, %xmm0
494 ; SSE-NEXT: retq
514 ; SSE-LABEL: select_fcmp_ult_f32:
515 ; SSE: # %bb.0:
516 ; SSE-NEXT: movss %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
517 ; SSE-NEXT: movaps %xmm0, %xmm1
518 ; SSE-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
519 ; SSE-NEXT: # xmm0 = mem[0],zero,zero,zero
520 ; SSE-NEXT: cmpnless %xmm1, %xmm0
521 ; SSE-NEXT: movaps %xmm0, %xmm1
522 ; SSE-NEXT: andps %xmm2, %xmm1
523 ; SSE-NEXT: andnps %xmm3, %xmm0
524 ; SSE-NEXT: orps %xmm1, %xmm0
525 ; SSE-NEXT: retq
545 ; SSE-LABEL: select_fcmp_ult_f64:
546 ; SSE: # %bb.0:
547 ; SSE-NEXT: movsd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
548 ; SSE-NEXT: movaps %xmm0, %xmm1
549 ; SSE-NEXT: movsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 8-byte Reload
550 ; SSE-NEXT: # xmm0 = mem[0],zero
551 ; SSE-NEXT: cmpnlesd %xmm1, %xmm0
552 ; SSE-NEXT: movaps %xmm0, %xmm1
553 ; SSE-NEXT: andpd %xmm2, %xmm1
554 ; SSE-NEXT: andnpd %xmm3, %xmm0
555 ; SSE-NEXT: orpd %xmm1, %xmm0
556 ; SSE-NEXT: retq
576 ; SSE-LABEL: select_fcmp_ule_f32:
577 ; SSE: # %bb.0:
578 ; SSE-NEXT: movss %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill
579 ; SSE-NEXT: movaps %xmm0, %xmm1
580 ; SSE-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload
581 ; SSE-NEXT: # xmm0 = mem[0],zero,zero,zero
582 ; SSE-NEXT: cmpnltss %xmm1, %xmm0
583 ; SSE-NEXT: movaps %xmm0, %xmm1
584 ; SSE-NEXT: andps %xmm2, %xmm1
585 ; SSE-NEXT: andnps %xmm3, %xmm0
586 ; SSE-NEXT: orps %xmm1, %xmm0
587 ; SSE-NEXT: retq
607 ; SSE-LABEL: select_fcmp_ule_f64:
608 ; SSE: # %bb.0:
609 ; SSE-NEXT: movsd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
610 ; SSE-NEXT: movaps %xmm0, %xmm1
611 ; SSE-NEXT: movsd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 8-byte Reload
612 ; SSE-NEXT: # xmm0 = mem[0],zero
613 ; SSE-NEXT: cmpnltsd %xmm1, %xmm0
614 ; SSE-NEXT: movaps %xmm0, %xmm1
615 ; SSE-NEXT: andpd %xmm2, %xmm1
616 ; SSE-NEXT: andnpd %xmm3, %xmm0
617 ; SSE-NEXT: orpd %xmm1, %xmm0
618 ; SSE-NEXT: retq
638 ; SSE-LABEL: select_fcmp_une_f32:
639 ; SSE: # %bb.0:
640 ; SSE-NEXT: cmpneqss %xmm1, %xmm0
641 ; SSE-NEXT: movaps %xmm0, %xmm1
642 ; SSE-NEXT: andps %xmm2, %xmm1
643 ; SSE-NEXT: andnps %xmm3, %xmm0
644 ; SSE-NEXT: orps %xmm1, %xmm0
645 ; SSE-NEXT: retq
665 ; SSE-LABEL: select_fcmp_une_f64:
666 ; SSE: # %bb.0:
667 ; SSE-NEXT: cmpneqsd %xmm1, %xmm0
668 ; SSE-NEXT: movaps %xmm0, %xmm1
669 ; SSE-NEXT: andpd %xmm2, %xmm1
670 ; SSE-NEXT: andnpd %xmm3, %xmm0
671 ; SSE-NEXT: orpd %xmm1, %xmm0
672 ; SSE-NEXT: retq