diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -21645,8 +21645,14 @@ bool IsSignaling = Op.getOpcode() == ISD::STRICT_FSETCCS; SDValue Chain = IsStrict ? Op.getOperand(0) : SDValue(); + // If we have a strict compare with a vXi1 result and the input is 128/256 + // bits we can't use a masked compare unless we have VLX. If we use a wider + // compare like we do for non-strict, we might trigger spurious exceptions + // from the upper elements. Instead emit a AVX compare and convert to mask. unsigned Opc; - if (Subtarget.hasAVX512() && VT.getVectorElementType() == MVT::i1) { + if (Subtarget.hasAVX512() && VT.getVectorElementType() == MVT::i1 && + (!IsStrict || Subtarget.hasVLX() || + Op0.getSimpleValueType().is512BitVector())) { assert(VT.getVectorNumElements() <= 16); Opc = IsStrict ? X86ISD::STRICT_CMPM : X86ISD::CMPM; } else { @@ -21742,10 +21748,19 @@ Opc, dl, VT, Op0, Op1, DAG.getTargetConstant(SSECC, dl, MVT::i8)); } - // If this is SSE/AVX CMPP, bitcast the result back to integer to match the - // result type of SETCC. The bitcast is expected to be optimized away - // during combining/isel. - Cmp = DAG.getBitcast(Op.getSimpleValueType(), Cmp); + if (VT.getSizeInBits() > Op.getSimpleValueType().getSizeInBits()) { + // We emitted a compare with an XMM/YMM result. Finish converting to a + // mask register using a vptestm. + EVT CastVT = EVT(VT).changeVectorElementTypeToInteger(); + Cmp = DAG.getBitcast(CastVT, Cmp); + Cmp = DAG.getSetCC(dl, Op.getSimpleValueType(), Cmp, + DAG.getConstant(0, dl, CastVT), ISD::SETNE); + } else { + // If this is SSE/AVX CMPP, bitcast the result back to integer to match + // the result type of SETCC. The bitcast is expected to be optimized + // away during combining/isel. + Cmp = DAG.getBitcast(Op.getSimpleValueType(), Cmp); + } if (IsStrict) return DAG.getMergeValues({Cmp, Chain}, dl); diff --git a/llvm/lib/Target/X86/X86InstrAVX512.td b/llvm/lib/Target/X86/X86InstrAVX512.td --- a/llvm/lib/Target/X86/X86InstrAVX512.td +++ b/llvm/lib/Target/X86/X86InstrAVX512.td @@ -3232,8 +3232,8 @@ multiclass axv512_cmp_packed_cc_no_vlx_lowering { -def : Pat<(Narrow.KVT (X86any_cmpm (Narrow.VT Narrow.RC:$src1), - (Narrow.VT Narrow.RC:$src2), timm:$cc)), +def : Pat<(Narrow.KVT (X86cmpm (Narrow.VT Narrow.RC:$src1), + (Narrow.VT Narrow.RC:$src2), timm:$cc)), (COPY_TO_REGCLASS (!cast(InstStr#"Zrri") (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src1, Narrow.SubRegIdx)), @@ -3250,8 +3250,8 @@ timm:$cc), Narrow.KRC)>; // Broadcast load. -def : Pat<(Narrow.KVT (X86any_cmpm (Narrow.VT Narrow.RC:$src1), - (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)), timm:$cc)), +def : Pat<(Narrow.KVT (X86cmpm (Narrow.VT Narrow.RC:$src1), + (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)), timm:$cc)), (COPY_TO_REGCLASS (!cast(InstStr#"Zrmbi") (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src1, Narrow.SubRegIdx)), @@ -3266,8 +3266,8 @@ addr:$src2, timm:$cc), Narrow.KRC)>; // Commuted with broadcast load. -def : Pat<(Narrow.KVT (X86any_cmpm (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)), - (Narrow.VT Narrow.RC:$src1), timm:$cc)), +def : Pat<(Narrow.KVT (X86cmpm (Narrow.VT (Narrow.BroadcastLdFrag addr:$src2)), + (Narrow.VT Narrow.RC:$src1), timm:$cc)), (COPY_TO_REGCLASS (!cast(InstStr#"Zrmbi") (Wide.VT (INSERT_SUBREG (IMPLICIT_DEF), Narrow.RC:$src1, Narrow.SubRegIdx)), diff --git a/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll b/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll --- a/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll +++ b/llvm/test/CodeGen/X86/vec-strict-cmp-128.ll @@ -73,11 +73,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -87,11 +86,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_oeq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -228,11 +226,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmplt_oqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmplt_oqps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -242,11 +240,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ogt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmplt_oqps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -383,11 +380,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmple_oqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmple_oqps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -397,11 +394,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_oge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmple_oqps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -537,11 +533,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmplt_oqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmplt_oqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -551,11 +546,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_olt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmplt_oqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -691,11 +685,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmple_oqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmple_oqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -705,11 +698,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ole_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmple_oqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -793,11 +785,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_oqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -807,11 +798,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_one_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_oqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -888,11 +878,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpordps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpordps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -902,11 +891,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ord_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpordps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpordps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -990,11 +978,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_uqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1004,11 +991,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ueq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_uqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1144,11 +1130,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnle_uqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1158,11 +1143,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ugt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnle_uqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1298,11 +1282,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1312,11 +1295,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_uge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1453,11 +1435,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnle_uqps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1467,11 +1449,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ult_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnle_uqps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1608,11 +1589,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1622,11 +1603,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ule_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1703,11 +1683,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneqps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1717,11 +1696,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_une_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneqps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1798,11 +1776,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpunordps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunordps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1812,11 +1789,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_uno_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunordps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunordps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -1893,11 +1869,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1907,11 +1882,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_oeq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2014,11 +1988,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmplt_oqpd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2028,11 +2002,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ogt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmplt_oqpd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2135,11 +2108,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmple_oqpd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2149,11 +2122,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_oge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmple_oqpd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2255,11 +2227,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmplt_oqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2269,11 +2240,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_olt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmplt_oqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2375,11 +2345,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmple_oqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2389,11 +2358,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ole_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmple_oqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2477,11 +2445,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_oqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2491,11 +2458,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_one_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_oqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2572,11 +2538,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpordpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpordpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2586,11 +2551,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ord_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpordpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpordpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2674,11 +2638,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_uqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2688,11 +2651,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ueq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_uqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2794,11 +2756,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnle_uqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2808,11 +2769,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ugt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnle_uqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -2914,11 +2874,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2928,11 +2887,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_uge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3035,11 +2993,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnle_uqpd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3049,11 +3007,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ult_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnle_uqpd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3156,11 +3113,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqpd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3170,11 +3127,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ule_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqpd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3251,11 +3207,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneqpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3265,11 +3220,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_une_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneqpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3346,11 +3300,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpunordpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunordpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3360,11 +3313,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_uno_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunordpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunordpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3446,11 +3398,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_osps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3460,11 +3411,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_oeq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_osps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3543,11 +3493,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpltps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpltps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3557,11 +3507,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ogt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpltps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3640,11 +3589,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpleps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpleps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3654,11 +3603,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_oge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpleps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpleps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3735,11 +3683,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpltps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpltps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3749,11 +3696,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_olt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpltps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3830,11 +3776,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpleps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpleps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3844,11 +3789,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ole_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpleps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpleps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -3936,11 +3880,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_osps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3950,11 +3893,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_one_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_osps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4036,11 +3978,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpord_sps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpord_sps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4050,11 +3991,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ord_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpord_sps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpord_sps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4142,11 +4082,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_usps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4156,11 +4095,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ueq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_usps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4237,11 +4175,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnleps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnleps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4251,11 +4188,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ugt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnleps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnleps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4332,11 +4268,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnltps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnltps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4346,11 +4281,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_uge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnltps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4429,11 +4363,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnleps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnleps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4443,11 +4377,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ult_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnleps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnleps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4526,11 +4459,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnltps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnltps %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4540,11 +4473,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_ule_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnltps %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4626,11 +4558,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneq_usps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_usps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4640,11 +4571,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_une_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_usps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_usps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4726,11 +4656,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpunord_sps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunord_sps 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4740,11 +4669,10 @@ ; ; AVX512F-64-LABEL: test_v4f32_uno_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunord_sps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunord_sps %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4826,11 +4754,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_ospd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4840,11 +4767,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_oeq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_ospd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -4923,11 +4849,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpltpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpltpd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -4937,11 +4863,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ogt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpltpd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5020,11 +4945,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmplepd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmplepd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5034,11 +4959,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_oge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmplepd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmplepd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5115,11 +5039,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpltpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpltpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5129,11 +5052,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_olt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpltpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5210,11 +5132,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmplepd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmplepd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5224,11 +5145,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ole_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmplepd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmplepd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5316,11 +5236,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_ospd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5330,11 +5249,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_one_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_ospd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5416,11 +5334,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpord_spd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpord_spd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5430,11 +5347,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ord_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpord_spd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpord_spd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5522,11 +5438,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_uspd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5536,11 +5451,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ueq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_uspd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5617,11 +5531,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnlepd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnlepd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5631,11 +5544,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ugt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlepd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnlepd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5712,11 +5624,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnltpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnltpd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5726,11 +5637,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_uge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnltpd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5809,11 +5719,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnlepd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnlepd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5823,11 +5733,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ult_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlepd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnlepd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -5906,11 +5815,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpnltpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnltpd %xmm2, %xmm3, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -5920,11 +5829,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_ule_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnltpd %xmm2, %xmm3, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -6006,11 +5914,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_uspd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -6020,11 +5927,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_une_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_uspd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper @@ -6106,11 +6012,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-16, %esp ; AVX512F-32-NEXT: subl $16, %esp -; AVX512F-32-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %xmm3 -; AVX512F-32-NEXT: vcmpunord_spd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunord_spd 8(%ebp), %xmm2, %xmm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -6120,11 +6025,10 @@ ; ; AVX512F-64-LABEL: test_v2f64_uno_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $xmm3 killed $xmm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $xmm1 killed $xmm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunord_spd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunord_spd %xmm3, %xmm2, %xmm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0 ; AVX512F-64-NEXT: vzeroupper diff --git a/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll b/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll --- a/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll +++ b/llvm/test/CodeGen/X86/vec-strict-cmp-256.ll @@ -49,11 +49,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -62,11 +61,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_oeq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -121,11 +119,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmplt_oqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmplt_oqps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -134,11 +132,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ogt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmplt_oqps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -193,11 +190,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmple_oqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmple_oqps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -206,11 +203,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_oge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmple_oqps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -264,11 +260,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmplt_oqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmplt_oqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -277,11 +272,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_olt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmplt_oqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -335,11 +329,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmple_oqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmple_oqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -348,11 +341,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ole_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmple_oqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -406,11 +398,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_oqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -419,11 +410,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_one_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_oqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_oqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -477,11 +467,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpordps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpordps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -490,11 +479,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ord_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpordps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpordps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -548,11 +536,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_uqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -561,11 +548,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ueq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_uqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_uqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -619,11 +605,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnle_uqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -632,11 +617,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ugt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnle_uqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -690,11 +674,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -703,11 +686,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_uge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -762,11 +744,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnle_uqps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -775,11 +757,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ult_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnle_uqps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -834,11 +815,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -847,11 +828,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ule_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -905,11 +885,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneqps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneqps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -918,11 +897,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_une_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneqps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneqps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -976,11 +954,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpunordps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunordps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -989,11 +966,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_uno_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunordps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunordps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1047,11 +1023,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1060,11 +1035,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_oeq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1119,11 +1093,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmplt_oqpd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1132,11 +1106,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ogt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmplt_oqpd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1191,11 +1164,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmple_oqpd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1204,11 +1177,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_oge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmple_oqpd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1262,11 +1234,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmplt_oqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1275,11 +1246,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_olt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmplt_oqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmplt_oqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1333,11 +1303,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmple_oqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1346,11 +1315,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ole_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmple_oqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmple_oqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1404,11 +1372,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_oqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1417,11 +1384,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_one_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_oqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_oqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1475,11 +1441,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpordpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpordpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1488,11 +1453,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ord_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpordpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpordpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1546,11 +1510,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_uqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1559,11 +1522,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ueq_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_uqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_uqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1617,11 +1579,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnle_uqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1630,11 +1591,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ugt_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnle_uqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1688,11 +1648,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1701,11 +1660,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_uge_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1760,11 +1718,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnle_uqpd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1773,11 +1731,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ult_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnle_uqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnle_uqpd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1832,11 +1789,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnlt_uqpd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1845,11 +1802,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ule_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlt_uqpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnlt_uqpd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1903,11 +1859,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneqpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneqpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1916,11 +1871,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_une_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneqpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneqpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -1974,11 +1928,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpunordpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunordpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -1987,11 +1940,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_uno_q: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunordpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunordpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2045,11 +1997,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_osps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2058,11 +2009,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_oeq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_osps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_osps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2117,11 +2067,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpltps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpltps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2130,11 +2080,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ogt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpltps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2189,11 +2138,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpleps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpleps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2202,11 +2151,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_oge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpleps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpleps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2260,11 +2208,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpltps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpltps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2273,11 +2220,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_olt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpltps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2331,11 +2277,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpleps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpleps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2344,11 +2289,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ole_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpleps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpleps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2402,11 +2346,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_osps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2415,11 +2358,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_one_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_osps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_osps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2473,11 +2415,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpord_sps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpord_sps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2486,11 +2427,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ord_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpord_sps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpord_sps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2544,11 +2484,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_usps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2557,11 +2496,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ueq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_usps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_usps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2615,11 +2553,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnleps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnleps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2628,11 +2565,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ugt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnleps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnleps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2686,11 +2622,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnltps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnltps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2699,11 +2634,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_uge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnltps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2758,11 +2692,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnleps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnleps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2771,11 +2705,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ult_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnleps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnleps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2830,11 +2763,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnltps %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnltps %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2843,11 +2776,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_ule_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltps %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnltps %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2901,11 +2833,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneq_usps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_usps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2914,11 +2845,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_une_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_usps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_usps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -2972,11 +2902,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovaps 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpunord_sps %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunord_sps 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -2985,11 +2914,10 @@ ; ; AVX512F-64-LABEL: test_v8f32_uno_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunord_sps %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunord_sps %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmd %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmd %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3043,11 +2971,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_ospd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3056,11 +2983,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_oeq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_ospd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_ospd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3115,11 +3041,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpltpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpltpd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3128,11 +3054,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ogt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpltpd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3187,11 +3112,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmplepd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmplepd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3200,11 +3125,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_oge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmplepd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmplepd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3258,11 +3182,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpltpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpltpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3271,11 +3194,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_olt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpltpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpltpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3329,11 +3251,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmplepd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmplepd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3342,11 +3263,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ole_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmplepd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmplepd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3400,11 +3320,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_ospd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3413,11 +3332,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_one_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_ospd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_ospd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3471,11 +3389,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpord_spd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpord_spd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3484,11 +3401,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ord_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpord_spd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpord_spd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3542,11 +3458,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpeq_uspd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3555,11 +3470,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ueq_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpeq_uspd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpeq_uspd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3613,11 +3527,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnlepd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnlepd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3626,11 +3539,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ugt_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlepd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnlepd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3684,11 +3596,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnltpd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpnltpd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3697,11 +3608,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_uge_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltpd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpnltpd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3756,11 +3666,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnlepd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnlepd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3769,11 +3679,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ult_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnlepd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnlepd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3828,11 +3737,11 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 ; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpnltpd %zmm2, %zmm3, %k1 +; AVX512F-32-NEXT: vcmpnltpd %ymm2, %ymm3, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3841,11 +3750,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_ule_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpnltpd %zmm2, %zmm3, %k1 +; AVX512F-64-NEXT: vcmpnltpd %ymm2, %ymm3, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3899,11 +3807,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpneq_uspd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3912,11 +3819,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_une_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpneq_uspd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpneq_uspd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq @@ -3970,11 +3876,10 @@ ; AVX512F-32-NEXT: movl %esp, %ebp ; AVX512F-32-NEXT: andl $-32, %esp ; AVX512F-32-NEXT: subl $32, %esp -; AVX512F-32-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-32-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-32-NEXT: vmovapd 8(%ebp), %ymm3 -; AVX512F-32-NEXT: vcmpunord_spd %zmm3, %zmm2, %k1 +; AVX512F-32-NEXT: vcmpunord_spd 8(%ebp), %ymm2, %ymm2 +; AVX512F-32-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-32-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-32-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-32-NEXT: movl %ebp, %esp @@ -3983,11 +3888,10 @@ ; ; AVX512F-64-LABEL: test_v4f64_uno_s: ; AVX512F-64: # %bb.0: -; AVX512F-64-NEXT: # kill: def $ymm3 killed $ymm3 def $zmm3 -; AVX512F-64-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2 ; AVX512F-64-NEXT: # kill: def $ymm1 killed $ymm1 def $zmm1 ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 def $zmm0 -; AVX512F-64-NEXT: vcmpunord_spd %zmm3, %zmm2, %k1 +; AVX512F-64-NEXT: vcmpunord_spd %ymm3, %ymm2, %ymm2 +; AVX512F-64-NEXT: vptestmq %zmm2, %zmm2, %k1 ; AVX512F-64-NEXT: vpblendmq %zmm0, %zmm1, %zmm0 {%k1} ; AVX512F-64-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0 ; AVX512F-64-NEXT: retq