Lines Matching refs:SSE
2 ; RUN: llc < %s -mtriple=x86_64-- -mattr=+sse2 | FileCheck %s --check-prefixes=SSE
10 ; SSE-LABEL: cmp_ne_load_const:
11 ; SSE: # %bb.0:
12 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
13 ; SSE-NEXT: pxor %xmm1, %xmm1
14 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
15 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
16 ; SSE-NEXT: pxor %xmm1, %xmm0
17 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
18 ; SSE-NEXT: psraw $8, %xmm0
19 ; SSE-NEXT: retq
36 ; SSE-LABEL: cmp_ne_load_const_volatile:
37 ; SSE: # %bb.0:
38 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
39 ; SSE-NEXT: pxor %xmm1, %xmm1
40 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
41 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
42 ; SSE-NEXT: pxor %xmm1, %xmm0
43 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
44 ; SSE-NEXT: psraw $8, %xmm0
45 ; SSE-NEXT: retq
75 ; SSE-LABEL: cmp_ne_load_const_extra_use1:
76 ; SSE: # %bb.0:
77 ; SSE-NEXT: subq $24, %rsp
78 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
79 ; SSE-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill
80 ; SSE-NEXT: callq use_v8i8@PLT
81 ; SSE-NEXT: pxor %xmm0, %xmm0
82 ; SSE-NEXT: pcmpeqb (%rsp), %xmm0 # 16-byte Folded Reload
83 ; SSE-NEXT: pcmpeqd %xmm1, %xmm1
84 ; SSE-NEXT: pxor %xmm0, %xmm1
85 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xm…
86 ; SSE-NEXT: psraw $8, %xmm0
87 ; SSE-NEXT: addq $24, %rsp
88 ; SSE-NEXT: retq
127 ; SSE-LABEL: cmp_ne_load_const_extra_use2:
128 ; SSE: # %bb.0:
129 ; SSE-NEXT: subq $24, %rsp
130 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
131 ; SSE-NEXT: pxor %xmm1, %xmm1
132 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
133 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
134 ; SSE-NEXT: pxor %xmm1, %xmm0
135 ; SSE-NEXT: movdqa %xmm0, (%rsp) # 16-byte Spill
136 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
137 ; SSE-NEXT: callq use_v8i1@PLT
138 ; SSE-NEXT: punpcklbw (%rsp), %xmm0 # 16-byte Folded Reload
139 ; SSE-NEXT: # xmm0 = xmm0[0],mem[0],xmm0[1],mem[1],xmm0[2],mem[2],xmm0[3],mem[3],xmm0[4],mem[4],…
140 ; SSE-NEXT: psraw $8, %xmm0
141 ; SSE-NEXT: addq $24, %rsp
142 ; SSE-NEXT: retq
183 ; SSE-LABEL: cmp_ne_no_load_const:
184 ; SSE: # %bb.0:
185 ; SSE-NEXT: movq %rdi, %xmm0
186 ; SSE-NEXT: pxor %xmm1, %xmm1
187 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
188 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
189 ; SSE-NEXT: pxor %xmm1, %xmm0
190 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
191 ; SSE-NEXT: psraw $8, %xmm0
192 ; SSE-NEXT: retq
220 ; SSE-LABEL: cmp_ult_load_const:
221 ; SSE: # %bb.0:
222 ; SSE-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
223 ; SSE-NEXT: movdqa {{.*#+}} xmm1 = <42,214,0,255,u,u,u,u,u,u,u,u,u,u,u,u>
224 ; SSE-NEXT: pmaxub %xmm0, %xmm1
225 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
226 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
227 ; SSE-NEXT: pxor %xmm1, %xmm0
228 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
229 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
230 ; SSE-NEXT: psrad $24, %xmm0
231 ; SSE-NEXT: retq
248 ; SSE-LABEL: cmp_ult_load_const_bad_type:
249 ; SSE: # %bb.0:
250 ; SSE-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
251 ; SSE-NEXT: movdqa {{.*#+}} xmm1 = <42,214,0,u,u,u,u,u,u,u,u,u,u,u,u,u>
252 ; SSE-NEXT: pmaxub %xmm0, %xmm1
253 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
254 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
255 ; SSE-NEXT: pxor %xmm1, %xmm0
256 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
257 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
258 ; SSE-NEXT: psrad $24, %xmm0
259 ; SSE-NEXT: retq
289 ; SSE-LABEL: cmp_slt_load_const:
290 ; SSE: # %bb.0:
291 ; SSE-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
292 ; SSE-NEXT: movdqa {{.*#+}} xmm1 = <42,214,0,255,u,u,u,u,u,u,u,u,u,u,u,u>
293 ; SSE-NEXT: pcmpgtb %xmm0, %xmm1
294 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xm…
295 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3]
296 ; SSE-NEXT: psrad $24, %xmm0
297 ; SSE-NEXT: retq
312 ; SSE-LABEL: cmp_ne_zextload:
313 ; SSE: # %bb.0:
314 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
315 ; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
316 ; SSE-NEXT: pcmpeqd %xmm0, %xmm1
317 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
318 ; SSE-NEXT: pxor %xmm1, %xmm0
319 ; SSE-NEXT: pxor %xmm1, %xmm1
320 ; SSE-NEXT: pcmpgtd %xmm0, %xmm1
321 ; SSE-NEXT: punpckldq {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
322 ; SSE-NEXT: retq
350 ; SSE-LABEL: cmp_ugt_zextload:
351 ; SSE: # %bb.0:
352 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
353 ; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
354 ; SSE-NEXT: pminub %xmm0, %xmm1
355 ; SSE-NEXT: pcmpeqb %xmm0, %xmm1
356 ; SSE-NEXT: pcmpeqd %xmm0, %xmm0
357 ; SSE-NEXT: pxor %xmm1, %xmm0
358 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
359 ; SSE-NEXT: psraw $8, %xmm0
360 ; SSE-NEXT: retq
378 ; SSE-LABEL: cmp_sgt_zextload:
379 ; SSE: # %bb.0:
380 ; SSE-NEXT: movq {{.*#+}} xmm0 = mem[0],zero
381 ; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
382 ; SSE-NEXT: pcmpgtb %xmm1, %xmm0
383 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
384 ; SSE-NEXT: psraw $8, %xmm0
385 ; SSE-NEXT: retq
404 ; SSE-LABEL: cmp_ne_zextload_from_legal_op:
405 ; SSE: # %bb.0:
406 ; SSE-NEXT: movdqa (%rdi), %xmm0
407 ; SSE-NEXT: pcmpeqw (%rsi), %xmm0
408 ; SSE-NEXT: pcmpeqd %xmm1, %xmm1
409 ; SSE-NEXT: pxor %xmm0, %xmm1
410 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xm…
411 ; SSE-NEXT: psrad $16, %xmm0
412 ; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
413 ; SSE-NEXT: psrad $16, %xmm1
414 ; SSE-NEXT: retq
442 ; SSE-LABEL: PR50055:
443 ; SSE: # %bb.0:
444 ; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero
445 ; SSE-NEXT: pxor %xmm3, %xmm3
446 ; SSE-NEXT: movdqa %xmm2, %xmm1
447 ; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xm…
448 ; SSE-NEXT: movdqa %xmm1, %xmm0
449 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xm…
450 ; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xm…
451 ; SSE-NEXT: pcmpeqb %xmm3, %xmm2
452 ; SSE-NEXT: pcmpeqd %xmm3, %xmm3
453 ; SSE-NEXT: pxor %xmm2, %xmm3
454 ; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xm…
455 ; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xm…
456 ; SSE-NEXT: psrad $24, %xmm3
457 ; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4,4,5,5,6,6,7,7]
458 ; SSE-NEXT: psrad $24, %xmm2
459 ; SSE-NEXT: movdqa %xmm2, 16(%rsi)
460 ; SSE-NEXT: movdqa %xmm3, (%rsi)
461 ; SSE-NEXT: retq
481 ; SSE-LABEL: multi_use_narrower_size:
482 ; SSE: # %bb.0:
483 ; SSE-NEXT: movq {{.*#+}} xmm1 = mem[0],zero
484 ; SSE-NEXT: pxor %xmm2, %xmm2
485 ; SSE-NEXT: movdqa %xmm1, %xmm0
486 ; SSE-NEXT: punpcklbw {{.*#+}} xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1],xmm0[2],xmm2[2],xmm0[3],xm…
487 ; SSE-NEXT: pcmpeqb %xmm2, %xmm1
488 ; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
489 ; SSE-NEXT: punpcklwd {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1],xmm2[2],xmm1[2],xmm2[3],xm…
490 ; SSE-NEXT: psrad $24, %xmm2
491 ; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
492 ; SSE-NEXT: psrad $24, %xmm1
493 ; SSE-NEXT: movdqa %xmm1, 16(%rsi)
494 ; SSE-NEXT: movdqa %xmm2, (%rsi)
495 ; SSE-NEXT: retq
518 ; SSE-LABEL: multi_use_wider_size:
519 ; SSE: # %bb.0:
520 ; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero
521 ; SSE-NEXT: pxor %xmm3, %xmm3
522 ; SSE-NEXT: movdqa %xmm2, %xmm1
523 ; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1],xmm1[2],xmm3[2],xmm1[3],xm…
524 ; SSE-NEXT: movdqa %xmm1, %xmm0
525 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm3[0],xmm0[1],xmm3[1],xmm0[2],xmm3[2],xmm0[3],xm…
526 ; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4],xmm3[4],xmm1[5],xmm3[5],xmm1[6],xmm3[6],xmm1[7],xm…
527 ; SSE-NEXT: pcmpeqb %xmm3, %xmm2
528 ; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
529 ; SSE-NEXT: psraw $8, %xmm2
530 ; SSE-NEXT: movdqa %xmm2, (%rsi)
531 ; SSE-NEXT: retq
551 ; SSE-LABEL: PR50055_signed:
552 ; SSE: # %bb.0:
553 ; SSE-NEXT: movq {{.*#+}} xmm2 = mem[0],zero
554 ; SSE-NEXT: punpcklbw {{.*#+}} xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xm…
555 ; SSE-NEXT: punpcklwd {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xm…
556 ; SSE-NEXT: psrad $24, %xmm0
557 ; SSE-NEXT: punpckhwd {{.*#+}} xmm1 = xmm1[4,4,5,5,6,6,7,7]
558 ; SSE-NEXT: psrad $24, %xmm1
559 ; SSE-NEXT: pxor %xmm3, %xmm3
560 ; SSE-NEXT: pcmpgtb %xmm3, %xmm2
561 ; SSE-NEXT: punpcklbw {{.*#+}} xmm2 = xmm2[0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7]
562 ; SSE-NEXT: punpcklwd {{.*#+}} xmm3 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xm…
563 ; SSE-NEXT: psrad $24, %xmm3
564 ; SSE-NEXT: punpckhwd {{.*#+}} xmm2 = xmm2[4,4,5,5,6,6,7,7]
565 ; SSE-NEXT: psrad $24, %xmm2
566 ; SSE-NEXT: movdqa %xmm2, 16(%rsi)
567 ; SSE-NEXT: movdqa %xmm3, (%rsi)
568 ; SSE-NEXT: retq