@@ -1171,23 +1171,21 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
1171
1171
; SSE2-NEXT: pand %xmm8, %xmm5
1172
1172
; SSE2-NEXT: pand %xmm8, %xmm4
1173
1173
; SSE2-NEXT: packuswb %xmm5, %xmm4
1174
+ ; SSE2-NEXT: paddb %xmm0, %xmm4
1174
1175
; SSE2-NEXT: pand %xmm8, %xmm3
1175
1176
; SSE2-NEXT: pand %xmm8, %xmm2
1176
1177
; SSE2-NEXT: packuswb %xmm3, %xmm2
1177
1178
; SSE2-NEXT: pand %xmm8, %xmm7
1178
1179
; SSE2-NEXT: pand %xmm8, %xmm6
1179
1180
; 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]
1186
1187
; 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
1191
1189
; SSE2-NEXT: # kill: def $ax killed $ax killed $eax
1192
1190
; SSE2-NEXT: retq
1193
1191
;
@@ -1200,23 +1198,21 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
1200
1198
; SSE41-NEXT: pand %xmm8, %xmm5
1201
1199
; SSE41-NEXT: pand %xmm8, %xmm4
1202
1200
; SSE41-NEXT: packuswb %xmm5, %xmm4
1201
+ ; SSE41-NEXT: paddb %xmm0, %xmm4
1203
1202
; SSE41-NEXT: pand %xmm8, %xmm3
1204
1203
; SSE41-NEXT: pand %xmm8, %xmm2
1205
1204
; SSE41-NEXT: packuswb %xmm3, %xmm2
1206
1205
; SSE41-NEXT: pand %xmm8, %xmm7
1207
1206
; SSE41-NEXT: pand %xmm8, %xmm6
1208
1207
; 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]
1215
1214
; 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
1220
1216
; SSE41-NEXT: # kill: def $ax killed $ax killed $eax
1221
1217
; SSE41-NEXT: retq
1222
1218
;
@@ -1229,19 +1225,17 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
1229
1225
; AVX1-NEXT: vandps %ymm4, %ymm3, %ymm3
1230
1226
; AVX1-NEXT: vextractf128 $1, %ymm3, %xmm4
1231
1227
; 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
1245
1239
; AVX1-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1246
1240
; AVX1-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
1247
1241
; AVX1-NEXT: vpaddq %xmm1, %xmm0, %xmm0
@@ -1259,12 +1253,10 @@ define i16 @test_v64i16_v64i8(<64 x i16> %a0) {
1259
1253
; AVX2-NEXT: vpand %ymm4, %ymm3, %ymm1
1260
1254
; AVX2-NEXT: vpand %ymm4, %ymm2, %ymm2
1261
1255
; 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
1265
1257
; 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
1268
1260
; AVX2-NEXT: vextracti128 $1, %ymm0, %xmm1
1269
1261
; AVX2-NEXT: vpaddq %xmm1, %xmm0, %xmm0
1270
1262
; AVX2-NEXT: vpshufd {{.*#+}} xmm1 = xmm0[2,3,2,3]
0 commit comments