Lines Matching refs:SSE41
3 …triple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
34 ; SSE41-LABEL: test_div7_2i64:
35 ; SSE41: # BB#0:
36 ; SSE41-NEXT: pextrq $1, %xmm0, %rax
37 ; SSE41-NEXT: movabsq $5270498306774157605, %rcx # imm = 0x4924924924924925
38 ; SSE41-NEXT: imulq %rcx
39 ; SSE41-NEXT: movq %rdx, %rax
40 ; SSE41-NEXT: shrq $63, %rax
41 ; SSE41-NEXT: sarq %rdx
42 ; SSE41-NEXT: addq %rax, %rdx
43 ; SSE41-NEXT: movd %rdx, %xmm1
44 ; SSE41-NEXT: movd %xmm0, %rax
45 ; SSE41-NEXT: imulq %rcx
46 ; SSE41-NEXT: movq %rdx, %rax
47 ; SSE41-NEXT: shrq $63, %rax
48 ; SSE41-NEXT: sarq %rdx
49 ; SSE41-NEXT: addq %rax, %rdx
50 ; SSE41-NEXT: movd %rdx, %xmm0
51 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
52 ; SSE41-NEXT: retq
104 ; SSE41-LABEL: test_div7_4i32:
105 ; SSE41: # BB#0:
106 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
107 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
108 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
109 ; SSE41-NEXT: pmuldq %xmm2, %xmm3
110 ; SSE41-NEXT: pmuldq %xmm0, %xmm1
111 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
112 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
113 ; SSE41-NEXT: paddd %xmm0, %xmm1
114 ; SSE41-NEXT: movdqa %xmm1, %xmm0
115 ; SSE41-NEXT: psrld $31, %xmm0
116 ; SSE41-NEXT: psrad $2, %xmm1
117 ; SSE41-NEXT: paddd %xmm0, %xmm1
118 ; SSE41-NEXT: movdqa %xmm1, %xmm0
119 ; SSE41-NEXT: retq
204 ; SSE41-LABEL: test_div7_16i8:
205 ; SSE41: # BB#0:
206 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm1
207 ; SSE41-NEXT: pmovsxbw {{.*}}(%rip), %xmm2
208 ; SSE41-NEXT: pmullw %xmm2, %xmm1
209 ; SSE41-NEXT: psrlw $8, %xmm1
210 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
211 ; SSE41-NEXT: pmovsxbw %xmm3, %xmm3
212 ; SSE41-NEXT: pmullw %xmm2, %xmm3
213 ; SSE41-NEXT: psrlw $8, %xmm3
214 ; SSE41-NEXT: packuswb %xmm3, %xmm1
215 ; SSE41-NEXT: paddb %xmm0, %xmm1
216 ; SSE41-NEXT: movdqa %xmm1, %xmm0
217 ; SSE41-NEXT: psrlw $2, %xmm0
218 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm0
219 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
220 ; SSE41-NEXT: pxor %xmm2, %xmm0
221 ; SSE41-NEXT: psubb %xmm2, %xmm0
222 ; SSE41-NEXT: psrlw $7, %xmm1
223 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
224 ; SSE41-NEXT: paddb %xmm0, %xmm1
225 ; SSE41-NEXT: movdqa %xmm1, %xmm0
226 ; SSE41-NEXT: retq
308 ; SSE41-LABEL: test_rem7_2i64:
309 ; SSE41: # BB#0:
310 ; SSE41-NEXT: pextrq $1, %xmm0, %rcx
311 ; SSE41-NEXT: movabsq $5270498306774157605, %rsi # imm = 0x4924924924924925
312 ; SSE41-NEXT: movq %rcx, %rax
313 ; SSE41-NEXT: imulq %rsi
314 ; SSE41-NEXT: movq %rdx, %rax
315 ; SSE41-NEXT: shrq $63, %rax
316 ; SSE41-NEXT: sarq %rdx
317 ; SSE41-NEXT: addq %rax, %rdx
318 ; SSE41-NEXT: leaq (,%rdx,8), %rax
319 ; SSE41-NEXT: subq %rdx, %rax
320 ; SSE41-NEXT: subq %rax, %rcx
321 ; SSE41-NEXT: movd %rcx, %xmm1
322 ; SSE41-NEXT: movd %xmm0, %rcx
323 ; SSE41-NEXT: movq %rcx, %rax
324 ; SSE41-NEXT: imulq %rsi
325 ; SSE41-NEXT: movq %rdx, %rax
326 ; SSE41-NEXT: shrq $63, %rax
327 ; SSE41-NEXT: sarq %rdx
328 ; SSE41-NEXT: addq %rax, %rdx
329 ; SSE41-NEXT: leaq (,%rdx,8), %rax
330 ; SSE41-NEXT: subq %rdx, %rax
331 ; SSE41-NEXT: subq %rax, %rcx
332 ; SSE41-NEXT: movd %rcx, %xmm0
333 ; SSE41-NEXT: punpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
334 ; SSE41-NEXT: retq
401 ; SSE41-LABEL: test_rem7_4i32:
402 ; SSE41: # BB#0:
403 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
404 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
405 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
406 ; SSE41-NEXT: pmuldq %xmm2, %xmm3
407 ; SSE41-NEXT: pmuldq %xmm0, %xmm1
408 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
409 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
410 ; SSE41-NEXT: paddd %xmm0, %xmm1
411 ; SSE41-NEXT: movdqa %xmm1, %xmm2
412 ; SSE41-NEXT: psrld $31, %xmm2
413 ; SSE41-NEXT: psrad $2, %xmm1
414 ; SSE41-NEXT: paddd %xmm2, %xmm1
415 ; SSE41-NEXT: pmulld {{.*}}(%rip), %xmm1
416 ; SSE41-NEXT: psubd %xmm1, %xmm0
417 ; SSE41-NEXT: retq
525 ; SSE41-LABEL: test_rem7_16i8:
526 ; SSE41: # BB#0:
527 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm1
528 ; SSE41-NEXT: pmovsxbw {{.*}}(%rip), %xmm2
529 ; SSE41-NEXT: pmullw %xmm2, %xmm1
530 ; SSE41-NEXT: psrlw $8, %xmm1
531 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[2,3,0,1]
532 ; SSE41-NEXT: pmovsxbw %xmm3, %xmm3
533 ; SSE41-NEXT: pmullw %xmm2, %xmm3
534 ; SSE41-NEXT: psrlw $8, %xmm3
535 ; SSE41-NEXT: packuswb %xmm3, %xmm1
536 ; SSE41-NEXT: paddb %xmm0, %xmm1
537 ; SSE41-NEXT: movdqa %xmm1, %xmm2
538 ; SSE41-NEXT: psrlw $2, %xmm2
539 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm2
540 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32]
541 ; SSE41-NEXT: pxor %xmm3, %xmm2
542 ; SSE41-NEXT: psubb %xmm3, %xmm2
543 ; SSE41-NEXT: psrlw $7, %xmm1
544 ; SSE41-NEXT: pand {{.*}}(%rip), %xmm1
545 ; SSE41-NEXT: paddb %xmm2, %xmm1
546 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm2
547 ; SSE41-NEXT: pmovsxbw {{.*}}(%rip), %xmm3
548 ; SSE41-NEXT: pmullw %xmm3, %xmm2
549 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [255,255,255,255,255,255,255,255]
550 ; SSE41-NEXT: pand %xmm4, %xmm2
551 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
552 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm1
553 ; SSE41-NEXT: pmullw %xmm3, %xmm1
554 ; SSE41-NEXT: pand %xmm4, %xmm1
555 ; SSE41-NEXT: packuswb %xmm1, %xmm2
556 ; SSE41-NEXT: psubb %xmm2, %xmm0
557 ; SSE41-NEXT: retq