if (!VT.is512BitVector() && !Subtarget.hasVLX())
ExtVT = MVT::getVectorVT(MVT::getIntegerVT(512/NumElts), NumElts);
- SDValue One =
- DAG.getConstant(APInt(ExtVT.getScalarSizeInBits(), 1), DL, ExtVT);
- SDValue Zero =
- DAG.getConstant(APInt::getNullValue(ExtVT.getScalarSizeInBits()), DL, ExtVT);
+ SDValue One = DAG.getConstant(1, DL, ExtVT);
+ SDValue Zero = getZeroVector(ExtVT, Subtarget, DAG, DL);
SDValue SelectedVal = DAG.getSelect(DL, ExtVT, In, One, Zero);
if (VT == ExtVT)
; CHECK-NEXT: kunpckdq %k2, %k1, %k1
; CHECK-NEXT: kandq %k1, %k0, %k1
; CHECK-NEXT: vmovdqu8 {{\.LCPI.*}}, %zmm0 {%k1} {z}
+; CHECK-NEXT: vxorps %xmm1, %xmm1, %xmm1
; CHECK-NEXT: vmovdqu32 %zmm0, (%eax)
-; CHECK-NEXT: vpxor %xmm0, %xmm0, %xmm0
-; CHECK-NEXT: vmovdqu32 %zmm0, 64(%eax)
-; CHECK-NEXT: vmovdqu32 %zmm0, 128(%eax)
-; CHECK-NEXT: vmovdqu32 %zmm0, 192(%eax)
-; CHECK-NEXT: vmovdqu32 %zmm0, 256(%eax)
-; CHECK-NEXT: vmovdqu32 %zmm0, 320(%eax)
-; CHECK-NEXT: vmovdqu32 %zmm0, 384(%eax)
-; CHECK-NEXT: vmovdqu32 %zmm0, 448(%eax)
+; CHECK-NEXT: vmovups %zmm1, 64(%eax)
+; CHECK-NEXT: vmovups %zmm1, 128(%eax)
+; CHECK-NEXT: vmovups %zmm1, 192(%eax)
+; CHECK-NEXT: vmovups %zmm1, 256(%eax)
+; CHECK-NEXT: vmovups %zmm1, 320(%eax)
+; CHECK-NEXT: vmovups %zmm1, 384(%eax)
+; CHECK-NEXT: vmovups %zmm1, 448(%eax)
; CHECK-NEXT: vzeroupper
; CHECK-NEXT: retl
entry: