@@ -1122,61 +1122,38 @@ define <4 x i32> @usubo_v4i24(<4 x i24> %a0, <4 x i24> %a1, ptr %p2) nounwind {
11221122define <4 x i32 > @usubo_v4i1 (<4 x i1 > %a0 , <4 x i1 > %a1 , ptr %p2 ) nounwind {
11231123; SSE-LABEL: usubo_v4i1:
11241124; SSE: # %bb.0:
1125- ; SSE-NEXT: movdqa {{.*#+}} xmm2 = [1,1,1,1]
1126- ; SSE-NEXT: pand %xmm2, %xmm1
1127- ; SSE-NEXT: pand %xmm2, %xmm0
1128- ; SSE-NEXT: psubd %xmm1, %xmm0
1129- ; SSE-NEXT: pand %xmm0, %xmm2
1130- ; SSE-NEXT: pcmpeqd %xmm0, %xmm2
1131- ; SSE-NEXT: pcmpeqd %xmm1, %xmm1
1132- ; SSE-NEXT: pxor %xmm2, %xmm1
1125+ ; SSE-NEXT: movdqa %xmm0, %xmm2
1126+ ; SSE-NEXT: pxor %xmm1, %xmm2
1127+ ; SSE-NEXT: pslld $31, %xmm2
1128+ ; SSE-NEXT: movmskps %xmm2, %eax
1129+ ; SSE-NEXT: pandn %xmm1, %xmm0
11331130; SSE-NEXT: pslld $31, %xmm0
1134- ; SSE-NEXT: movmskps %xmm0 , %eax
1131+ ; SSE-NEXT: psrad $31 , %xmm0
11351132; SSE-NEXT: movb %al, (%rdi)
1136- ; SSE-NEXT: movdqa %xmm1, %xmm0
11371133; SSE-NEXT: retq
11381134;
1139- ; AVX1-LABEL: usubo_v4i1:
1140- ; AVX1: # %bb.0:
1141- ; AVX1-NEXT: vbroadcastss {{.*#+}} xmm2 = [1,1,1,1]
1142- ; AVX1-NEXT: vpand %xmm2, %xmm1, %xmm1
1143- ; AVX1-NEXT: vpand %xmm2, %xmm0, %xmm0
1144- ; AVX1-NEXT: vpsubd %xmm1, %xmm0, %xmm1
1145- ; AVX1-NEXT: vpand %xmm2, %xmm1, %xmm0
1146- ; AVX1-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
1147- ; AVX1-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
1148- ; AVX1-NEXT: vpxor %xmm2, %xmm0, %xmm0
1149- ; AVX1-NEXT: vpslld $31, %xmm1, %xmm1
1150- ; AVX1-NEXT: vmovmskps %xmm1, %eax
1151- ; AVX1-NEXT: movb %al, (%rdi)
1152- ; AVX1-NEXT: retq
1153- ;
1154- ; AVX2-LABEL: usubo_v4i1:
1155- ; AVX2: # %bb.0:
1156- ; AVX2-NEXT: vpbroadcastd {{.*#+}} xmm2 = [1,1,1,1]
1157- ; AVX2-NEXT: vpand %xmm2, %xmm1, %xmm1
1158- ; AVX2-NEXT: vpand %xmm2, %xmm0, %xmm0
1159- ; AVX2-NEXT: vpsubd %xmm1, %xmm0, %xmm1
1160- ; AVX2-NEXT: vpand %xmm2, %xmm1, %xmm0
1161- ; AVX2-NEXT: vpcmpeqd %xmm1, %xmm0, %xmm0
1162- ; AVX2-NEXT: vpcmpeqd %xmm2, %xmm2, %xmm2
1163- ; AVX2-NEXT: vpxor %xmm2, %xmm0, %xmm0
1164- ; AVX2-NEXT: vpslld $31, %xmm1, %xmm1
1165- ; AVX2-NEXT: vmovmskps %xmm1, %eax
1166- ; AVX2-NEXT: movb %al, (%rdi)
1167- ; AVX2-NEXT: retq
1135+ ; AVX-LABEL: usubo_v4i1:
1136+ ; AVX: # %bb.0:
1137+ ; AVX-NEXT: vpxor %xmm1, %xmm0, %xmm2
1138+ ; AVX-NEXT: vpslld $31, %xmm2, %xmm2
1139+ ; AVX-NEXT: vmovmskps %xmm2, %eax
1140+ ; AVX-NEXT: vpandn %xmm1, %xmm0, %xmm0
1141+ ; AVX-NEXT: vpslld $31, %xmm0, %xmm0
1142+ ; AVX-NEXT: vpsrad $31, %xmm0, %xmm0
1143+ ; AVX-NEXT: movb %al, (%rdi)
1144+ ; AVX-NEXT: retq
11681145;
11691146; AVX512-LABEL: usubo_v4i1:
11701147; AVX512: # %bb.0:
11711148; AVX512-NEXT: vpslld $31, %xmm0, %xmm0
11721149; AVX512-NEXT: vptestmd %xmm0, %xmm0, %k0
11731150; AVX512-NEXT: vpslld $31, %xmm1, %xmm1
11741151; AVX512-NEXT: vptestmd %xmm1, %xmm1, %k1
1175- ; AVX512-NEXT: kxorw %k1, %k0, %k1
1176- ; AVX512-NEXT: vptestnmd %xmm0, %xmm0, %k2 {%k1}
1152+ ; AVX512-NEXT: kxorw %k1, %k0, %k0
1153+ ; AVX512-NEXT: vptestnmd %xmm0, %xmm0, %k1 {%k1}
11771154; AVX512-NEXT: vpcmpeqd %xmm0, %xmm0, %xmm0
1178- ; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k2 } {z}
1179- ; AVX512-NEXT: kshiftlw $12, %k1 , %k0
1155+ ; AVX512-NEXT: vmovdqa32 %xmm0, %xmm0 {%k1 } {z}
1156+ ; AVX512-NEXT: kshiftlw $12, %k0 , %k0
11801157; AVX512-NEXT: kshiftrw $12, %k0, %k0
11811158; AVX512-NEXT: kmovd %k0, %eax
11821159; AVX512-NEXT: movb %al, (%rdi)
0 commit comments