Lines Matching refs:SSE41
2 ; RUN: llc -march=x86-64 -mcpu=core2 -mattr=+sse4.1 < %s | FileCheck %s --check-prefix=SSE41
9 ; SSE41-LABEL: test1:
10 ; SSE41: # BB#0:
11 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [613566757,613566757,613566757,613566757]
12 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
13 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
14 ; SSE41-NEXT: pmuludq %xmm2, %xmm3
15 ; SSE41-NEXT: pmuludq %xmm0, %xmm1
16 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
17 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
18 ; SSE41-NEXT: psubd %xmm1, %xmm0
19 ; SSE41-NEXT: psrld $1, %xmm0
20 ; SSE41-NEXT: paddd %xmm1, %xmm0
21 ; SSE41-NEXT: psrld $2, %xmm0
22 ; SSE41-NEXT: retq
60 ; SSE41-LABEL: test2:
61 ; SSE41: # BB#0:
62 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [613566757,613566757,613566757,613566757]
63 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
64 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
65 ; SSE41-NEXT: pmuludq %xmm3, %xmm4
66 ; SSE41-NEXT: movdqa %xmm0, %xmm5
67 ; SSE41-NEXT: pmuludq %xmm2, %xmm5
68 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
69 ; SSE41-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,3],xmm5[4,5],xmm4[6,7]
70 ; SSE41-NEXT: psubd %xmm5, %xmm0
71 ; SSE41-NEXT: psrld $1, %xmm0
72 ; SSE41-NEXT: paddd %xmm5, %xmm0
73 ; SSE41-NEXT: psrld $2, %xmm0
74 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
75 ; SSE41-NEXT: pmuludq %xmm3, %xmm4
76 ; SSE41-NEXT: pmuludq %xmm1, %xmm2
77 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
78 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,3],xmm2[4,5],xmm4[6,7]
79 ; SSE41-NEXT: psubd %xmm2, %xmm1
80 ; SSE41-NEXT: psrld $1, %xmm1
81 ; SSE41-NEXT: paddd %xmm2, %xmm1
82 ; SSE41-NEXT: psrld $2, %xmm1
83 ; SSE41-NEXT: retq
131 ; SSE41-LABEL: test3:
132 ; SSE41: # BB#0:
133 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [9363,9363,9363,9363,9363,9363,9363,9363]
134 ; SSE41-NEXT: pmulhuw %xmm0, %xmm1
135 ; SSE41-NEXT: psubw %xmm1, %xmm0
136 ; SSE41-NEXT: psrlw $1, %xmm0
137 ; SSE41-NEXT: paddw %xmm1, %xmm0
138 ; SSE41-NEXT: psrlw $2, %xmm0
139 ; SSE41-NEXT: retq
164 ; SSE41-LABEL: test4:
165 ; SSE41: # BB#0:
166 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [9363,9363,9363,9363,9363,9363,9363,9363]
167 ; SSE41-NEXT: movdqa %xmm0, %xmm3
168 ; SSE41-NEXT: pmulhuw %xmm2, %xmm3
169 ; SSE41-NEXT: psubw %xmm3, %xmm0
170 ; SSE41-NEXT: psrlw $1, %xmm0
171 ; SSE41-NEXT: paddw %xmm3, %xmm0
172 ; SSE41-NEXT: psrlw $2, %xmm0
173 ; SSE41-NEXT: pmulhuw %xmm1, %xmm2
174 ; SSE41-NEXT: psubw %xmm2, %xmm1
175 ; SSE41-NEXT: psrlw $1, %xmm1
176 ; SSE41-NEXT: paddw %xmm2, %xmm1
177 ; SSE41-NEXT: psrlw $2, %xmm1
178 ; SSE41-NEXT: retq
209 ; SSE41-LABEL: test5:
210 ; SSE41: # BB#0:
211 ; SSE41-NEXT: pmulhw {{.*}}(%rip), %xmm0
212 ; SSE41-NEXT: movdqa %xmm0, %xmm1
213 ; SSE41-NEXT: psrlw $15, %xmm1
214 ; SSE41-NEXT: psraw $1, %xmm0
215 ; SSE41-NEXT: paddw %xmm1, %xmm0
216 ; SSE41-NEXT: retq
239 ; SSE41-LABEL: test6:
240 ; SSE41: # BB#0:
241 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [18725,18725,18725,18725,18725,18725,18725,18725]
242 ; SSE41-NEXT: pmulhw %xmm2, %xmm0
243 ; SSE41-NEXT: movdqa %xmm0, %xmm3
244 ; SSE41-NEXT: psrlw $15, %xmm3
245 ; SSE41-NEXT: psraw $1, %xmm0
246 ; SSE41-NEXT: paddw %xmm3, %xmm0
247 ; SSE41-NEXT: pmulhw %xmm2, %xmm1
248 ; SSE41-NEXT: movdqa %xmm1, %xmm2
249 ; SSE41-NEXT: psrlw $15, %xmm2
250 ; SSE41-NEXT: psraw $1, %xmm1
251 ; SSE41-NEXT: paddw %xmm2, %xmm1
252 ; SSE41-NEXT: retq
281 ; SSE41-LABEL: test7:
282 ; SSE41: # BB#0:
283 ; SSE41-NEXT: pextrb $1, %xmm0, %eax
284 ; SSE41-NEXT: movsbl %al, %eax
285 ; SSE41-NEXT: imull $-109, %eax, %ecx
286 ; SSE41-NEXT: shrl $8, %ecx
287 ; SSE41-NEXT: addb %cl, %al
288 ; SSE41-NEXT: movb %al, %cl
289 ; SSE41-NEXT: shrb $7, %cl
290 ; SSE41-NEXT: sarb $2, %al
291 ; SSE41-NEXT: addb %cl, %al
292 ; SSE41-NEXT: movzbl %al, %eax
293 ; SSE41-NEXT: pextrb $0, %xmm0, %ecx
294 ; SSE41-NEXT: movsbl %cl, %ecx
295 ; SSE41-NEXT: imull $-109, %ecx, %edx
296 ; SSE41-NEXT: shrl $8, %edx
297 ; SSE41-NEXT: addb %dl, %cl
298 ; SSE41-NEXT: movb %cl, %dl
299 ; SSE41-NEXT: shrb $7, %dl
300 ; SSE41-NEXT: sarb $2, %cl
301 ; SSE41-NEXT: addb %dl, %cl
302 ; SSE41-NEXT: movzbl %cl, %ecx
303 ; SSE41-NEXT: movd %ecx, %xmm1
304 ; SSE41-NEXT: pinsrb $1, %eax, %xmm1
305 ; SSE41-NEXT: pextrb $2, %xmm0, %eax
306 ; SSE41-NEXT: movsbl %al, %eax
307 ; SSE41-NEXT: imull $-109, %eax, %ecx
308 ; SSE41-NEXT: shrl $8, %ecx
309 ; SSE41-NEXT: addb %cl, %al
310 ; SSE41-NEXT: movb %al, %cl
311 ; SSE41-NEXT: shrb $7, %cl
312 ; SSE41-NEXT: sarb $2, %al
313 ; SSE41-NEXT: addb %cl, %al
314 ; SSE41-NEXT: movzbl %al, %eax
315 ; SSE41-NEXT: pinsrb $2, %eax, %xmm1
316 ; SSE41-NEXT: pextrb $3, %xmm0, %eax
317 ; SSE41-NEXT: movsbl %al, %eax
318 ; SSE41-NEXT: imull $-109, %eax, %ecx
319 ; SSE41-NEXT: shrl $8, %ecx
320 ; SSE41-NEXT: addb %cl, %al
321 ; SSE41-NEXT: movb %al, %cl
322 ; SSE41-NEXT: shrb $7, %cl
323 ; SSE41-NEXT: sarb $2, %al
324 ; SSE41-NEXT: addb %cl, %al
325 ; SSE41-NEXT: movzbl %al, %eax
326 ; SSE41-NEXT: pinsrb $3, %eax, %xmm1
327 ; SSE41-NEXT: pextrb $4, %xmm0, %eax
328 ; SSE41-NEXT: movsbl %al, %eax
329 ; SSE41-NEXT: imull $-109, %eax, %ecx
330 ; SSE41-NEXT: shrl $8, %ecx
331 ; SSE41-NEXT: addb %cl, %al
332 ; SSE41-NEXT: movb %al, %cl
333 ; SSE41-NEXT: shrb $7, %cl
334 ; SSE41-NEXT: sarb $2, %al
335 ; SSE41-NEXT: addb %cl, %al
336 ; SSE41-NEXT: movzbl %al, %eax
337 ; SSE41-NEXT: pinsrb $4, %eax, %xmm1
338 ; SSE41-NEXT: pextrb $5, %xmm0, %eax
339 ; SSE41-NEXT: movsbl %al, %eax
340 ; SSE41-NEXT: imull $-109, %eax, %ecx
341 ; SSE41-NEXT: shrl $8, %ecx
342 ; SSE41-NEXT: addb %cl, %al
343 ; SSE41-NEXT: movb %al, %cl
344 ; SSE41-NEXT: shrb $7, %cl
345 ; SSE41-NEXT: sarb $2, %al
346 ; SSE41-NEXT: addb %cl, %al
347 ; SSE41-NEXT: movzbl %al, %eax
348 ; SSE41-NEXT: pinsrb $5, %eax, %xmm1
349 ; SSE41-NEXT: pextrb $6, %xmm0, %eax
350 ; SSE41-NEXT: movsbl %al, %eax
351 ; SSE41-NEXT: imull $-109, %eax, %ecx
352 ; SSE41-NEXT: shrl $8, %ecx
353 ; SSE41-NEXT: addb %cl, %al
354 ; SSE41-NEXT: movb %al, %cl
355 ; SSE41-NEXT: shrb $7, %cl
356 ; SSE41-NEXT: sarb $2, %al
357 ; SSE41-NEXT: addb %cl, %al
358 ; SSE41-NEXT: movzbl %al, %eax
359 ; SSE41-NEXT: pinsrb $6, %eax, %xmm1
360 ; SSE41-NEXT: pextrb $7, %xmm0, %eax
361 ; SSE41-NEXT: movsbl %al, %eax
362 ; SSE41-NEXT: imull $-109, %eax, %ecx
363 ; SSE41-NEXT: shrl $8, %ecx
364 ; SSE41-NEXT: addb %cl, %al
365 ; SSE41-NEXT: movb %al, %cl
366 ; SSE41-NEXT: shrb $7, %cl
367 ; SSE41-NEXT: sarb $2, %al
368 ; SSE41-NEXT: addb %cl, %al
369 ; SSE41-NEXT: movzbl %al, %eax
370 ; SSE41-NEXT: pinsrb $7, %eax, %xmm1
371 ; SSE41-NEXT: pextrb $8, %xmm0, %eax
372 ; SSE41-NEXT: movsbl %al, %eax
373 ; SSE41-NEXT: imull $-109, %eax, %ecx
374 ; SSE41-NEXT: shrl $8, %ecx
375 ; SSE41-NEXT: addb %cl, %al
376 ; SSE41-NEXT: movb %al, %cl
377 ; SSE41-NEXT: shrb $7, %cl
378 ; SSE41-NEXT: sarb $2, %al
379 ; SSE41-NEXT: addb %cl, %al
380 ; SSE41-NEXT: movzbl %al, %eax
381 ; SSE41-NEXT: pinsrb $8, %eax, %xmm1
382 ; SSE41-NEXT: pextrb $9, %xmm0, %eax
383 ; SSE41-NEXT: movsbl %al, %eax
384 ; SSE41-NEXT: imull $-109, %eax, %ecx
385 ; SSE41-NEXT: shrl $8, %ecx
386 ; SSE41-NEXT: addb %cl, %al
387 ; SSE41-NEXT: movb %al, %cl
388 ; SSE41-NEXT: shrb $7, %cl
389 ; SSE41-NEXT: sarb $2, %al
390 ; SSE41-NEXT: addb %cl, %al
391 ; SSE41-NEXT: movzbl %al, %eax
392 ; SSE41-NEXT: pinsrb $9, %eax, %xmm1
393 ; SSE41-NEXT: pextrb $10, %xmm0, %eax
394 ; SSE41-NEXT: movsbl %al, %eax
395 ; SSE41-NEXT: imull $-109, %eax, %ecx
396 ; SSE41-NEXT: shrl $8, %ecx
397 ; SSE41-NEXT: addb %cl, %al
398 ; SSE41-NEXT: movb %al, %cl
399 ; SSE41-NEXT: shrb $7, %cl
400 ; SSE41-NEXT: sarb $2, %al
401 ; SSE41-NEXT: addb %cl, %al
402 ; SSE41-NEXT: movzbl %al, %eax
403 ; SSE41-NEXT: pinsrb $10, %eax, %xmm1
404 ; SSE41-NEXT: pextrb $11, %xmm0, %eax
405 ; SSE41-NEXT: movsbl %al, %eax
406 ; SSE41-NEXT: imull $-109, %eax, %ecx
407 ; SSE41-NEXT: shrl $8, %ecx
408 ; SSE41-NEXT: addb %cl, %al
409 ; SSE41-NEXT: movb %al, %cl
410 ; SSE41-NEXT: shrb $7, %cl
411 ; SSE41-NEXT: sarb $2, %al
412 ; SSE41-NEXT: addb %cl, %al
413 ; SSE41-NEXT: movzbl %al, %eax
414 ; SSE41-NEXT: pinsrb $11, %eax, %xmm1
415 ; SSE41-NEXT: pextrb $12, %xmm0, %eax
416 ; SSE41-NEXT: movsbl %al, %eax
417 ; SSE41-NEXT: imull $-109, %eax, %ecx
418 ; SSE41-NEXT: shrl $8, %ecx
419 ; SSE41-NEXT: addb %cl, %al
420 ; SSE41-NEXT: movb %al, %cl
421 ; SSE41-NEXT: shrb $7, %cl
422 ; SSE41-NEXT: sarb $2, %al
423 ; SSE41-NEXT: addb %cl, %al
424 ; SSE41-NEXT: movzbl %al, %eax
425 ; SSE41-NEXT: pinsrb $12, %eax, %xmm1
426 ; SSE41-NEXT: pextrb $13, %xmm0, %eax
427 ; SSE41-NEXT: movsbl %al, %eax
428 ; SSE41-NEXT: imull $-109, %eax, %ecx
429 ; SSE41-NEXT: shrl $8, %ecx
430 ; SSE41-NEXT: addb %cl, %al
431 ; SSE41-NEXT: movb %al, %cl
432 ; SSE41-NEXT: shrb $7, %cl
433 ; SSE41-NEXT: sarb $2, %al
434 ; SSE41-NEXT: addb %cl, %al
435 ; SSE41-NEXT: movzbl %al, %eax
436 ; SSE41-NEXT: pinsrb $13, %eax, %xmm1
437 ; SSE41-NEXT: pextrb $14, %xmm0, %eax
438 ; SSE41-NEXT: movsbl %al, %eax
439 ; SSE41-NEXT: imull $-109, %eax, %ecx
440 ; SSE41-NEXT: shrl $8, %ecx
441 ; SSE41-NEXT: addb %cl, %al
442 ; SSE41-NEXT: movb %al, %cl
443 ; SSE41-NEXT: shrb $7, %cl
444 ; SSE41-NEXT: sarb $2, %al
445 ; SSE41-NEXT: addb %cl, %al
446 ; SSE41-NEXT: movzbl %al, %eax
447 ; SSE41-NEXT: pinsrb $14, %eax, %xmm1
448 ; SSE41-NEXT: pextrb $15, %xmm0, %eax
449 ; SSE41-NEXT: movsbl %al, %eax
450 ; SSE41-NEXT: imull $-109, %eax, %ecx
451 ; SSE41-NEXT: shrl $8, %ecx
452 ; SSE41-NEXT: addb %cl, %al
453 ; SSE41-NEXT: movb %al, %cl
454 ; SSE41-NEXT: shrb $7, %cl
455 ; SSE41-NEXT: sarb $2, %al
456 ; SSE41-NEXT: addb %cl, %al
457 ; SSE41-NEXT: movzbl %al, %eax
458 ; SSE41-NEXT: pinsrb $15, %eax, %xmm1
459 ; SSE41-NEXT: movdqa %xmm1, %xmm0
460 ; SSE41-NEXT: retq
832 ; SSE41-LABEL: test8:
833 ; SSE41: # BB#0:
834 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [2454267027,2454267027,2454267027,2454267027]
835 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
836 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
837 ; SSE41-NEXT: pmuldq %xmm2, %xmm3
838 ; SSE41-NEXT: pmuldq %xmm0, %xmm1
839 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[1,1,3,3]
840 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
841 ; SSE41-NEXT: paddd %xmm0, %xmm1
842 ; SSE41-NEXT: movdqa %xmm1, %xmm0
843 ; SSE41-NEXT: psrld $31, %xmm0
844 ; SSE41-NEXT: psrad $2, %xmm1
845 ; SSE41-NEXT: paddd %xmm0, %xmm1
846 ; SSE41-NEXT: movdqa %xmm1, %xmm0
847 ; SSE41-NEXT: retq
894 ; SSE41-LABEL: test9:
895 ; SSE41: # BB#0:
896 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [2454267027,2454267027,2454267027,2454267027]
897 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm3[1,1,3,3]
898 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm0[1,1,3,3]
899 ; SSE41-NEXT: pmuldq %xmm4, %xmm5
900 ; SSE41-NEXT: movdqa %xmm0, %xmm2
901 ; SSE41-NEXT: pmuldq %xmm3, %xmm2
902 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
903 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2,3],xmm2[4,5],xmm5[6,7]
904 ; SSE41-NEXT: paddd %xmm0, %xmm2
905 ; SSE41-NEXT: movdqa %xmm2, %xmm0
906 ; SSE41-NEXT: psrld $31, %xmm0
907 ; SSE41-NEXT: psrad $2, %xmm2
908 ; SSE41-NEXT: paddd %xmm0, %xmm2
909 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[1,1,3,3]
910 ; SSE41-NEXT: pmuldq %xmm4, %xmm0
911 ; SSE41-NEXT: pmuldq %xmm1, %xmm3
912 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm3[1,1,3,3]
913 ; SSE41-NEXT: pblendw {{.*#+}} xmm3 = xmm3[0,1],xmm0[2,3],xmm3[4,5],xmm0[6,7]
914 ; SSE41-NEXT: paddd %xmm1, %xmm3
915 ; SSE41-NEXT: movdqa %xmm3, %xmm0
916 ; SSE41-NEXT: psrld $31, %xmm0
917 ; SSE41-NEXT: psrad $2, %xmm3
918 ; SSE41-NEXT: paddd %xmm0, %xmm3
919 ; SSE41-NEXT: movdqa %xmm2, %xmm0
920 ; SSE41-NEXT: movdqa %xmm3, %xmm1
921 ; SSE41-NEXT: retq
988 ; SSE41-LABEL: test10:
989 ; SSE41: # BB#0:
990 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [613566757,613566757,613566757,613566757]
991 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
992 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
993 ; SSE41-NEXT: pmuludq %xmm3, %xmm4
994 ; SSE41-NEXT: movdqa %xmm0, %xmm5
995 ; SSE41-NEXT: pmuludq %xmm2, %xmm5
996 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
997 ; SSE41-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,3],xmm5[4,5],xmm4[6,7]
998 ; SSE41-NEXT: movdqa %xmm0, %xmm4
999 ; SSE41-NEXT: psubd %xmm5, %xmm4
1000 ; SSE41-NEXT: psrld $1, %xmm4
1001 ; SSE41-NEXT: paddd %xmm5, %xmm4
1002 ; SSE41-NEXT: psrld $2, %xmm4
1003 ; SSE41-NEXT: movdqa {{.*#+}} xmm5 = [7,7,7,7]
1004 ; SSE41-NEXT: pmulld %xmm5, %xmm4
1005 ; SSE41-NEXT: psubd %xmm4, %xmm0
1006 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm1[1,1,3,3]
1007 ; SSE41-NEXT: pmuludq %xmm3, %xmm4
1008 ; SSE41-NEXT: pmuludq %xmm1, %xmm2
1009 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
1010 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm4[2,3],xmm2[4,5],xmm4[6,7]
1011 ; SSE41-NEXT: movdqa %xmm1, %xmm3
1012 ; SSE41-NEXT: psubd %xmm2, %xmm3
1013 ; SSE41-NEXT: psrld $1, %xmm3
1014 ; SSE41-NEXT: paddd %xmm2, %xmm3
1015 ; SSE41-NEXT: psrld $2, %xmm3
1016 ; SSE41-NEXT: pmulld %xmm5, %xmm3
1017 ; SSE41-NEXT: psubd %xmm3, %xmm1
1018 ; SSE41-NEXT: retq
1086 ; SSE41-LABEL: test11:
1087 ; SSE41: # BB#0:
1088 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [2454267027,2454267027,2454267027,2454267027]
1089 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm2[1,1,3,3]
1090 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm0[1,1,3,3]
1091 ; SSE41-NEXT: pmuldq %xmm3, %xmm4
1092 ; SSE41-NEXT: movdqa %xmm0, %xmm5
1093 ; SSE41-NEXT: pmuldq %xmm2, %xmm5
1094 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm5[1,1,3,3]
1095 ; SSE41-NEXT: pblendw {{.*#+}} xmm5 = xmm5[0,1],xmm4[2,3],xmm5[4,5],xmm4[6,7]
1096 ; SSE41-NEXT: paddd %xmm0, %xmm5
1097 ; SSE41-NEXT: movdqa %xmm5, %xmm4
1098 ; SSE41-NEXT: psrld $31, %xmm4
1099 ; SSE41-NEXT: psrad $2, %xmm5
1100 ; SSE41-NEXT: paddd %xmm4, %xmm5
1101 ; SSE41-NEXT: movdqa {{.*#+}} xmm4 = [7,7,7,7]
1102 ; SSE41-NEXT: pmulld %xmm4, %xmm5
1103 ; SSE41-NEXT: psubd %xmm5, %xmm0
1104 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm1[1,1,3,3]
1105 ; SSE41-NEXT: pmuldq %xmm3, %xmm5
1106 ; SSE41-NEXT: pmuldq %xmm1, %xmm2
1107 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[1,1,3,3]
1108 ; SSE41-NEXT: pblendw {{.*#+}} xmm2 = xmm2[0,1],xmm5[2,3],xmm2[4,5],xmm5[6,7]
1109 ; SSE41-NEXT: paddd %xmm1, %xmm2
1110 ; SSE41-NEXT: movdqa %xmm2, %xmm3
1111 ; SSE41-NEXT: psrld $31, %xmm3
1112 ; SSE41-NEXT: psrad $2, %xmm2
1113 ; SSE41-NEXT: paddd %xmm3, %xmm2
1114 ; SSE41-NEXT: pmulld %xmm4, %xmm2
1115 ; SSE41-NEXT: psubd %xmm2, %xmm1
1116 ; SSE41-NEXT: retq
1199 ; SSE41-LABEL: test12:
1200 ; SSE41: # BB#0:
1201 ; SSE41-NEXT: xorps %xmm0, %xmm0
1202 ; SSE41-NEXT: retq
1220 ; SSE41-LABEL: PR20355:
1221 ; SSE41: # BB#0: # %entry
1222 ; SSE41-NEXT: movdqa {{.*#+}} xmm1 = [1431655766,1431655766,1431655766,1431655766]
1223 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm1[1,1,3,3]
1224 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm0[1,1,3,3]
1225 ; SSE41-NEXT: pmuldq %xmm2, %xmm3
1226 ; SSE41-NEXT: pmuldq %xmm1, %xmm0
1227 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[1,1,3,3]
1228 ; SSE41-NEXT: pblendw {{.*#+}} xmm1 = xmm1[0,1],xmm3[2,3],xmm1[4,5],xmm3[6,7]
1229 ; SSE41-NEXT: movdqa %xmm1, %xmm0
1230 ; SSE41-NEXT: psrld $31, %xmm0
1231 ; SSE41-NEXT: paddd %xmm1, %xmm0
1232 ; SSE41-NEXT: retq