@@ -1171,23 +1171,21 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
11711171; SSE2-NEXT: pand %xmm8, %xmm5
11721172; SSE2-NEXT: pand %xmm8, %xmm4
11731173; SSE2-NEXT: packuswb %xmm5, %xmm4
1174+ ; SSE2-NEXT: paddb %xmm0, %xmm4
11741175; SSE2-NEXT: pand %xmm8, %xmm3
11751176; SSE2-NEXT: pand %xmm8, %xmm2
11761177; SSE2-NEXT: packuswb %xmm3, %xmm2
11771178; SSE2-NEXT: pand %xmm8, %xmm7
11781179; SSE2-NEXT: pand %xmm8, %xmm6
11791180; SSE2-NEXT: packuswb %xmm7, %xmm6
1180- ; SSE2-NEXT: pxor %xmm1 , %xmm1
1181- ; SSE2-NEXT: psadbw %xmm1 , %xmm6
1182- ; SSE2-NEXT: psadbw %xmm1 , %xmm2
1183- ; SSE2-NEXT: paddq %xmm6 , %xmm2
1184- ; SSE2-NEXT: psadbw %xmm1 , %xmm4
1185- ; SSE2-NEXT: psadbw %xmm1, % xmm0
1181+ ; SSE2-NEXT: paddb %xmm2 , %xmm6
1182+ ; SSE2-NEXT: pxor %xmm0 , %xmm0
1183+ ; SSE2-NEXT: psadbw %xmm0 , %xmm6
1184+ ; SSE2-NEXT: psadbw %xmm0 , %xmm4
1185+ ; SSE2-NEXT: paddq %xmm6 , %xmm4
1186+ ; SSE2-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]
11861187; SSE2-NEXT: paddq %xmm4, %xmm0
1187- ; SSE2-NEXT: paddq %xmm2, %xmm0
1188- ; SSE2-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1189- ; SSE2-NEXT: paddq %xmm0, %xmm1
1190- ; SSE2-NEXT: movd %xmm1, %eax
1188+ ; SSE2-NEXT: movd %xmm0, %eax
11911189; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
11921190; SSE2-NEXT: retq
11931191;
@@ -1200,23 +1198,21 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
12001198; SSE41-NEXT: pand %xmm8, %xmm5
12011199; SSE41-NEXT: pand %xmm8, %xmm4
12021200; SSE41-NEXT: packuswb %xmm5, %xmm4
1201+ ; SSE41-NEXT: paddb %xmm0, %xmm4
12031202; SSE41-NEXT: pand %xmm8, %xmm3
12041203; SSE41-NEXT: pand %xmm8, %xmm2
12051204; SSE41-NEXT: packuswb %xmm3, %xmm2
12061205; SSE41-NEXT: pand %xmm8, %xmm7
12071206; SSE41-NEXT: pand %xmm8, %xmm6
12081207; SSE41-NEXT: packuswb %xmm7, %xmm6
1209- ; SSE41-NEXT: pxor %xmm1 , %xmm1
1210- ; SSE41-NEXT: psadbw %xmm1 , %xmm6
1211- ; SSE41-NEXT: psadbw %xmm1 , %xmm2
1212- ; SSE41-NEXT: paddq %xmm6 , %xmm2
1213- ; SSE41-NEXT: psadbw %xmm1 , %xmm4
1214- ; SSE41-NEXT: psadbw %xmm1, % xmm0
1208+ ; SSE41-NEXT: paddb %xmm2 , %xmm6
1209+ ; SSE41-NEXT: pxor %xmm0 , %xmm0
1210+ ; SSE41-NEXT: psadbw %xmm0 , %xmm6
1211+ ; SSE41-NEXT: psadbw %xmm0 , %xmm4
1212+ ; SSE41-NEXT: paddq %xmm6 , %xmm4
1213+ ; SSE41-NEXT: pshufd {{.*#+}} xmm0 = xmm4[2,3,2,3]
12151214; SSE41-NEXT: paddq %xmm4, %xmm0
1216- ; SSE41-NEXT: paddq %xmm2, %xmm0
1217- ; SSE41-NEXT: pshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1218- ; SSE41-NEXT: paddq %xmm0, %xmm1
1219- ; SSE41-NEXT: movd %xmm1, %eax
1215+ ; SSE41-NEXT: movd %xmm0, %eax
12201216; SSE41-NEXT: # kill: def $ax killed $ax killed $eax
12211217; SSE41-NEXT: retq
12221218;
@@ -1229,19 +1225,17 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
12291225; AVX1-NEXT: vandps %ymm4, %ymm3, %ymm3
12301226; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
12311227; AVX1-NEXT: vpackuswb %xmm4, %xmm3, %xmm3
1232- ; AVX1-NEXT: vpxor %xmm4, %xmm4, %xmm4
1233- ; AVX1-NEXT: vpsadbw %xmm4, %xmm3, %xmm3
1234- ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm5
1235- ; AVX1-NEXT: vpackuswb %xmm5, %xmm1, %xmm1
1236- ; AVX1-NEXT: vpsadbw %xmm4, %xmm1, %xmm1
1237- ; AVX1-NEXT: vpaddq %xmm3, %xmm1, %xmm1
1238- ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm3
1239- ; AVX1-NEXT: vpackuswb %xmm3, %xmm2, %xmm2
1240- ; AVX1-NEXT: vpsadbw %xmm4, %xmm2, %xmm2
1241- ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm3
1242- ; AVX1-NEXT: vpackuswb %xmm3, %xmm0, %xmm0
1243- ; AVX1-NEXT: vpsadbw %xmm4, %xmm0, %xmm0
1244- ; AVX1-NEXT: vpaddq %xmm2, %xmm0, %xmm0
1228+ ; AVX1-NEXT: vextractf128 $1, %ymm1, %xmm4
1229+ ; AVX1-NEXT: vpackuswb %xmm4, %xmm1, %xmm1
1230+ ; AVX1-NEXT: vpaddb %xmm3, %xmm1, %xmm1
1231+ ; AVX1-NEXT: vpxor %xmm3, %xmm3, %xmm3
1232+ ; AVX1-NEXT: vpsadbw %xmm3, %xmm1, %xmm1
1233+ ; AVX1-NEXT: vextractf128 $1, %ymm2, %xmm4
1234+ ; AVX1-NEXT: vpackuswb %xmm4, %xmm2, %xmm2
1235+ ; AVX1-NEXT: vextractf128 $1, %ymm0, %xmm4
1236+ ; AVX1-NEXT: vpackuswb %xmm4, %xmm0, %xmm0
1237+ ; AVX1-NEXT: vpaddb %xmm2, %xmm0, %xmm0
1238+ ; AVX1-NEXT: vpsadbw %xmm3, %xmm0, %xmm0
12451239; AVX1-NEXT: vpaddq %xmm1, %xmm0, %xmm0
12461240; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
12471241; AVX1-NEXT: vpaddq %xmm1, %xmm0, %xmm0
@@ -1259,12 +1253,10 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
12591253; AVX2-NEXT: vpand %ymm4, %ymm3, %ymm1
12601254; AVX2-NEXT: vpand %ymm4, %ymm2, %ymm2
12611255; AVX2-NEXT: vpackuswb %ymm1, %ymm2, %ymm1
1262- ; AVX2-NEXT: vpermq {{.*#+}} ymm1 = ymm1[0,2,1,3]
1263- ; AVX2-NEXT: vpxor %xmm2, %xmm2, %xmm2
1264- ; AVX2-NEXT: vpsadbw %ymm2, %ymm1, %ymm1
1256+ ; AVX2-NEXT: vpaddb %ymm1, %ymm0, %ymm0
12651257; AVX2-NEXT: vpermq {{.*#+}} ymm0 = ymm0[0,2,1,3]
1266- ; AVX2-NEXT: vpsadbw %ymm2 , %ymm0 , %ymm0
1267- ; AVX2-NEXT: vpaddq %ymm1, %ymm0, %ymm0
1258+ ; AVX2-NEXT: vpxor %xmm1 , %xmm1 , %xmm1
1259+ ; AVX2-NEXT: vpsadbw %ymm1, %ymm0, %ymm0
12681260; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
12691261; AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
12701262; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
0 commit comments