@@ -335,11 +335,22 @@ define <4 x i32> @mul_v4i32_17(<4 x i32> %a0) nounwind {
335
335
; SSE-NEXT: paddd %xmm1, %xmm0
336
336
; SSE-NEXT: ret{{[l|q]}}
337
337
;
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
343
354
%1 = mul <4 x i32 > %a0 , <i32 17 , i32 17 , i32 17 , i32 17 >
344
355
ret <4 x i32 > %1
345
356
}
@@ -460,14 +471,13 @@ define <8 x i32> @mul_v8i32_17(<8 x i32> %a0) nounwind {
460
471
;
461
472
; X64-AVX2-LABEL: mul_v8i32_17:
462
473
; 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
465
476
; X64-AVX2-NEXT: retq
466
477
;
467
478
; X64-AVX512DQ-LABEL: mul_v8i32_17:
468
479
; 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
471
481
; X64-AVX512DQ-NEXT: retq
472
482
%1 = mul <8 x i32 > %a0 , <i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 , i32 17 >
473
483
ret <8 x i32 > %1
@@ -586,13 +596,24 @@ define <4 x i32> @mul_v4i32_neg33(<4 x i32> %a0) nounwind {
586
596
; SSE-NEXT: psubd %xmm1, %xmm0
587
597
; SSE-NEXT: ret{{[l|q]}}
588
598
;
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
596
617
%1 = mul <4 x i32 > %a0 , <i32 -33 , i32 -33 , i32 -33 , i32 -33 >
597
618
ret <4 x i32 > %1
598
619
}
@@ -747,18 +768,13 @@ define <8 x i32> @mul_v8i32_neg33(<8 x i32> %a0) nounwind {
747
768
;
748
769
; X64-AVX2-LABEL: mul_v8i32_neg33:
749
770
; 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
754
773
; X64-AVX2-NEXT: retq
755
774
;
756
775
; X64-AVX512DQ-LABEL: mul_v8i32_neg33:
757
776
; 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
762
778
; X64-AVX512DQ-NEXT: retq
763
779
%1 = mul <8 x i32 > %a0 , <i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 , i32 -33 >
764
780
ret <8 x i32 > %1
@@ -1097,11 +1113,22 @@ define <4 x i32> @mul_v4i32_7(<4 x i32> %a0) nounwind {
1097
1113
; SSE-NEXT: movdqa %xmm1, %xmm0
1098
1114
; SSE-NEXT: ret{{[l|q]}}
1099
1115
;
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
1105
1132
%1 = mul <4 x i32 > %a0 , <i32 7 , i32 7 , i32 7 , i32 7 >
1106
1133
ret <4 x i32 > %1
1107
1134
}
@@ -1195,11 +1222,22 @@ define <4 x i32> @mul_v4i32_neg63(<4 x i32> %a0) nounwind {
1195
1222
; SSE-NEXT: psubd %xmm1, %xmm0
1196
1223
; SSE-NEXT: ret{{[l|q]}}
1197
1224
;
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
1203
1241
%1 = mul <4 x i32 > %a0 , <i32 -63 , i32 -63 , i32 -63 , i32 -63 >
1204
1242
ret <4 x i32 > %1
1205
1243
}
0 commit comments