@@ -335,11 +335,22 @@ define <4 x i32> @mul_v4i32_17(<4 x i32> %a0) nounwind {
335335; SSE-NEXT: paddd %xmm1, %xmm0
336336; SSE-NEXT: ret{{[l|q]}}
337337;
338- ; X64-AVX-LABEL: mul_v4i32_17:
339- ; X64-AVX: # %bb.0:
340- ; X64-AVX-NEXT: vpslld $4, %xmm0, %xmm1
341- ; X64-AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
342- ; X64-AVX-NEXT: retq
338+ ; X64-XOP-LABEL: mul_v4i32_17:
339+ ; X64-XOP: # %bb.0:
340+ ; X64-XOP-NEXT: vpslld $4, %xmm0, %xmm1
341+ ; X64-XOP-NEXT: vpaddd %xmm1, %xmm0, %xmm0
342+ ; X64-XOP-NEXT: retq
343+ ;
344+ ; X64-AVX2-LABEL: mul_v4i32_17:
345+ ; X64-AVX2: # %bb.0:
346+ ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [17,17,17,17]
347+ ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
348+ ; X64-AVX2-NEXT: retq
349+ ;
350+ ; X64-AVX512DQ-LABEL: mul_v4i32_17:
351+ ; X64-AVX512DQ: # %bb.0:
352+ ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
353+ ; X64-AVX512DQ-NEXT: retq
343354 %1 = mul <4 x i32 > %a0 , <i32 17 , i32 17 , i32 17 , i32 17 >
344355 ret <4 x i32 > %1
345356}
@@ -460,14 +471,13 @@ define <8 x i32> @mul_v8i32_17(<8 x i32> %a0) nounwind {
460471;
461472; X64-AVX2-LABEL: mul_v8i32_17:
462473; X64-AVX2: # %bb.0:
463- ; X64-AVX2-NEXT: vpslld $4, %ymm0, % ymm1
464- ; X64-AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
474+ ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [17,17,17,17,17,17,17,17]
475+ ; X64-AVX2-NEXT: vpmulld %ymm1, %ymm0, %ymm0
465476; X64-AVX2-NEXT: retq
466477;
467478; X64-AVX512DQ-LABEL: mul_v8i32_17:
468479; X64-AVX512DQ: # %bb.0:
469- ; X64-AVX512DQ-NEXT: vpslld $4, %ymm0, %ymm1
470- ; X64-AVX512DQ-NEXT: vpaddd %ymm1, %ymm0, %ymm0
480+ ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
471481; X64-AVX512DQ-NEXT: retq
472482 %1 = mul <8 x i32 > %a0 , <i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 >
473483 ret <8 x i32 > %1
@@ -586,13 +596,24 @@ define <4 x i32> @mul_v4i32_neg33(<4 x i32> %a0) nounwind {
586596; SSE-NEXT: psubd %xmm1, %xmm0
587597; SSE-NEXT: ret{{[l|q]}}
588598;
589- ; X64-AVX-LABEL: mul_v4i32_neg33:
590- ; X64-AVX: # %bb.0:
591- ; X64-AVX-NEXT: vpslld $5, %xmm0, %xmm1
592- ; X64-AVX-NEXT: vpaddd %xmm1, %xmm0, %xmm0
593- ; X64-AVX-NEXT: vpxor %xmm1, %xmm1, %xmm1
594- ; X64-AVX-NEXT: vpsubd %xmm0, %xmm1, %xmm0
595- ; X64-AVX-NEXT: retq
599+ ; X64-XOP-LABEL: mul_v4i32_neg33:
600+ ; X64-XOP: # %bb.0:
601+ ; X64-XOP-NEXT: vpslld $5, %xmm0, %xmm1
602+ ; X64-XOP-NEXT: vpaddd %xmm1, %xmm0, %xmm0
603+ ; X64-XOP-NEXT: vpxor %xmm1, %xmm1, %xmm1
604+ ; X64-XOP-NEXT: vpsubd %xmm0, %xmm1, %xmm0
605+ ; X64-XOP-NEXT: retq
606+ ;
607+ ; X64-AVX2-LABEL: mul_v4i32_neg33:
608+ ; X64-AVX2: # %bb.0:
609+ ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967263,4294967263,4294967263,4294967263]
610+ ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
611+ ; X64-AVX2-NEXT: retq
612+ ;
613+ ; X64-AVX512DQ-LABEL: mul_v4i32_neg33:
614+ ; X64-AVX512DQ: # %bb.0:
615+ ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
616+ ; X64-AVX512DQ-NEXT: retq
596617 %1 = mul <4 x i32 > %a0 , <i32 -33 , i32 -33 , i32 -33 , i32 -33 >
597618 ret <4 x i32 > %1
598619}
@@ -747,18 +768,13 @@ define <8 x i32> @mul_v8i32_neg33(<8 x i32> %a0) nounwind {
747768;
748769; X64-AVX2-LABEL: mul_v8i32_neg33:
749770; X64-AVX2: # %bb.0:
750- ; X64-AVX2-NEXT: vpslld $5, %ymm0, %ymm1
751- ; X64-AVX2-NEXT: vpaddd %ymm1, %ymm0, %ymm0
752- ; X64-AVX2-NEXT: vpxor %xmm1, %xmm1, %xmm1
753- ; X64-AVX2-NEXT: vpsubd %ymm0, %ymm1, %ymm0
771+ ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} ymm1 = [4294967263,4294967263,4294967263,4294967263,4294967263,4294967263,4294967263,4294967263]
772+ ; X64-AVX2-NEXT: vpmulld %ymm1, %ymm0, %ymm0
754773; X64-AVX2-NEXT: retq
755774;
756775; X64-AVX512DQ-LABEL: mul_v8i32_neg33:
757776; X64-AVX512DQ: # %bb.0:
758- ; X64-AVX512DQ-NEXT: vpslld $5, %ymm0, %ymm1
759- ; X64-AVX512DQ-NEXT: vpaddd %ymm1, %ymm0, %ymm0
760- ; X64-AVX512DQ-NEXT: vpxor %xmm1, %xmm1, %xmm1
761- ; X64-AVX512DQ-NEXT: vpsubd %ymm0, %ymm1, %ymm0
777+ ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
762778; X64-AVX512DQ-NEXT: retq
763779 %1 = mul <8 x i32 > %a0 , <i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 >
764780 ret <8 x i32 > %1
@@ -1097,11 +1113,22 @@ define <4 x i32> @mul_v4i32_7(<4 x i32> %a0) nounwind {
10971113; SSE-NEXT: movdqa %xmm1, %xmm0
10981114; SSE-NEXT: ret{{[l|q]}}
10991115;
1100- ; X64-AVX-LABEL: mul_v4i32_7:
1101- ; X64-AVX: # %bb.0:
1102- ; X64-AVX-NEXT: vpslld $3, %xmm0, %xmm1
1103- ; X64-AVX-NEXT: vpsubd %xmm0, %xmm1, %xmm0
1104- ; X64-AVX-NEXT: retq
1116+ ; X64-XOP-LABEL: mul_v4i32_7:
1117+ ; X64-XOP: # %bb.0:
1118+ ; X64-XOP-NEXT: vpslld $3, %xmm0, %xmm1
1119+ ; X64-XOP-NEXT: vpsubd %xmm0, %xmm1, %xmm0
1120+ ; X64-XOP-NEXT: retq
1121+ ;
1122+ ; X64-AVX2-LABEL: mul_v4i32_7:
1123+ ; X64-AVX2: # %bb.0:
1124+ ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [7,7,7,7]
1125+ ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
1126+ ; X64-AVX2-NEXT: retq
1127+ ;
1128+ ; X64-AVX512DQ-LABEL: mul_v4i32_7:
1129+ ; X64-AVX512DQ: # %bb.0:
1130+ ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
1131+ ; X64-AVX512DQ-NEXT: retq
11051132 %1 = mul <4 x i32 > %a0 , <i32 7 , i32 7 , i32 7 , i32 7 >
11061133 ret <4 x i32 > %1
11071134}
@@ -1195,11 +1222,22 @@ define <4 x i32> @mul_v4i32_neg63(<4 x i32> %a0) nounwind {
11951222; SSE-NEXT: psubd %xmm1, %xmm0
11961223; SSE-NEXT: ret{{[l|q]}}
11971224;
1198- ; X64-AVX-LABEL: mul_v4i32_neg63:
1199- ; X64-AVX: # %bb.0:
1200- ; X64-AVX-NEXT: vpslld $6, %xmm0, %xmm1
1201- ; X64-AVX-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1202- ; X64-AVX-NEXT: retq
1225+ ; X64-XOP-LABEL: mul_v4i32_neg63:
1226+ ; X64-XOP: # %bb.0:
1227+ ; X64-XOP-NEXT: vpslld $6, %xmm0, %xmm1
1228+ ; X64-XOP-NEXT: vpsubd %xmm1, %xmm0, %xmm0
1229+ ; X64-XOP-NEXT: retq
1230+ ;
1231+ ; X64-AVX2-LABEL: mul_v4i32_neg63:
1232+ ; X64-AVX2: # %bb.0:
1233+ ; X64-AVX2-NEXT: vpbroadcastd {{.*#+}} xmm1 = [4294967233,4294967233,4294967233,4294967233]
1234+ ; X64-AVX2-NEXT: vpmulld %xmm1, %xmm0, %xmm0
1235+ ; X64-AVX2-NEXT: retq
1236+ ;
1237+ ; X64-AVX512DQ-LABEL: mul_v4i32_neg63:
1238+ ; X64-AVX512DQ: # %bb.0:
1239+ ; X64-AVX512DQ-NEXT: vpmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
1240+ ; X64-AVX512DQ-NEXT: retq
12031241 %1 = mul <4 x i32 > %a0 , <i32 -63 , i32 -63 , i32 -63 , i32 -63 >
12041242 ret <4 x i32 > %1
12051243}
0 commit comments