@@ -309,9 +309,8 @@ define <4 x i32> @var_shuffle_zero_v4i32(<4 x i32> %v, <4 x i32> %indices) nounw
309
309
; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3]
310
310
; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
311
311
; SSSE3-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
312
+ ; SSSE3-NEXT: por %xmm2, %xmm1
312
313
; SSSE3-NEXT: pshufb %xmm1, %xmm0
313
- ; SSSE3-NEXT: pandn %xmm0, %xmm2
314
- ; SSSE3-NEXT: movdqa %xmm2, %xmm0
315
314
; SSSE3-NEXT: retq
316
315
;
317
316
; SSE41-LABEL: var_shuffle_zero_v4i32:
@@ -322,9 +321,8 @@ define <4 x i32> @var_shuffle_zero_v4i32(<4 x i32> %v, <4 x i32> %indices) nounw
322
321
; SSE41-NEXT: por %xmm2, %xmm1
323
322
; SSE41-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
324
323
; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
324
+ ; SSE41-NEXT: por %xmm2, %xmm1
325
325
; SSE41-NEXT: pshufb %xmm1, %xmm0
326
- ; SSE41-NEXT: pandn %xmm0, %xmm2
327
- ; SSE41-NEXT: movdqa %xmm2, %xmm0
328
326
; SSE41-NEXT: retq
329
327
;
330
328
; XOP-LABEL: var_shuffle_zero_v4i32:
@@ -545,16 +543,15 @@ define <8 x i16> @var_shuffle_zero_v8i16(<8 x i16> %v, <8 x i16> %indices) nounw
545
543
;
546
544
; SSSE3-LABEL: var_shuffle_zero_v8i16:
547
545
; SSSE3: # %bb.0:
548
- ; SSSE3-NEXT: movdqa {{.*#+}} xmm3 = [8,8,8,8,8,8,8,8]
549
- ; SSSE3-NEXT: psubusw %xmm1, %xmm3
550
- ; SSSE3-NEXT: pxor %xmm2 , %xmm2
551
- ; SSSE3-NEXT: pcmpeqw %xmm3 , %xmm2
552
- ; SSSE3-NEXT: por %xmm2 , %xmm1
546
+ ; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [8,8,8,8,8,8,8,8]
547
+ ; SSSE3-NEXT: psubusw %xmm1, %xmm2
548
+ ; SSSE3-NEXT: pxor %xmm3 , %xmm3
549
+ ; SSSE3-NEXT: pcmpeqw %xmm2 , %xmm3
550
+ ; SSSE3-NEXT: por %xmm3 , %xmm1
553
551
; SSSE3-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1 # [514,514,514,514,514,514,514,514]
554
552
; SSSE3-NEXT: paddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
553
+ ; SSSE3-NEXT: por %xmm3, %xmm1
555
554
; SSSE3-NEXT: pshufb %xmm1, %xmm0
556
- ; SSSE3-NEXT: pandn %xmm0, %xmm2
557
- ; SSSE3-NEXT: movdqa %xmm2, %xmm0
558
555
; SSSE3-NEXT: retq
559
556
;
560
557
; SSE41-LABEL: var_shuffle_zero_v8i16:
@@ -565,9 +562,8 @@ define <8 x i16> @var_shuffle_zero_v8i16(<8 x i16> %v, <8 x i16> %indices) nounw
565
562
; SSE41-NEXT: por %xmm2, %xmm1
566
563
; SSE41-NEXT: pmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1 # [514,514,514,514,514,514,514,514]
567
564
; SSE41-NEXT: paddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
565
+ ; SSE41-NEXT: por %xmm2, %xmm1
568
566
; SSE41-NEXT: pshufb %xmm1, %xmm0
569
- ; SSE41-NEXT: pandn %xmm0, %xmm2
570
- ; SSE41-NEXT: movdqa %xmm2, %xmm0
571
567
; SSE41-NEXT: retq
572
568
;
573
569
; XOP-LABEL: var_shuffle_zero_v8i16:
@@ -576,8 +572,8 @@ define <8 x i16> @var_shuffle_zero_v8i16(<8 x i16> %v, <8 x i16> %indices) nounw
576
572
; XOP-NEXT: vpor %xmm1, %xmm2, %xmm1
577
573
; XOP-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1 # [514,514,514,514,514,514,514,514]
578
574
; XOP-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
575
+ ; XOP-NEXT: vpor %xmm2, %xmm1, %xmm1
579
576
; XOP-NEXT: vpshufb %xmm1, %xmm0, %xmm0
580
- ; XOP-NEXT: vpandn %xmm0, %xmm2, %xmm0
581
577
; XOP-NEXT: retq
582
578
;
583
579
; AVX1-LABEL: var_shuffle_zero_v8i16:
@@ -587,8 +583,8 @@ define <8 x i16> @var_shuffle_zero_v8i16(<8 x i16> %v, <8 x i16> %indices) nounw
587
583
; AVX1-NEXT: vpor %xmm1, %xmm2, %xmm1
588
584
; AVX1-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1 # [514,514,514,514,514,514,514,514]
589
585
; AVX1-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
586
+ ; AVX1-NEXT: vpor %xmm2, %xmm1, %xmm1
590
587
; AVX1-NEXT: vpshufb %xmm1, %xmm0, %xmm0
591
- ; AVX1-NEXT: vpandn %xmm0, %xmm2, %xmm0
592
588
; AVX1-NEXT: retq
593
589
;
594
590
; AVX2-LABEL: var_shuffle_zero_v8i16:
@@ -598,8 +594,8 @@ define <8 x i16> @var_shuffle_zero_v8i16(<8 x i16> %v, <8 x i16> %indices) nounw
598
594
; AVX2-NEXT: vpor %xmm1, %xmm2, %xmm1
599
595
; AVX2-NEXT: vpmullw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1 # [514,514,514,514,514,514,514,514]
600
596
; AVX2-NEXT: vpaddw {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm1
597
+ ; AVX2-NEXT: vpor %xmm2, %xmm1, %xmm1
601
598
; AVX2-NEXT: vpshufb %xmm1, %xmm0, %xmm0
602
- ; AVX2-NEXT: vpandn %xmm0, %xmm2, %xmm0
603
599
; AVX2-NEXT: retq
604
600
;
605
601
; AVX512VL-LABEL: var_shuffle_zero_v8i16:
@@ -889,29 +885,24 @@ define <16 x i8> @var_shuffle_zero_v16i8(<16 x i8> %v, <16 x i8> %indices) nounw
889
885
; SSSE3-NEXT: movdqa {{.*#+}} xmm2 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]
890
886
; SSSE3-NEXT: pmaxub %xmm1, %xmm2
891
887
; SSSE3-NEXT: pcmpeqb %xmm1, %xmm2
892
- ; SSSE3-NEXT: por %xmm2, %xmm1
893
- ; SSSE3-NEXT: pshufb %xmm1, %xmm0
894
- ; SSSE3-NEXT: pandn %xmm0, %xmm2
895
- ; SSSE3-NEXT: movdqa %xmm2, %xmm0
888
+ ; SSSE3-NEXT: por %xmm1, %xmm2
889
+ ; SSSE3-NEXT: pshufb %xmm2, %xmm0
896
890
; SSSE3-NEXT: retq
897
891
;
898
892
; SSE41-LABEL: var_shuffle_zero_v16i8:
899
893
; SSE41: # %bb.0:
900
894
; SSE41-NEXT: movdqa {{.*#+}} xmm2 = [16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16]
901
895
; SSE41-NEXT: pmaxub %xmm1, %xmm2
902
896
; SSE41-NEXT: pcmpeqb %xmm1, %xmm2
903
- ; SSE41-NEXT: por %xmm2, %xmm1
904
- ; SSE41-NEXT: pshufb %xmm1, %xmm0
905
- ; SSE41-NEXT: pandn %xmm0, %xmm2
906
- ; SSE41-NEXT: movdqa %xmm2, %xmm0
897
+ ; SSE41-NEXT: por %xmm1, %xmm2
898
+ ; SSE41-NEXT: pshufb %xmm2, %xmm0
907
899
; SSE41-NEXT: retq
908
900
;
909
901
; XOP-LABEL: var_shuffle_zero_v16i8:
910
902
; XOP: # %bb.0:
911
903
; XOP-NEXT: vpcomgtub {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1, %xmm2
912
904
; XOP-NEXT: vpor %xmm1, %xmm2, %xmm1
913
905
; XOP-NEXT: vpshufb %xmm1, %xmm0, %xmm0
914
- ; XOP-NEXT: vpandn %xmm0, %xmm2, %xmm0
915
906
; XOP-NEXT: retq
916
907
;
917
908
; AVX1-LABEL: var_shuffle_zero_v16i8:
@@ -920,7 +911,6 @@ define <16 x i8> @var_shuffle_zero_v16i8(<16 x i8> %v, <16 x i8> %indices) nounw
920
911
; AVX1-NEXT: vpcmpeqb %xmm2, %xmm1, %xmm2
921
912
; AVX1-NEXT: vpor %xmm1, %xmm2, %xmm1
922
913
; AVX1-NEXT: vpshufb %xmm1, %xmm0, %xmm0
923
- ; AVX1-NEXT: vpandn %xmm0, %xmm2, %xmm0
924
914
; AVX1-NEXT: retq
925
915
;
926
916
; AVX2-LABEL: var_shuffle_zero_v16i8:
@@ -929,7 +919,6 @@ define <16 x i8> @var_shuffle_zero_v16i8(<16 x i8> %v, <16 x i8> %indices) nounw
929
919
; AVX2-NEXT: vpcmpeqb %xmm2, %xmm1, %xmm2
930
920
; AVX2-NEXT: vpor %xmm1, %xmm2, %xmm1
931
921
; AVX2-NEXT: vpshufb %xmm1, %xmm0, %xmm0
932
- ; AVX2-NEXT: vpandn %xmm0, %xmm2, %xmm0
933
922
; AVX2-NEXT: retq
934
923
;
935
924
; AVX512VL-LABEL: var_shuffle_zero_v16i8:
@@ -1289,9 +1278,8 @@ define <4 x float> @var_shuffle_zero_v4f32(<4 x float> %v, <4 x i32> %indices) n
1289
1278
; SSSE3-NEXT: pshufd {{.*#+}} xmm3 = xmm4[0,2,2,3]
1290
1279
; SSSE3-NEXT: punpckldq {{.*#+}} xmm1 = xmm1[0],xmm3[0],xmm1[1],xmm3[1]
1291
1280
; SSSE3-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1281
+ ; SSSE3-NEXT: por %xmm2, %xmm1
1292
1282
; SSSE3-NEXT: pshufb %xmm1, %xmm0
1293
- ; SSSE3-NEXT: pandn %xmm0, %xmm2
1294
- ; SSSE3-NEXT: movdqa %xmm2, %xmm0
1295
1283
; SSSE3-NEXT: retq
1296
1284
;
1297
1285
; SSE41-LABEL: var_shuffle_zero_v4f32:
@@ -1302,9 +1290,8 @@ define <4 x float> @var_shuffle_zero_v4f32(<4 x float> %v, <4 x i32> %indices) n
1302
1290
; SSE41-NEXT: por %xmm2, %xmm1
1303
1291
; SSE41-NEXT: pmulld {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1304
1292
; SSE41-NEXT: paddd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm1
1293
+ ; SSE41-NEXT: por %xmm2, %xmm1
1305
1294
; SSE41-NEXT: pshufb %xmm1, %xmm0
1306
- ; SSE41-NEXT: pandn %xmm0, %xmm2
1307
- ; SSE41-NEXT: movdqa %xmm2, %xmm0
1308
1295
; SSE41-NEXT: retq
1309
1296
;
1310
1297
; XOP-LABEL: var_shuffle_zero_v4f32:
0 commit comments