Lines Matching refs:SSE41
3 …triple=x86_64-unknown-unknown -mattr=+sse4.1 | FileCheck %s --check-prefix=SSE --check-prefix=SSE41
26 ; SSE41-LABEL: mul_v16i8c:
27 ; SSE41: # BB#0: # %entry
28 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm1
29 ; SSE41-NEXT: pmovsxbw {{.*}}(%rip), %xmm2
30 ; SSE41-NEXT: pmullw %xmm2, %xmm1
31 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
32 ; SSE41-NEXT: pand %xmm3, %xmm1
33 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
34 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
35 ; SSE41-NEXT: pmullw %xmm2, %xmm0
36 ; SSE41-NEXT: pand %xmm3, %xmm0
37 ; SSE41-NEXT: packuswb %xmm0, %xmm1
38 ; SSE41-NEXT: movdqa %xmm1, %xmm0
39 ; SSE41-NEXT: retq
103 ; SSE41-LABEL: mul_v4i32c:
104 ; SSE41: # BB#0: # %entry
105 ; SSE41-NEXT: pmulld {{.*}}(%rip), %xmm0
106 ; SSE41-NEXT: retq
165 ; SSE41-LABEL: mul_v16i8:
166 ; SSE41: # BB#0: # %entry
167 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm3
168 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm2
169 ; SSE41-NEXT: pmullw %xmm3, %xmm2
170 ; SSE41-NEXT: movdqa {{.*#+}} xmm3 = [255,255,255,255,255,255,255,255]
171 ; SSE41-NEXT: pand %xmm3, %xmm2
172 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
173 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm1
174 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
175 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
176 ; SSE41-NEXT: pmullw %xmm1, %xmm0
177 ; SSE41-NEXT: pand %xmm3, %xmm0
178 ; SSE41-NEXT: packuswb %xmm0, %xmm2
179 ; SSE41-NEXT: movdqa %xmm2, %xmm0
180 ; SSE41-NEXT: retq
244 ; SSE41-LABEL: mul_v4i32:
245 ; SSE41: # BB#0: # %entry
246 ; SSE41-NEXT: pmulld %xmm1, %xmm0
247 ; SSE41-NEXT: retq
312 ; SSE41-LABEL: mul_v4i32spill:
313 ; SSE41: # BB#0: # %entry
314 ; SSE41-NEXT: subq $40, %rsp
315 ; SSE41-NEXT: movaps %xmm1, {{[0-9]+}}(%rsp) # 16-byte Spill
316 ; SSE41-NEXT: movaps %xmm0, (%rsp) # 16-byte Spill
317 ; SSE41-NEXT: callq foo
318 ; SSE41-NEXT: movdqa (%rsp), %xmm0 # 16-byte Reload
319 ; SSE41-NEXT: pmulld {{[0-9]+}}(%rsp), %xmm0 # 16-byte Folded Reload
320 ; SSE41-NEXT: addq $40, %rsp
321 ; SSE41-NEXT: retq
417 ; SSE41-LABEL: mul_v32i8c:
418 ; SSE41: # BB#0: # %entry
419 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm2
420 ; SSE41-NEXT: pmovsxbw {{.*}}(%rip), %xmm4
421 ; SSE41-NEXT: pmullw %xmm4, %xmm2
422 ; SSE41-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255]
423 ; SSE41-NEXT: pand %xmm5, %xmm2
424 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
425 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
426 ; SSE41-NEXT: pmullw %xmm4, %xmm0
427 ; SSE41-NEXT: pand %xmm5, %xmm0
428 ; SSE41-NEXT: packuswb %xmm0, %xmm2
429 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm3
430 ; SSE41-NEXT: pmullw %xmm4, %xmm3
431 ; SSE41-NEXT: pand %xmm5, %xmm3
432 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm1[2,3,0,1]
433 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
434 ; SSE41-NEXT: pmullw %xmm4, %xmm0
435 ; SSE41-NEXT: pand %xmm5, %xmm0
436 ; SSE41-NEXT: packuswb %xmm0, %xmm3
437 ; SSE41-NEXT: movdqa %xmm2, %xmm0
438 ; SSE41-NEXT: movdqa %xmm3, %xmm1
439 ; SSE41-NEXT: retq
524 ; SSE41-LABEL: mul_v8i32c:
525 ; SSE41: # BB#0: # %entry
526 ; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [117,117,117,117]
527 ; SSE41-NEXT: pmulld %xmm2, %xmm0
528 ; SSE41-NEXT: pmulld %xmm2, %xmm1
529 ; SSE41-NEXT: retq
609 ; SSE41-LABEL: mul_v32i8:
610 ; SSE41: # BB#0: # %entry
611 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm5
612 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm4
613 ; SSE41-NEXT: pmullw %xmm5, %xmm4
614 ; SSE41-NEXT: movdqa {{.*#+}} xmm5 = [255,255,255,255,255,255,255,255]
615 ; SSE41-NEXT: pand %xmm5, %xmm4
616 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
617 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm2
618 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm0[2,3,0,1]
619 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
620 ; SSE41-NEXT: pmullw %xmm2, %xmm0
621 ; SSE41-NEXT: pand %xmm5, %xmm0
622 ; SSE41-NEXT: packuswb %xmm0, %xmm4
623 ; SSE41-NEXT: pmovsxbw %xmm3, %xmm0
624 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm2
625 ; SSE41-NEXT: pmullw %xmm0, %xmm2
626 ; SSE41-NEXT: pand %xmm5, %xmm2
627 ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm3[2,3,0,1]
628 ; SSE41-NEXT: pmovsxbw %xmm0, %xmm0
629 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
630 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm1
631 ; SSE41-NEXT: pmullw %xmm0, %xmm1
632 ; SSE41-NEXT: pand %xmm5, %xmm1
633 ; SSE41-NEXT: packuswb %xmm1, %xmm2
634 ; SSE41-NEXT: movdqa %xmm4, %xmm0
635 ; SSE41-NEXT: movdqa %xmm2, %xmm1
636 ; SSE41-NEXT: retq
724 ; SSE41-LABEL: mul_v8i32:
725 ; SSE41: # BB#0: # %entry
726 ; SSE41-NEXT: pmulld %xmm2, %xmm0
727 ; SSE41-NEXT: pmulld %xmm3, %xmm1
728 ; SSE41-NEXT: retq
831 ; SSE41-LABEL: mul_v64i8c:
832 ; SSE41: # BB#0: # %entry
833 ; SSE41-NEXT: movdqa %xmm1, %xmm4
834 ; SSE41-NEXT: movdqa %xmm0, %xmm1
835 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm0
836 ; SSE41-NEXT: pmovsxbw {{.*}}(%rip), %xmm6
837 ; SSE41-NEXT: pmullw %xmm6, %xmm0
838 ; SSE41-NEXT: movdqa {{.*#+}} xmm7 = [255,255,255,255,255,255,255,255]
839 ; SSE41-NEXT: pand %xmm7, %xmm0
840 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
841 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm1
842 ; SSE41-NEXT: pmullw %xmm6, %xmm1
843 ; SSE41-NEXT: pand %xmm7, %xmm1
844 ; SSE41-NEXT: packuswb %xmm1, %xmm0
845 ; SSE41-NEXT: pmovsxbw %xmm4, %xmm1
846 ; SSE41-NEXT: pmullw %xmm6, %xmm1
847 ; SSE41-NEXT: pand %xmm7, %xmm1
848 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,3,0,1]
849 ; SSE41-NEXT: pmovsxbw %xmm4, %xmm4
850 ; SSE41-NEXT: pmullw %xmm6, %xmm4
851 ; SSE41-NEXT: pand %xmm7, %xmm4
852 ; SSE41-NEXT: packuswb %xmm4, %xmm1
853 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm4
854 ; SSE41-NEXT: pmullw %xmm6, %xmm4
855 ; SSE41-NEXT: pand %xmm7, %xmm4
856 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
857 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm2
858 ; SSE41-NEXT: pmullw %xmm6, %xmm2
859 ; SSE41-NEXT: pand %xmm7, %xmm2
860 ; SSE41-NEXT: packuswb %xmm2, %xmm4
861 ; SSE41-NEXT: pmovsxbw %xmm3, %xmm5
862 ; SSE41-NEXT: pmullw %xmm6, %xmm5
863 ; SSE41-NEXT: pand %xmm7, %xmm5
864 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm3[2,3,0,1]
865 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm2
866 ; SSE41-NEXT: pmullw %xmm6, %xmm2
867 ; SSE41-NEXT: pand %xmm7, %xmm2
868 ; SSE41-NEXT: packuswb %xmm2, %xmm5
869 ; SSE41-NEXT: movdqa %xmm4, %xmm2
870 ; SSE41-NEXT: movdqa %xmm5, %xmm3
871 ; SSE41-NEXT: retq
1016 ; SSE41-LABEL: mul_v64i8:
1017 ; SSE41: # BB#0: # %entry
1018 ; SSE41-NEXT: movdqa %xmm1, %xmm8
1019 ; SSE41-NEXT: movdqa %xmm0, %xmm1
1020 ; SSE41-NEXT: pmovsxbw %xmm4, %xmm9
1021 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm0
1022 ; SSE41-NEXT: pmullw %xmm9, %xmm0
1023 ; SSE41-NEXT: movdqa {{.*#+}} xmm9 = [255,255,255,255,255,255,255,255]
1024 ; SSE41-NEXT: pand %xmm9, %xmm0
1025 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm4[2,3,0,1]
1026 ; SSE41-NEXT: pmovsxbw %xmm4, %xmm4
1027 ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm1[2,3,0,1]
1028 ; SSE41-NEXT: pmovsxbw %xmm1, %xmm1
1029 ; SSE41-NEXT: pmullw %xmm4, %xmm1
1030 ; SSE41-NEXT: pand %xmm9, %xmm1
1031 ; SSE41-NEXT: packuswb %xmm1, %xmm0
1032 ; SSE41-NEXT: pmovsxbw %xmm5, %xmm4
1033 ; SSE41-NEXT: pmovsxbw %xmm8, %xmm1
1034 ; SSE41-NEXT: pmullw %xmm4, %xmm1
1035 ; SSE41-NEXT: pand %xmm9, %xmm1
1036 ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm5[2,3,0,1]
1037 ; SSE41-NEXT: pmovsxbw %xmm4, %xmm4
1038 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm8[2,3,0,1]
1039 ; SSE41-NEXT: pmovsxbw %xmm5, %xmm5
1040 ; SSE41-NEXT: pmullw %xmm4, %xmm5
1041 ; SSE41-NEXT: pand %xmm9, %xmm5
1042 ; SSE41-NEXT: packuswb %xmm5, %xmm1
1043 ; SSE41-NEXT: pmovsxbw %xmm6, %xmm5
1044 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm4
1045 ; SSE41-NEXT: pmullw %xmm5, %xmm4
1046 ; SSE41-NEXT: pand %xmm9, %xmm4
1047 ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm6[2,3,0,1]
1048 ; SSE41-NEXT: pmovsxbw %xmm5, %xmm5
1049 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm2[2,3,0,1]
1050 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm2
1051 ; SSE41-NEXT: pmullw %xmm5, %xmm2
1052 ; SSE41-NEXT: pand %xmm9, %xmm2
1053 ; SSE41-NEXT: packuswb %xmm2, %xmm4
1054 ; SSE41-NEXT: pmovsxbw %xmm7, %xmm2
1055 ; SSE41-NEXT: pmovsxbw %xmm3, %xmm5
1056 ; SSE41-NEXT: pmullw %xmm2, %xmm5
1057 ; SSE41-NEXT: pand %xmm9, %xmm5
1058 ; SSE41-NEXT: pshufd {{.*#+}} xmm2 = xmm7[2,3,0,1]
1059 ; SSE41-NEXT: pmovsxbw %xmm2, %xmm2
1060 ; SSE41-NEXT: pshufd {{.*#+}} xmm3 = xmm3[2,3,0,1]
1061 ; SSE41-NEXT: pmovsxbw %xmm3, %xmm3
1062 ; SSE41-NEXT: pmullw %xmm2, %xmm3
1063 ; SSE41-NEXT: pand %xmm9, %xmm3
1064 ; SSE41-NEXT: packuswb %xmm3, %xmm5
1065 ; SSE41-NEXT: movdqa %xmm4, %xmm2
1066 ; SSE41-NEXT: movdqa %xmm5, %xmm3
1067 ; SSE41-NEXT: retq