@@ -7,16 +7,9 @@ define { i16, i16 } @test_reduce_v16i16_with_umin(<16 x i16> %x, <16 x i16> %y)
77; SSE41: # %bb.0:
88; SSE41-NEXT: movdqa %xmm0, %xmm4
99; SSE41-NEXT: pminuw %xmm1, %xmm4
10- ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]
11- ; SSE41-NEXT: pminuw %xmm4, %xmm5
12- ; SSE41-NEXT: pshufd {{.*#+}} xmm6 = xmm5[1,1,1,1]
13- ; SSE41-NEXT: pminuw %xmm5, %xmm6
14- ; SSE41-NEXT: movdqa %xmm6, %xmm5
15- ; SSE41-NEXT: psrld $16, %xmm5
16- ; SSE41-NEXT: pminuw %xmm6, %xmm5
1710; SSE41-NEXT: phminposuw %xmm4, %xmm4
1811; SSE41-NEXT: movd %xmm4, %eax
19- ; SSE41-NEXT: pshuflw {{.*#+}} xmm4 = xmm5 [0,0,0,0,4,5,6,7]
12+ ; SSE41-NEXT: pshuflw {{.*#+}} xmm4 = xmm4 [0,0,0,0,4,5,6,7]
2013; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,0,1]
2114; SSE41-NEXT: pcmpeqw %xmm4, %xmm1
2215; SSE41-NEXT: pcmpeqd %xmm5, %xmm5
@@ -36,14 +29,8 @@ define { i16, i16 } @test_reduce_v16i16_with_umin(<16 x i16> %x, <16 x i16> %y)
3629; AVX2: # %bb.0:
3730; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
3831; AVX2-NEXT: vpminuw %xmm2, %xmm0, %xmm2
39- ; AVX2-NEXT: vpshufd {{.*#+}} xmm3 = xmm2[2,3,2,3]
40- ; AVX2-NEXT: vpminuw %xmm3, %xmm2, %xmm3
41- ; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm3[1,1,1,1]
42- ; AVX2-NEXT: vpminuw %xmm4, %xmm3, %xmm3
43- ; AVX2-NEXT: vpsrld $16, %xmm3, %xmm4
4432; AVX2-NEXT: vphminposuw %xmm2, %xmm2
4533; AVX2-NEXT: vmovd %xmm2, %eax
46- ; AVX2-NEXT: vpminuw %xmm4, %xmm3, %xmm2
4734; AVX2-NEXT: vpbroadcastw %xmm2, %ymm2
4835; AVX2-NEXT: vpcmpeqw %ymm2, %ymm0, %ymm0
4936; AVX2-NEXT: vpcmpeqd %ymm2, %ymm2, %ymm2
@@ -71,19 +58,12 @@ define { i16, i16 } @test_reduce_v16i16_with_umin(<16 x i16> %x, <16 x i16> %y)
7158define { i16 , i16 } @test_reduce_v16i16_with_add (<16 x i16 > %x , <16 x i16 > %y ) {
7259; SSE41-LABEL: test_reduce_v16i16_with_add:
7360; SSE41: # %bb.0: # %start
74- ; SSE41-NEXT: movdqa %xmm0, %xmm4
75- ; SSE41-NEXT: paddw %xmm1, %xmm4
76- ; SSE41-NEXT: pshufd {{.*#+}} xmm5 = xmm4[2,3,2,3]
77- ; SSE41-NEXT: paddw %xmm4, %xmm5
78- ; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm5[1,1,1,1]
79- ; SSE41-NEXT: paddw %xmm5, %xmm4
61+ ; SSE41-NEXT: movdqa %xmm1, %xmm4
62+ ; SSE41-NEXT: phaddw %xmm0, %xmm4
63+ ; SSE41-NEXT: phaddw %xmm4, %xmm4
8064; SSE41-NEXT: phaddw %xmm4, %xmm4
81- ; SSE41-NEXT: movdqa %xmm1, %xmm5
82- ; SSE41-NEXT: phaddw %xmm0, %xmm5
83- ; SSE41-NEXT: phaddw %xmm5, %xmm5
84- ; SSE41-NEXT: phaddw %xmm5, %xmm5
85- ; SSE41-NEXT: phaddw %xmm5, %xmm5
86- ; SSE41-NEXT: movd %xmm5, %eax
65+ ; SSE41-NEXT: phaddw %xmm4, %xmm4
66+ ; SSE41-NEXT: movd %xmm4, %eax
8767; SSE41-NEXT: pshuflw {{.*#+}} xmm4 = xmm4[0,0,0,0,4,5,6,7]
8868; SSE41-NEXT: pshufd {{.*#+}} xmm4 = xmm4[0,1,0,1]
8969; SSE41-NEXT: pcmpeqw %xmm4, %xmm1
@@ -103,18 +83,12 @@ define { i16, i16 } @test_reduce_v16i16_with_add(<16 x i16> %x, <16 x i16> %y) {
10383; AVX2-LABEL: test_reduce_v16i16_with_add:
10484; AVX2: # %bb.0: # %start
10585; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm2
106- ; AVX2-NEXT: vpaddw %xmm2, %xmm0, %xmm3
107- ; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm3[2,3,2,3]
108- ; AVX2-NEXT: vpaddw %xmm4, %xmm3, %xmm3
109- ; AVX2-NEXT: vpshufd {{.*#+}} xmm4 = xmm3[1,1,1,1]
110- ; AVX2-NEXT: vpaddw %xmm4, %xmm3, %xmm3
111- ; AVX2-NEXT: vphaddw %xmm3, %xmm3, %xmm3
11286; AVX2-NEXT: vphaddw %xmm0, %xmm2, %xmm2
11387; AVX2-NEXT: vphaddw %xmm2, %xmm2, %xmm2
11488; AVX2-NEXT: vphaddw %xmm2, %xmm2, %xmm2
11589; AVX2-NEXT: vphaddw %xmm2, %xmm2, %xmm2
11690; AVX2-NEXT: vmovd %xmm2, %eax
117- ; AVX2-NEXT: vpbroadcastw %xmm3 , %ymm2
91+ ; AVX2-NEXT: vpbroadcastw %xmm2 , %ymm2
11892; AVX2-NEXT: vpcmpeqw %ymm2, %ymm0, %ymm0
11993; AVX2-NEXT: vpcmpeqd %ymm2, %ymm2, %ymm2
12094; AVX2-NEXT: vpxor %ymm2, %ymm0, %ymm0
0 commit comments