@@ -643,18 +643,18 @@ define <16 x i8> @blend_splat1_mask_cond_v16i8(<16 x i8> %x, <16 x i8> %y, <16 x
643
643
;
644
644
; AVX512F-LABEL: blend_splat1_mask_cond_v16i8:
645
645
; AVX512F: # %bb.0:
646
- ; AVX512F-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
647
- ; AVX512F-NEXT: vpxor %xmm3, %xmm3 , %xmm3
646
+ ; AVX512F-NEXT: vpbroadcastb {{.*#+}} xmm3 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
647
+ ; AVX512F-NEXT: vpand %xmm3, %xmm0 , %xmm0
648
648
; AVX512F-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
649
- ; AVX512F-NEXT: vpblendvb %xmm0, %xmm1 , %xmm2 , %xmm0
649
+ ; AVX512F-NEXT: vpblendvb %xmm0, %xmm2 , %xmm1 , %xmm0
650
650
; AVX512F-NEXT: retq
651
651
;
652
652
; AVX512VL-LABEL: blend_splat1_mask_cond_v16i8:
653
653
; AVX512VL: # %bb.0:
654
- ; AVX512VL-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
655
- ; AVX512VL-NEXT: vpxor %xmm3, %xmm3 , %xmm3
654
+ ; AVX512VL-NEXT: vpbroadcastd {{.*#+}} xmm3 = [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]
655
+ ; AVX512VL-NEXT: vpand %xmm3, %xmm0 , %xmm0
656
656
; AVX512VL-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
657
- ; AVX512VL-NEXT: vpternlogq {{.*#+}} xmm0 = xmm2 ^ (xmm0 & (xmm1 ^ xmm2 ))
657
+ ; AVX512VL-NEXT: vpternlogq {{.*#+}} xmm0 = xmm1 ^ (xmm0 & (xmm2 ^ xmm1 ))
658
658
; AVX512VL-NEXT: retq
659
659
;
660
660
; XOP-LABEL: blend_splat1_mask_cond_v16i8:
@@ -795,18 +795,18 @@ define <32 x i8> @blend_splatmax_mask_cond_v32i8(<32 x i8> %x, <32 x i8> %y, <32
795
795
;
796
796
; AVX512F-LABEL: blend_splatmax_mask_cond_v32i8:
797
797
; AVX512F: # %bb.0:
798
- ; AVX512F-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
799
- ; AVX512F-NEXT: vpxor %xmm3 , %xmm3 , %xmm3
798
+ ; AVX512F-NEXT: vpbroadcastb {{.*#+}} ymm3 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
799
+ ; AVX512F-NEXT: vpand %ymm3 , %ymm0 , %ymm0
800
800
; AVX512F-NEXT: vpcmpeqb %ymm3, %ymm0, %ymm0
801
- ; AVX512F-NEXT: vpblendvb %ymm0, %ymm1 , %ymm2 , %ymm0
801
+ ; AVX512F-NEXT: vpblendvb %ymm0, %ymm2 , %ymm1 , %ymm0
802
802
; AVX512F-NEXT: retq
803
803
;
804
804
; AVX512VL-LABEL: blend_splatmax_mask_cond_v32i8:
805
805
; AVX512VL: # %bb.0:
806
- ; AVX512VL-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to8}, %ymm0, %ymm0
807
- ; AVX512VL-NEXT: vpxor %xmm3 , %xmm3 , %xmm3
806
+ ; AVX512VL-NEXT: vpbroadcastd {{.*#+}} ymm3 = [128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128,128]
807
+ ; AVX512VL-NEXT: vpand %ymm3 , %ymm0 , %ymm0
808
808
; AVX512VL-NEXT: vpcmpeqb %ymm3, %ymm0, %ymm0
809
- ; AVX512VL-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm0 & (ymm1 ^ ymm2 ))
809
+ ; AVX512VL-NEXT: vpternlogq {{.*#+}} ymm0 = ymm1 ^ (ymm0 & (ymm2 ^ ymm1 ))
810
810
; AVX512VL-NEXT: retq
811
811
;
812
812
; XOP-LABEL: blend_splatmax_mask_cond_v32i8:
@@ -972,18 +972,18 @@ define <16 x i8> @blend_splat_mask_cond_v16i8(<16 x i8> %x, <16 x i8> %y, <16 x
972
972
;
973
973
; AVX512F-LABEL: blend_splat_mask_cond_v16i8:
974
974
; AVX512F: # %bb.0:
975
- ; AVX512F-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
976
- ; AVX512F-NEXT: vpxor %xmm3, %xmm3 , %xmm3
975
+ ; AVX512F-NEXT: vpbroadcastb {{.*#+}} xmm3 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]
976
+ ; AVX512F-NEXT: vpand %xmm3, %xmm0 , %xmm0
977
977
; AVX512F-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
978
- ; AVX512F-NEXT: vpblendvb %xmm0, %xmm1 , %xmm2 , %xmm0
978
+ ; AVX512F-NEXT: vpblendvb %xmm0, %xmm2 , %xmm1 , %xmm0
979
979
; AVX512F-NEXT: retq
980
980
;
981
981
; AVX512VL-LABEL: blend_splat_mask_cond_v16i8:
982
982
; AVX512VL: # %bb.0:
983
- ; AVX512VL-NEXT: vpandd {{\.?LCPI[0-9]+_[0-9]+}}(%rip){1to4}, %xmm0, %xmm0
984
- ; AVX512VL-NEXT: vpxor %xmm3, %xmm3 , %xmm3
983
+ ; AVX512VL-NEXT: vpbroadcastd {{.*#+}} xmm3 = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4]
984
+ ; AVX512VL-NEXT: vpand %xmm3, %xmm0 , %xmm0
985
985
; AVX512VL-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
986
- ; AVX512VL-NEXT: vpternlogq {{.*#+}} xmm0 = xmm2 ^ (xmm0 & (xmm1 ^ xmm2 ))
986
+ ; AVX512VL-NEXT: vpternlogq {{.*#+}} xmm0 = xmm1 ^ (xmm0 & (xmm2 ^ xmm1 ))
987
987
; AVX512VL-NEXT: retq
988
988
;
989
989
; XOP-LABEL: blend_splat_mask_cond_v16i8:
@@ -1002,10 +1002,10 @@ define <16 x i8> @blend_splat_mask_cond_v16i8(<16 x i8> %x, <16 x i8> %y, <16 x
1002
1002
define <2 x i64 > @blend_mask_cond_v2i64 (<2 x i64 > %x , <2 x i64 > %y , <2 x i64 > %z ) {
1003
1003
; AVX1-LABEL: blend_mask_cond_v2i64:
1004
1004
; AVX1: # %bb.0:
1005
- ; AVX1-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1006
- ; AVX1-NEXT: vpxor %xmm3, %xmm3 , %xmm3
1005
+ ; AVX1-NEXT: vpmovsxbq {{.*#+}} xmm3 = [1,4]
1006
+ ; AVX1-NEXT: vpand %xmm3, %xmm0 , %xmm0
1007
1007
; AVX1-NEXT: vpcmpeqq %xmm3, %xmm0, %xmm0
1008
- ; AVX1-NEXT: vblendvpd %xmm0, %xmm1 , %xmm2 , %xmm0
1008
+ ; AVX1-NEXT: vblendvpd %xmm0, %xmm2 , %xmm1 , %xmm0
1009
1009
; AVX1-NEXT: retq
1010
1010
;
1011
1011
; AVX2-LABEL: blend_mask_cond_v2i64:
@@ -1126,26 +1126,26 @@ define <8 x i16> @blend_mask_cond_v8i16(<8 x i16> %x, <8 x i16> %y, <8 x i16> %z
1126
1126
define <16 x i8 > @blend_mask_cond_v16i8 (<16 x i8 > %x , <16 x i8 > %y , <16 x i8 > %z ) {
1127
1127
; AVX12-LABEL: blend_mask_cond_v16i8:
1128
1128
; AVX12: # %bb.0:
1129
- ; AVX12-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1130
- ; AVX12-NEXT: vpxor %xmm3, %xmm3 , %xmm3
1129
+ ; AVX12-NEXT: vmovdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128,4,4,4,4,2,2,2,2]
1130
+ ; AVX12-NEXT: vpand %xmm3, %xmm0 , %xmm0
1131
1131
; AVX12-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
1132
- ; AVX12-NEXT: vpblendvb %xmm0, %xmm1 , %xmm2 , %xmm0
1132
+ ; AVX12-NEXT: vpblendvb %xmm0, %xmm2 , %xmm1 , %xmm0
1133
1133
; AVX12-NEXT: retq
1134
1134
;
1135
1135
; AVX512F-LABEL: blend_mask_cond_v16i8:
1136
1136
; AVX512F: # %bb.0:
1137
- ; AVX512F-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1138
- ; AVX512F-NEXT: vpxor %xmm3, %xmm3 , %xmm3
1137
+ ; AVX512F-NEXT: vmovdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128,4,4,4,4,2,2,2,2]
1138
+ ; AVX512F-NEXT: vpand %xmm3, %xmm0 , %xmm0
1139
1139
; AVX512F-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
1140
- ; AVX512F-NEXT: vpblendvb %xmm0, %xmm1 , %xmm2 , %xmm0
1140
+ ; AVX512F-NEXT: vpblendvb %xmm0, %xmm2 , %xmm1 , %xmm0
1141
1141
; AVX512F-NEXT: retq
1142
1142
;
1143
1143
; AVX512VL-LABEL: blend_mask_cond_v16i8:
1144
1144
; AVX512VL: # %bb.0:
1145
- ; AVX512VL-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1146
- ; AVX512VL-NEXT: vpxor %xmm3, %xmm3 , %xmm3
1145
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} xmm3 = [1,2,4,8,16,32,64,128,4,4,4,4,2,2,2,2]
1146
+ ; AVX512VL-NEXT: vpand %xmm3, %xmm0 , %xmm0
1147
1147
; AVX512VL-NEXT: vpcmpeqb %xmm3, %xmm0, %xmm0
1148
- ; AVX512VL-NEXT: vpternlogq {{.*#+}} xmm0 = xmm2 ^ (xmm0 & (xmm1 ^ xmm2 ))
1148
+ ; AVX512VL-NEXT: vpternlogq {{.*#+}} xmm0 = xmm1 ^ (xmm0 & (xmm2 ^ xmm1 ))
1149
1149
; AVX512VL-NEXT: retq
1150
1150
;
1151
1151
; XOP-LABEL: blend_mask_cond_v16i8:
@@ -1326,26 +1326,26 @@ define <32 x i8> @blend_mask_cond_v32i8(<32 x i8> %x, <32 x i8> %y, <32 x i8> %z
1326
1326
;
1327
1327
; AVX2-LABEL: blend_mask_cond_v32i8:
1328
1328
; AVX2: # %bb.0:
1329
- ; AVX2-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1330
- ; AVX2-NEXT: vpxor %xmm3 , %xmm3 , %xmm3
1329
+ ; AVX2-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128,4,4,4,4,2,2,2,2,1,2,4,8,16,32,64,128,4,4,4,4,128,4,2,16]
1330
+ ; AVX2-NEXT: vpand %ymm3 , %ymm0 , %ymm0
1331
1331
; AVX2-NEXT: vpcmpeqb %ymm3, %ymm0, %ymm0
1332
- ; AVX2-NEXT: vpblendvb %ymm0, %ymm1 , %ymm2 , %ymm0
1332
+ ; AVX2-NEXT: vpblendvb %ymm0, %ymm2 , %ymm1 , %ymm0
1333
1333
; AVX2-NEXT: retq
1334
1334
;
1335
1335
; AVX512F-LABEL: blend_mask_cond_v32i8:
1336
1336
; AVX512F: # %bb.0:
1337
- ; AVX512F-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1338
- ; AVX512F-NEXT: vpxor %xmm3 , %xmm3 , %xmm3
1337
+ ; AVX512F-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128,4,4,4,4,2,2,2,2,1,2,4,8,16,32,64,128,4,4,4,4,128,4,2,16]
1338
+ ; AVX512F-NEXT: vpand %ymm3 , %ymm0 , %ymm0
1339
1339
; AVX512F-NEXT: vpcmpeqb %ymm3, %ymm0, %ymm0
1340
- ; AVX512F-NEXT: vpblendvb %ymm0, %ymm1 , %ymm2 , %ymm0
1340
+ ; AVX512F-NEXT: vpblendvb %ymm0, %ymm2 , %ymm1 , %ymm0
1341
1341
; AVX512F-NEXT: retq
1342
1342
;
1343
1343
; AVX512VL-LABEL: blend_mask_cond_v32i8:
1344
1344
; AVX512VL: # %bb.0:
1345
- ; AVX512VL-NEXT: vpand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1346
- ; AVX512VL-NEXT: vpxor %xmm3 , %xmm3 , %xmm3
1345
+ ; AVX512VL-NEXT: vmovdqa {{.*#+}} ymm3 = [1,2,4,8,16,32,64,128,4,4,4,4,2,2,2,2,1,2,4,8,16,32,64,128,4,4,4,4,128,4,2,16]
1346
+ ; AVX512VL-NEXT: vpand %ymm3 , %ymm0 , %ymm0
1347
1347
; AVX512VL-NEXT: vpcmpeqb %ymm3, %ymm0, %ymm0
1348
- ; AVX512VL-NEXT: vpternlogq {{.*#+}} ymm0 = ymm2 ^ (ymm0 & (ymm1 ^ ymm2 ))
1348
+ ; AVX512VL-NEXT: vpternlogq {{.*#+}} ymm0 = ymm1 ^ (ymm0 & (ymm2 ^ ymm1 ))
1349
1349
; AVX512VL-NEXT: retq
1350
1350
;
1351
1351
; XOP-LABEL: blend_mask_cond_v32i8:
@@ -1736,17 +1736,16 @@ define <64 x i8> @PR110875(<32 x i8> %a0, <32 x i8> %a1, i64 %a2) {
1736
1736
; AVX2: # %bb.0:
1737
1737
; AVX2-NEXT: vmovq %rdi, %xmm2
1738
1738
; AVX2-NEXT: vpbroadcastq %xmm2, %ymm2
1739
- ; AVX2-NEXT: vpshufb {{.*#+}} ymm3 = ymm2[4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23 ]
1740
- ; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19 ]
1739
+ ; AVX2-NEXT: vpshufb {{.*#+}} ymm3 = ymm2[0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19 ]
1740
+ ; AVX2-NEXT: vpshufb {{.*#+}} ymm2 = ymm2[4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23 ]
1741
1741
; AVX2-NEXT: vpbroadcastq {{.*#+}} ymm4 = [1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128,1,2,4,8,16,32,64,128]
1742
1742
; AVX2-NEXT: vpand %ymm4, %ymm2, %ymm2
1743
1743
; AVX2-NEXT: vpand %ymm4, %ymm3, %ymm3
1744
- ; AVX2-NEXT: vpxor %xmm4, %xmm4, %xmm4
1745
1744
; AVX2-NEXT: vpcmpeqb %ymm4, %ymm3, %ymm3
1745
+ ; AVX2-NEXT: vpbroadcastb {{.*#+}} ymm5 = [20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20]
1746
+ ; AVX2-NEXT: vpblendvb %ymm3, %ymm5, %ymm0, %ymm0
1746
1747
; AVX2-NEXT: vpcmpeqb %ymm4, %ymm2, %ymm2
1747
- ; AVX2-NEXT: vpbroadcastb {{.*#+}} ymm4 = [20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20]
1748
- ; AVX2-NEXT: vpblendvb %ymm2, %ymm0, %ymm4, %ymm0
1749
- ; AVX2-NEXT: vpblendvb %ymm3, %ymm1, %ymm4, %ymm1
1748
+ ; AVX2-NEXT: vpblendvb %ymm2, %ymm5, %ymm1, %ymm1
1750
1749
; AVX2-NEXT: retq
1751
1750
;
1752
1751
; AVX512F-LABEL: PR110875:
0 commit comments