Lines Matching refs:SSSE3

2 …RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+sse2 | FileCheck %s --check-prefix=SSE2-SSSE3
3 …UN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+ssse3 | FileCheck %s --check-prefix=SSE2-SSSE3
13 ; SSE2-SSSE3-LABEL: bitcast_v2i64_to_v2i1:
14 ; SSE2-SSSE3: # %bb.0:
15 ; SSE2-SSSE3-NEXT: movmskpd %xmm0, %ecx
16 ; SSE2-SSSE3-NEXT: movl %ecx, %eax
17 ; SSE2-SSSE3-NEXT: shrb %al
18 ; SSE2-SSSE3-NEXT: addb %cl, %al
19 ; SSE2-SSSE3-NEXT: retq
48 ; SSE2-SSSE3-LABEL: bitcast_v4i32_to_v2i2:
49 ; SSE2-SSSE3: # %bb.0:
50 ; SSE2-SSSE3-NEXT: movmskps %xmm0, %eax
51 ; SSE2-SSSE3-NEXT: movl %eax, %ecx
52 ; SSE2-SSSE3-NEXT: shrb $2, %cl
53 ; SSE2-SSSE3-NEXT: andb $3, %al
54 ; SSE2-SSSE3-NEXT: addb %cl, %al
55 ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
56 ; SSE2-SSSE3-NEXT: retq
76 ; SSE2-SSSE3-LABEL: bitcast_v8i16_to_v2i4:
77 ; SSE2-SSSE3: # %bb.0:
78 ; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm0
79 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
80 ; SSE2-SSSE3-NEXT: movl %eax, %ecx
81 ; SSE2-SSSE3-NEXT: shrb $4, %cl
82 ; SSE2-SSSE3-NEXT: andb $15, %al
83 ; SSE2-SSSE3-NEXT: addb %cl, %al
84 ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
85 ; SSE2-SSSE3-NEXT: retq
117 ; SSE2-SSSE3-LABEL: bitcast_v16i8_to_v2i8:
118 ; SSE2-SSSE3: # %bb.0:
119 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
120 ; SSE2-SSSE3-NEXT: movd %eax, %xmm0
121 ; SSE2-SSSE3-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
122 ; SSE2-SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
123 ; SSE2-SSSE3-NEXT: addb -{{[0-9]+}}(%rsp), %al
124 ; SSE2-SSSE3-NEXT: retq
147 ; SSE2-SSSE3-LABEL: bitcast_v4i64_to_v2i2:
148 ; SSE2-SSSE3: # %bb.0:
149 ; SSE2-SSSE3-NEXT: packssdw %xmm1, %xmm0
150 ; SSE2-SSSE3-NEXT: movmskps %xmm0, %eax
151 ; SSE2-SSSE3-NEXT: movl %eax, %ecx
152 ; SSE2-SSSE3-NEXT: shrb $2, %cl
153 ; SSE2-SSSE3-NEXT: andb $3, %al
154 ; SSE2-SSSE3-NEXT: addb %cl, %al
155 ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
156 ; SSE2-SSSE3-NEXT: retq
177 ; SSE2-SSSE3-LABEL: bitcast_v8i32_to_v2i4:
178 ; SSE2-SSSE3: # %bb.0:
179 ; SSE2-SSSE3-NEXT: packssdw %xmm1, %xmm0
180 ; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm0
181 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
182 ; SSE2-SSSE3-NEXT: movl %eax, %ecx
183 ; SSE2-SSSE3-NEXT: shrb $4, %cl
184 ; SSE2-SSSE3-NEXT: andb $15, %al
185 ; SSE2-SSSE3-NEXT: addb %cl, %al
186 ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
187 ; SSE2-SSSE3-NEXT: retq
208 ; SSE2-SSSE3-LABEL: bitcast_v16i16_to_v2i8:
209 ; SSE2-SSSE3: # %bb.0:
210 ; SSE2-SSSE3-NEXT: packsswb %xmm1, %xmm0
211 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
212 ; SSE2-SSSE3-NEXT: movd %eax, %xmm0
213 ; SSE2-SSSE3-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
214 ; SSE2-SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
215 ; SSE2-SSSE3-NEXT: addb -{{[0-9]+}}(%rsp), %al
216 ; SSE2-SSSE3-NEXT: retq
262 ; SSE2-SSSE3-LABEL: bitcast_v32i8_to_v2i16:
263 ; SSE2-SSSE3: # %bb.0:
264 ; SSE2-SSSE3-NEXT: pmovmskb %xmm1, %ecx
265 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
266 ; SSE2-SSSE3-NEXT: addl %ecx, %eax
267 ; SSE2-SSSE3-NEXT: # kill: def $ax killed $ax killed $eax
268 ; SSE2-SSSE3-NEXT: retq
312 ; SSE2-SSSE3-LABEL: bitcast_v8i64_to_v2i4:
313 ; SSE2-SSSE3: # %bb.0:
314 ; SSE2-SSSE3-NEXT: packssdw %xmm3, %xmm2
315 ; SSE2-SSSE3-NEXT: packssdw %xmm1, %xmm0
316 ; SSE2-SSSE3-NEXT: packssdw %xmm2, %xmm0
317 ; SSE2-SSSE3-NEXT: packsswb %xmm0, %xmm0
318 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
319 ; SSE2-SSSE3-NEXT: movl %eax, %ecx
320 ; SSE2-SSSE3-NEXT: shrb $4, %cl
321 ; SSE2-SSSE3-NEXT: andb $15, %al
322 ; SSE2-SSSE3-NEXT: addb %cl, %al
323 ; SSE2-SSSE3-NEXT: # kill: def $al killed $al killed $eax
324 ; SSE2-SSSE3-NEXT: retq
379 ; SSE2-SSSE3-LABEL: bitcast_v16i32_to_v2i8:
380 ; SSE2-SSSE3: # %bb.0:
381 ; SSE2-SSSE3-NEXT: packssdw %xmm3, %xmm2
382 ; SSE2-SSSE3-NEXT: packssdw %xmm1, %xmm0
383 ; SSE2-SSSE3-NEXT: packsswb %xmm2, %xmm0
384 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
385 ; SSE2-SSSE3-NEXT: movd %eax, %xmm0
386 ; SSE2-SSSE3-NEXT: movdqa %xmm0, -{{[0-9]+}}(%rsp)
387 ; SSE2-SSSE3-NEXT: movzbl -{{[0-9]+}}(%rsp), %eax
388 ; SSE2-SSSE3-NEXT: addb -{{[0-9]+}}(%rsp), %al
389 ; SSE2-SSSE3-NEXT: retq
444 ; SSE2-SSSE3-LABEL: bitcast_v32i16_to_v2i16:
445 ; SSE2-SSSE3: # %bb.0:
446 ; SSE2-SSSE3-NEXT: packsswb %xmm3, %xmm2
447 ; SSE2-SSSE3-NEXT: pmovmskb %xmm2, %ecx
448 ; SSE2-SSSE3-NEXT: packsswb %xmm1, %xmm0
449 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
450 ; SSE2-SSSE3-NEXT: addl %ecx, %eax
451 ; SSE2-SSSE3-NEXT: # kill: def $ax killed $ax killed $eax
452 ; SSE2-SSSE3-NEXT: retq
499 ; SSE2-SSSE3-LABEL: bitcast_v64i8_to_v2i32:
500 ; SSE2-SSSE3: # %bb.0:
501 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
502 ; SSE2-SSSE3-NEXT: pmovmskb %xmm1, %ecx
503 ; SSE2-SSSE3-NEXT: shll $16, %ecx
504 ; SSE2-SSSE3-NEXT: orl %eax, %ecx
505 ; SSE2-SSSE3-NEXT: pmovmskb %xmm2, %eax
506 ; SSE2-SSSE3-NEXT: pmovmskb %xmm3, %edx
507 ; SSE2-SSSE3-NEXT: shll $16, %edx
508 ; SSE2-SSSE3-NEXT: orl %eax, %edx
509 ; SSE2-SSSE3-NEXT: shlq $32, %rdx
510 ; SSE2-SSSE3-NEXT: orq %rcx, %rdx
511 ; SSE2-SSSE3-NEXT: movq %rdx, %xmm0
512 ; SSE2-SSSE3-NEXT: pshufd {{.*#+}} xmm0 = xmm0[1,1,1,1]
513 ; SSE2-SSSE3-NEXT: movd %xmm0, %eax
514 ; SSE2-SSSE3-NEXT: addl %ecx, %eax
515 ; SSE2-SSSE3-NEXT: retq
558 ; SSE2-SSSE3-LABEL: bitcast_v128i8_to_v2i64:
559 ; SSE2-SSSE3: # %bb.0:
560 ; SSE2-SSSE3-NEXT: pmovmskb %xmm4, %eax
561 ; SSE2-SSSE3-NEXT: pmovmskb %xmm5, %ecx
562 ; SSE2-SSSE3-NEXT: shll $16, %ecx
563 ; SSE2-SSSE3-NEXT: orl %eax, %ecx
564 ; SSE2-SSSE3-NEXT: pmovmskb %xmm6, %eax
565 ; SSE2-SSSE3-NEXT: pmovmskb %xmm7, %edx
566 ; SSE2-SSSE3-NEXT: shll $16, %edx
567 ; SSE2-SSSE3-NEXT: orl %eax, %edx
568 ; SSE2-SSSE3-NEXT: shlq $32, %rdx
569 ; SSE2-SSSE3-NEXT: orq %rcx, %rdx
570 ; SSE2-SSSE3-NEXT: pmovmskb %xmm0, %eax
571 ; SSE2-SSSE3-NEXT: pmovmskb %xmm1, %ecx
572 ; SSE2-SSSE3-NEXT: shll $16, %ecx
573 ; SSE2-SSSE3-NEXT: orl %eax, %ecx
574 ; SSE2-SSSE3-NEXT: pmovmskb %xmm2, %esi
575 ; SSE2-SSSE3-NEXT: pmovmskb %xmm3, %eax
576 ; SSE2-SSSE3-NEXT: shll $16, %eax
577 ; SSE2-SSSE3-NEXT: orl %esi, %eax
578 ; SSE2-SSSE3-NEXT: shlq $32, %rax
579 ; SSE2-SSSE3-NEXT: orq %rcx, %rax
580 ; SSE2-SSSE3-NEXT: addq %rdx, %rax
581 ; SSE2-SSSE3-NEXT: retq