@@ -34,61 +34,43 @@ define <32 x i8> @PR162812(<32 x i8> %a, <32 x i8> %mask) {
3434;
3535; SSE42-LABEL: PR162812:
3636; SSE42: # %bb.0:
37- ; SSE42-NEXT: movdqa %xmm2, %xmm5
38- ; SSE42-NEXT: movdqa %xmm0, %xmm2
37+ ; SSE42-NEXT: movdqa %xmm0, %xmm4
38+ ; SSE42-NEXT: psrlw $2, %xmm2
39+ ; SSE42-NEXT: movdqa {{.*#+}} xmm5 = [8224,8224,8224,8224,8224,8224,8224,8224]
40+ ; SSE42-NEXT: pand %xmm5, %xmm2
41+ ; SSE42-NEXT: paddb %xmm2, %xmm2
42+ ; SSE42-NEXT: paddb %xmm2, %xmm2
3943; SSE42-NEXT: movdqa %xmm0, %xmm6
40- ; SSE42-NEXT: psllw $2, %xmm6
41- ; SSE42-NEXT: movdqa {{.*#+}} xmm7 = [252,252,252,252,252,252,252,252,252,252,252,252,252,252,252,252]
42- ; SSE42-NEXT: pand %xmm7, %xmm6
43- ; SSE42-NEXT: psrlw $2, %xmm5
44- ; SSE42-NEXT: movdqa {{.*#+}} xmm4 = [8224,8224,8224,8224,8224,8224,8224,8224]
45- ; SSE42-NEXT: pand %xmm4, %xmm5
44+ ; SSE42-NEXT: paddb %xmm0, %xmm6
45+ ; SSE42-NEXT: movdqa %xmm2, %xmm0
46+ ; SSE42-NEXT: pblendvb %xmm0, %xmm6, %xmm4
47+ ; SSE42-NEXT: psrlw $2, %xmm3
48+ ; SSE42-NEXT: pand %xmm3, %xmm5
4649; SSE42-NEXT: paddb %xmm5, %xmm5
47- ; SSE42-NEXT: movdqa %xmm5, %xmm0
48- ; SSE42-NEXT: pblendvb %xmm0, %xmm6, %xmm2
49- ; SSE42-NEXT: movdqa %xmm2, %xmm6
50- ; SSE42-NEXT: paddb %xmm2, %xmm6
5150; SSE42-NEXT: paddb %xmm5, %xmm5
51+ ; SSE42-NEXT: movdqa %xmm1, %xmm2
52+ ; SSE42-NEXT: paddb %xmm1, %xmm2
5253; SSE42-NEXT: movdqa %xmm5, %xmm0
53- ; SSE42-NEXT: pblendvb %xmm0, %xmm6, %xmm2
54- ; SSE42-NEXT: movdqa %xmm1, %xmm5
55- ; SSE42-NEXT: psllw $2, %xmm5
56- ; SSE42-NEXT: pand %xmm7, %xmm5
57- ; SSE42-NEXT: psrlw $2, %xmm3
58- ; SSE42-NEXT: pand %xmm3, %xmm4
59- ; SSE42-NEXT: paddb %xmm4, %xmm4
60- ; SSE42-NEXT: movdqa %xmm4, %xmm0
61- ; SSE42-NEXT: pblendvb %xmm0, %xmm5, %xmm1
62- ; SSE42-NEXT: movdqa %xmm1, %xmm3
63- ; SSE42-NEXT: paddb %xmm1, %xmm3
64- ; SSE42-NEXT: paddb %xmm4, %xmm4
54+ ; SSE42-NEXT: pblendvb %xmm0, %xmm2, %xmm1
6555; SSE42-NEXT: movdqa %xmm4, %xmm0
66- ; SSE42-NEXT: pblendvb %xmm0, %xmm3, %xmm1
67- ; SSE42-NEXT: movdqa %xmm2, %xmm0
6856; SSE42-NEXT: retq
6957;
7058; AVX2-LABEL: PR162812:
7159; AVX2: # %bb.0:
72- ; AVX2-NEXT: vpsllw $2, %ymm0, %ymm2
73- ; AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm2, %ymm2
60+ ; AVX2-NEXT: vpaddb %ymm0, %ymm0, %ymm2
7461; AVX2-NEXT: vpsrlw $2, %ymm1, %ymm1
7562; AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm1, %ymm1
7663; AVX2-NEXT: vpaddb %ymm1, %ymm1, %ymm1
77- ; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
78- ; AVX2-NEXT: vpaddb %ymm0, %ymm0, %ymm2
7964; AVX2-NEXT: vpaddb %ymm1, %ymm1, %ymm1
8065; AVX2-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
8166; AVX2-NEXT: retq
8267;
8368; AVX512-LABEL: PR162812:
8469; AVX512: # %bb.0:
85- ; AVX512-NEXT: vpsllw $2, %ymm0, %ymm2
86- ; AVX512-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm2, %ymm2
70+ ; AVX512-NEXT: vpaddb %ymm0, %ymm0, %ymm2
8771; AVX512-NEXT: vpsrlw $2, %ymm1, %ymm1
8872; AVX512-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm1, %ymm1
8973; AVX512-NEXT: vpaddb %ymm1, %ymm1, %ymm1
90- ; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
91- ; AVX512-NEXT: vpaddb %ymm0, %ymm0, %ymm2
9274; AVX512-NEXT: vpaddb %ymm1, %ymm1, %ymm1
9375; AVX512-NEXT: vpblendvb %ymm1, %ymm2, %ymm0, %ymm0
9476; AVX512-NEXT: retq
0 commit comments