llvm.org GIT mirror llvm / 920e52f
[X86] Use ISD::TRUNCATE instead of X86ISD::VTRUNC when input and output types have the same number of elements. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@322455 91177308-0d34-0410-b5e6-96231b3b80d8 Craig Topper 2 years ago
11 changed file(s) with 89 addition(s) and 376 deletion(s). Raw diff Collapse all Expand all
1654216542 if (Subtarget.hasAVX512()) {
1654316543 // word to byte only under BWI
1654416544 if (InVT == MVT::v16i16 && !Subtarget.hasBWI()) // v16i16 -> v16i8
16545 return DAG.getNode(X86ISD::VTRUNC, DL, VT,
16545 return DAG.getNode(ISD::TRUNCATE, DL, VT,
1654616546 getExtendInVec(X86ISD::VSEXT, DL, MVT::v16i32, In, DAG));
16547 return DAG.getNode(X86ISD::VTRUNC, DL, VT, In);
16547 return Op;
1654816548 }
1654916549
1655016550 // Truncate with PACKSS if we are truncating a vector with sign-bits that
1980719807 return DAG.getNode(ISD::AND, dl, VT, Op, VMask);
1980819808 case X86ISD::VFPCLASS:
1980919809 return DAG.getNode(ISD::OR, dl, VT, Op, VMask);
19810 case ISD::TRUNCATE:
1981019811 case X86ISD::VTRUNC:
1981119812 case X86ISD::VTRUNCS:
1981219813 case X86ISD::VTRUNCUS:
2783627837 Known.Zero.setBitsFrom(InBitWidth);
2783727838 break;
2783827839 }
27839 case X86ISD::VTRUNC: {
27840 // TODO: Add DemandedElts support.
27841 SDValue N0 = Op.getOperand(0);
27842 // We can only handle cases with the same number of elements. Otherwise
27843 // the truncate fills with zero elements.
27844 // TODO: Maybe we could just discard any 1s we found instead of skipping?
27845 if (VT.getVectorNumElements() != N0.getValueType().getVectorNumElements())
27846 break;
27847 DAG.computeKnownBits(N0, Known, Depth+1);
27848 Known = Known.trunc(BitWidth);
27849 break;
27850 }
2785127840 case X86ISD::CMOV: {
2785227841 DAG.computeKnownBits(Op.getOperand(1), Known, Depth+1);
2785327842 // If we don't know any bits, early out.
3779237781 bool X86TargetLowering::isTypeDesirableForOp(unsigned Opc, EVT VT) const {
3779337782 if (!isTypeLegal(VT))
3779437783 return false;
37784
37785 // There are no vXi8 shifts.
37786 if (Opc == ISD::SHL && VT.isVector() && VT.getVectorElementType() == MVT::i8)
37787 return false;
37788
3779537789 if (VT != MVT::i16)
3779637790 return true;
3779737791
81268126 addr:$dst, SrcInfo.KRCWM:$mask, SrcInfo.RC:$src)>;
81278127 }
81288128
8129 multiclass avx512_trunc opc, string OpcodeStr, SDNode OpNode,
8130 OpndItins itins, AVX512VLVectorVTInfo VTSrcInfo, X86VectorVTInfo DestInfoZ128,
8131 X86VectorVTInfo DestInfoZ256, X86VectorVTInfo DestInfoZ,
8132 X86MemOperand x86memopZ128, X86MemOperand x86memopZ256,
8133 X86MemOperand x86memopZ, PatFrag truncFrag, PatFrag mtruncFrag,
8134 Predicate prd = HasAVX512>{
8129 multiclass avx512_trunc opc, string OpcodeStr, SDNode OpNode128,
8130 SDNode OpNode256, SDNode OpNode512, OpndItins itins,
8131 AVX512VLVectorVTInfo VTSrcInfo,
8132 X86VectorVTInfo DestInfoZ128,
8133 X86VectorVTInfo DestInfoZ256, X86VectorVTInfo DestInfoZ,
8134 X86MemOperand x86memopZ128, X86MemOperand x86memopZ256,
8135 X86MemOperand x86memopZ, PatFrag truncFrag,
8136 PatFrag mtruncFrag, Predicate prd = HasAVX512>{
81358137
81368138 let Predicates = [HasVLX, prd] in {
8137 defm Z128: avx512_trunc_common, itins,
8139 defm Z128: avx512_trunc_common128, itins,
81388140 VTSrcInfo.info128, DestInfoZ128, x86memopZ128>,
81398141 avx512_trunc_mr_lowering
81408142 truncFrag, mtruncFrag>, EVEX_V128;
81418143
8142 defm Z256: avx512_trunc_common, itins,
8144 defm Z256: avx512_trunc_common256, itins,
81438145 VTSrcInfo.info256, DestInfoZ256, x86memopZ256>,
81448146 avx512_trunc_mr_lowering
81458147 truncFrag, mtruncFrag>, EVEX_V256;
81468148 }
81478149 let Predicates = [prd] in
8148 defm Z: avx512_trunc_common, itins,
8150 defm Z: avx512_trunc_common512, itins,
81498151 VTSrcInfo.info512, DestInfoZ, x86memopZ>,
81508152 avx512_trunc_mr_lowering
81518153 truncFrag, mtruncFrag>, EVEX_V512;
81538155
81548156 multiclass avx512_trunc_qb opc, string OpcodeStr, SDNode OpNode,
81558157 OpndItins itins, PatFrag StoreNode,
8156 PatFrag MaskedStoreNode> {
8157 defm NAME: avx512_trunc
8158 v16i8x_info, v16i8x_info, v16i8x_info, i16mem, i32mem, i64mem,
8159 StoreNode, MaskedStoreNode>, EVEX_CD8<8, CD8VO>;
8158 PatFrag MaskedStoreNode, SDNode InVecNode = OpNode> {
8159 defm NAME: avx512_trunc
8160 avx512vl_i64_info, v16i8x_info, v16i8x_info,
8161 v16i8x_info, i16mem, i32mem, i64mem, StoreNode,
8162 MaskedStoreNode>, EVEX_CD8<8, CD8VO>;
81608163 }
81618164
81628165 multiclass avx512_trunc_qw opc, string OpcodeStr, SDNode OpNode,
81638166 OpndItins itins, PatFrag StoreNode,
8164 PatFrag MaskedStoreNode> {
8165 defm NAME: avx512_trunc
8166 v8i16x_info, v8i16x_info, v8i16x_info, i32mem, i64mem, i128mem,
8167 StoreNode, MaskedStoreNode>, EVEX_CD8<16, CD8VQ>;
8167 PatFrag MaskedStoreNode, SDNode InVecNode = OpNode> {
8168 defm NAME: avx512_trunc
8169 avx512vl_i64_info, v8i16x_info, v8i16x_info,
8170 v8i16x_info, i32mem, i64mem, i128mem, StoreNode,
8171 MaskedStoreNode>, EVEX_CD8<16, CD8VQ>;
81688172 }
81698173
81708174 multiclass avx512_trunc_qd opc, string OpcodeStr, SDNode OpNode,
81718175 OpndItins itins, PatFrag StoreNode,
8172 PatFrag MaskedStoreNode> {
8173 defm NAME: avx512_trunc
8174 v4i32x_info, v4i32x_info, v8i32x_info, i64mem, i128mem, i256mem,
8175 StoreNode, MaskedStoreNode>, EVEX_CD8<32, CD8VH>;
8176 PatFrag MaskedStoreNode, SDNode InVecNode = OpNode> {
8177 defm NAME: avx512_trunc
8178 avx512vl_i64_info, v4i32x_info, v4i32x_info,
8179 v8i32x_info, i64mem, i128mem, i256mem, StoreNode,
8180 MaskedStoreNode>, EVEX_CD8<32, CD8VH>;
81768181 }
81778182
81788183 multiclass avx512_trunc_db opc, string OpcodeStr, SDNode OpNode,
81798184 OpndItins itins, PatFrag StoreNode,
8180 PatFrag MaskedStoreNode> {
8181 defm NAME: avx512_trunc
8182 v16i8x_info, v16i8x_info, v16i8x_info, i32mem, i64mem, i128mem,
8183 StoreNode, MaskedStoreNode>, EVEX_CD8<8, CD8VQ>;
8185 PatFrag MaskedStoreNode, SDNode InVecNode = OpNode> {
8186 defm NAME: avx512_trunc
8187 avx512vl_i32_info, v16i8x_info, v16i8x_info,
8188 v16i8x_info, i32mem, i64mem, i128mem, StoreNode,
8189 MaskedStoreNode>, EVEX_CD8<8, CD8VQ>;
81848190 }
81858191
81868192 multiclass avx512_trunc_dw opc, string OpcodeStr, SDNode OpNode,
81878193 OpndItins itins, PatFrag StoreNode,
8188 PatFrag MaskedStoreNode> {
8189 defm NAME: avx512_trunc
8190 v8i16x_info, v8i16x_info, v16i16x_info, i64mem, i128mem, i256mem,
8191 StoreNode, MaskedStoreNode>, EVEX_CD8<16, CD8VH>;
8194 PatFrag MaskedStoreNode, SDNode InVecNode = OpNode> {
8195 defm NAME: avx512_trunc
8196 avx512vl_i32_info, v8i16x_info, v8i16x_info,
8197 v16i16x_info, i64mem, i128mem, i256mem, StoreNode,
8198 MaskedStoreNode>, EVEX_CD8<16, CD8VH>;
81928199 }
81938200
81948201 multiclass avx512_trunc_wb opc, string OpcodeStr, SDNode OpNode,
81958202 OpndItins itins, PatFrag StoreNode,
8196 PatFrag MaskedStoreNode> {
8197 defm NAME: avx512_trunc
8198 v16i8x_info, v16i8x_info, v32i8x_info, i64mem, i128mem, i256mem,
8199 StoreNode, MaskedStoreNode, HasBWI>, EVEX_CD8<16, CD8VH>;
8200 }
8201
8202 defm VPMOVQB : avx512_trunc_qb<0x32, "vpmovqb", X86vtrunc, AVX512_TRUNCATE,
8203 truncstorevi8, masked_truncstorevi8>;
8203 PatFrag MaskedStoreNode, SDNode InVecNode = OpNode> {
8204 defm NAME: avx512_trunc
8205 itins, avx512vl_i16_info, v16i8x_info, v16i8x_info,
8206 v32i8x_info, i64mem, i128mem, i256mem, StoreNode,
8207 MaskedStoreNode, HasBWI>, EVEX_CD8<16, CD8VH>;
8208 }
8209
8210 defm VPMOVQB : avx512_trunc_qb<0x32, "vpmovqb", trunc, AVX512_TRUNCATE,
8211 truncstorevi8, masked_truncstorevi8, X86vtrunc>;
82048212 defm VPMOVSQB : avx512_trunc_qb<0x22, "vpmovsqb", X86vtruncs, AVX512_TRUNCATE,
82058213 truncstore_s_vi8, masked_truncstore_s_vi8>;
82068214 defm VPMOVUSQB : avx512_trunc_qb<0x12, "vpmovusqb", X86vtruncus, AVX512_TRUNCATE,
82078215 truncstore_us_vi8, masked_truncstore_us_vi8>;
82088216
8209 defm VPMOVQW : avx512_trunc_qw<0x34, "vpmovqw", X86vtrunc, AVX512_TRUNCATE,
8210 truncstorevi16, masked_truncstorevi16>;
8217 defm VPMOVQW : avx512_trunc_qw<0x34, "vpmovqw", trunc, AVX512_TRUNCATE,
8218 truncstorevi16, masked_truncstorevi16, X86vtrunc>;
82118219 defm VPMOVSQW : avx512_trunc_qw<0x24, "vpmovsqw", X86vtruncs, AVX512_TRUNCATE,
82128220 truncstore_s_vi16, masked_truncstore_s_vi16>;
82138221 defm VPMOVUSQW : avx512_trunc_qw<0x14, "vpmovusqw", X86vtruncus, AVX512_TRUNCATE,
82148222 truncstore_us_vi16, masked_truncstore_us_vi16>;
82158223
8216 defm VPMOVQD : avx512_trunc_qd<0x35, "vpmovqd", X86vtrunc, AVX512_TRUNCATE,
8217 truncstorevi32, masked_truncstorevi32>;
8224 defm VPMOVQD : avx512_trunc_qd<0x35, "vpmovqd", trunc, AVX512_TRUNCATE,
8225 truncstorevi32, masked_truncstorevi32, X86vtrunc>;
82188226 defm VPMOVSQD : avx512_trunc_qd<0x25, "vpmovsqd", X86vtruncs, AVX512_TRUNCATE,
82198227 truncstore_s_vi32, masked_truncstore_s_vi32>;
82208228 defm VPMOVUSQD : avx512_trunc_qd<0x15, "vpmovusqd", X86vtruncus, AVX512_TRUNCATE,
82218229 truncstore_us_vi32, masked_truncstore_us_vi32>;
82228230
8223 defm VPMOVDB : avx512_trunc_db<0x31, "vpmovdb", X86vtrunc, AVX512_TRUNCATE,
8224 truncstorevi8, masked_truncstorevi8>;
8231 defm VPMOVDB : avx512_trunc_db<0x31, "vpmovdb", trunc, AVX512_TRUNCATE,
8232 truncstorevi8, masked_truncstorevi8, X86vtrunc>;
82258233 defm VPMOVSDB : avx512_trunc_db<0x21, "vpmovsdb", X86vtruncs, AVX512_TRUNCATE,
82268234 truncstore_s_vi8, masked_truncstore_s_vi8>;
82278235 defm VPMOVUSDB : avx512_trunc_db<0x11, "vpmovusdb", X86vtruncus, AVX512_TRUNCATE,
82288236 truncstore_us_vi8, masked_truncstore_us_vi8>;
82298237
8230 defm VPMOVDW : avx512_trunc_dw<0x33, "vpmovdw", X86vtrunc, AVX512_TRUNCATE,
8231 truncstorevi16, masked_truncstorevi16>;
8238 defm VPMOVDW : avx512_trunc_dw<0x33, "vpmovdw", trunc, AVX512_TRUNCATE,
8239 truncstorevi16, masked_truncstorevi16, X86vtrunc>;
82328240 defm VPMOVSDW : avx512_trunc_dw<0x23, "vpmovsdw", X86vtruncs, AVX512_TRUNCATE,
82338241 truncstore_s_vi16, masked_truncstore_s_vi16>;
82348242 defm VPMOVUSDW : avx512_trunc_dw<0x13, "vpmovusdw", X86vtruncus, AVX512_TRUNCATE,
82358243 truncstore_us_vi16, masked_truncstore_us_vi16>;
82368244
8237 defm VPMOVWB : avx512_trunc_wb<0x30, "vpmovwb", X86vtrunc, AVX512_TRUNCATE,
8238 truncstorevi8, masked_truncstorevi8>;
8245 defm VPMOVWB : avx512_trunc_wb<0x30, "vpmovwb", trunc, AVX512_TRUNCATE,
8246 truncstorevi8, masked_truncstorevi8, X86vtrunc>;
82398247 defm VPMOVSWB : avx512_trunc_wb<0x20, "vpmovswb", X86vtruncs, AVX512_TRUNCATE,
82408248 truncstore_s_vi8, masked_truncstore_s_vi8>;
82418249 defm VPMOVUSWB : avx512_trunc_wb<0x10, "vpmovuswb", X86vtruncus, AVX512_TRUNCATE,
82428250 truncstore_us_vi8, masked_truncstore_us_vi8>;
82438251
82448252 let Predicates = [HasAVX512, NoVLX] in {
8245 def: Pat<(v8i16 (X86vtrunc (v8i32 VR256X:$src))),
8253 def: Pat<(v8i16 (trunc (v8i32 VR256X:$src))),
82468254 (v8i16 (EXTRACT_SUBREG
82478255 (v16i16 (VPMOVDWZrr (v16i32 (INSERT_SUBREG (IMPLICIT_DEF),
82488256 VR256X:$src, sub_ymm)))), sub_xmm))>;
8249 def: Pat<(v4i32 (X86vtrunc (v4i64 VR256X:$src))),
8257 def: Pat<(v4i32 (trunc (v4i64 VR256X:$src))),
82508258 (v4i32 (EXTRACT_SUBREG
82518259 (v8i32 (VPMOVQDZrr (v8i64 (INSERT_SUBREG (IMPLICIT_DEF),
82528260 VR256X:$src, sub_ymm)))), sub_xmm))>;
82538261 }
82548262
82558263 let Predicates = [HasBWI, NoVLX] in {
8256 def: Pat<(v16i8 (X86vtrunc (v16i16 VR256X:$src))),
8264 def: Pat<(v16i8 (trunc (v16i16 VR256X:$src))),
82578265 (v16i8 (EXTRACT_SUBREG (VPMOVWBZrr (v32i16 (INSERT_SUBREG (IMPLICIT_DEF),
82588266 VR256X:$src, sub_ymm))), sub_xmm))>;
82598267 }
863863 X86_INTRINSIC_DATA(avx512_mask_pmov_db_256, INTR_TYPE_1OP_MASK,
864864 X86ISD::VTRUNC, 0),
865865 X86_INTRINSIC_DATA(avx512_mask_pmov_db_512, INTR_TYPE_1OP_MASK,
866 X86ISD::VTRUNC, 0),
866 ISD::TRUNCATE, 0),
867867 X86_INTRINSIC_DATA(avx512_mask_pmov_dw_128, INTR_TYPE_1OP_MASK,
868868 X86ISD::VTRUNC, 0),
869869 X86_INTRINSIC_DATA(avx512_mask_pmov_dw_256, INTR_TYPE_1OP_MASK,
870 X86ISD::VTRUNC, 0),
870 ISD::TRUNCATE, 0),
871871 X86_INTRINSIC_DATA(avx512_mask_pmov_dw_512, INTR_TYPE_1OP_MASK,
872 X86ISD::VTRUNC, 0),
872 ISD::TRUNCATE, 0),
873873 X86_INTRINSIC_DATA(avx512_mask_pmov_qb_128, INTR_TYPE_1OP_MASK,
874874 X86ISD::VTRUNC, 0),
875875 X86_INTRINSIC_DATA(avx512_mask_pmov_qb_256, INTR_TYPE_1OP_MASK,
879879 X86_INTRINSIC_DATA(avx512_mask_pmov_qd_128, INTR_TYPE_1OP_MASK,
880880 X86ISD::VTRUNC, 0),
881881 X86_INTRINSIC_DATA(avx512_mask_pmov_qd_256, INTR_TYPE_1OP_MASK,
882 X86ISD::VTRUNC, 0),
882 ISD::TRUNCATE, 0),
883883 X86_INTRINSIC_DATA(avx512_mask_pmov_qd_512, INTR_TYPE_1OP_MASK,
884 X86ISD::VTRUNC, 0),
884 ISD::TRUNCATE, 0),
885885 X86_INTRINSIC_DATA(avx512_mask_pmov_qw_128, INTR_TYPE_1OP_MASK,
886886 X86ISD::VTRUNC, 0),
887887 X86_INTRINSIC_DATA(avx512_mask_pmov_qw_256, INTR_TYPE_1OP_MASK,
888888 X86ISD::VTRUNC, 0),
889889 X86_INTRINSIC_DATA(avx512_mask_pmov_qw_512, INTR_TYPE_1OP_MASK,
890 X86ISD::VTRUNC, 0),
890 ISD::TRUNCATE, 0),
891891 X86_INTRINSIC_DATA(avx512_mask_pmov_wb_128, INTR_TYPE_1OP_MASK,
892892 X86ISD::VTRUNC, 0),
893893 X86_INTRINSIC_DATA(avx512_mask_pmov_wb_256, INTR_TYPE_1OP_MASK,
894 X86ISD::VTRUNC, 0),
894 ISD::TRUNCATE, 0),
895895 X86_INTRINSIC_DATA(avx512_mask_pmov_wb_512, INTR_TYPE_1OP_MASK,
896 X86ISD::VTRUNC, 0),
896 ISD::TRUNCATE, 0),
897897 X86_INTRINSIC_DATA(avx512_mask_pmovs_db_128, INTR_TYPE_1OP_MASK,
898898 X86ISD::VTRUNCS, 0),
899899 X86_INTRINSIC_DATA(avx512_mask_pmovs_db_256, INTR_TYPE_1OP_MASK,
16211621 ; KNL-NEXT: ## kill: def %edi killed %edi def %rdi
16221622 ; KNL-NEXT: vpcmpnleud %zmm1, %zmm0, %k1
16231623 ; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
1624 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
1625 ; KNL-NEXT: vmovdqa %xmm0, -{{[0-9]+}}(%rsp)
1624 ; KNL-NEXT: vpmovdb %zmm0, -{{[0-9]+}}(%rsp)
16261625 ; KNL-NEXT: andl $15, %edi
16271626 ; KNL-NEXT: movzbl -24(%rsp,%rdi), %eax
16281627 ; KNL-NEXT: andl $1, %eax
23822382 ; KNL-LABEL: store_32i1_1:
23832383 ; KNL: ## %bb.0:
23842384 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
2385 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
23862385 ; KNL-NEXT: vpmovsxwd %ymm1, %zmm1
2387 ; KNL-NEXT: vpmovdb %zmm1, %xmm1
2388 ; KNL-NEXT: vpmovsxbd %xmm1, %zmm1
23892386 ; KNL-NEXT: vpslld $31, %zmm1, %zmm1
23902387 ; KNL-NEXT: vptestmd %zmm1, %zmm1, %k0
23912388 ; KNL-NEXT: kmovw %k0, 2(%rdi)
2392 ; KNL-NEXT: vpmovsxbd %xmm0, %zmm0
23932389 ; KNL-NEXT: vpslld $31, %zmm0, %zmm0
23942390 ; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0
23952391 ; KNL-NEXT: kmovw %k0, (%rdi)
24152411 ; AVX512DQ-LABEL: store_32i1_1:
24162412 ; AVX512DQ: ## %bb.0:
24172413 ; AVX512DQ-NEXT: vpmovsxwd %ymm0, %zmm0
2418 ; AVX512DQ-NEXT: vpmovdb %zmm0, %xmm0
24192414 ; AVX512DQ-NEXT: vpmovsxwd %ymm1, %zmm1
2420 ; AVX512DQ-NEXT: vpmovdb %zmm1, %xmm1
2421 ; AVX512DQ-NEXT: vpmovsxbd %xmm1, %zmm1
24222415 ; AVX512DQ-NEXT: vpslld $31, %zmm1, %zmm1
24232416 ; AVX512DQ-NEXT: vptestmd %zmm1, %zmm1, %k0
24242417 ; AVX512DQ-NEXT: kmovw %k0, 2(%rdi)
2425 ; AVX512DQ-NEXT: vpmovsxbd %xmm0, %zmm0
24262418 ; AVX512DQ-NEXT: vpslld $31, %zmm0, %zmm0
24272419 ; AVX512DQ-NEXT: vptestmd %zmm0, %zmm0, %k0
24282420 ; AVX512DQ-NEXT: kmovw %k0, (%rdi)
497497 ; KNL-LABEL: trunc_wb_256_mem:
498498 ; KNL: ## %bb.0:
499499 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
500 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
501 ; KNL-NEXT: vmovdqa %xmm0, (%rdi)
500 ; KNL-NEXT: vpmovdb %zmm0, (%rdi)
502501 ; KNL-NEXT: vzeroupper
503502 ; KNL-NEXT: retq
504503 ;
542541 ; KNL: ## %bb.0:
543542 ; KNL-NEXT: vpminuw {{.*}}(%rip), %ymm0, %ymm0
544543 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
545 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
546 ; KNL-NEXT: vmovdqu %xmm0, (%rdi)
544 ; KNL-NEXT: vpmovdb %zmm0, (%rdi)
547545 ; KNL-NEXT: vzeroupper
548546 ; KNL-NEXT: retq
549547 ;
211211 ; KNL-NEXT: subq $32, %rsp
212212 ; KNL-NEXT: vpcmpeqd %zmm3, %zmm1, %k1
213213 ; KNL-NEXT: vpternlogd $255, %zmm1, %zmm1, %zmm1 {%k1} {z}
214 ; KNL-NEXT: vpmovdb %zmm1, %xmm1
215 ; KNL-NEXT: vpmovsxbd %xmm1, %zmm1
216214 ; KNL-NEXT: vptestmd %zmm1, %zmm1, %k0
217215 ; KNL-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
218216 ; KNL-NEXT: vpcmpeqd %zmm2, %zmm0, %k1
219217 ; KNL-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
220 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
221 ; KNL-NEXT: vpmovsxbd %xmm0, %zmm0
222218 ; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0
223219 ; KNL-NEXT: kmovw %k0, (%rsp)
224220 ; KNL-NEXT: movl (%rsp), %eax
258254 ; KNL-NEXT: subq $64, %rsp
259255 ; KNL-NEXT: vpcmpeqw %ymm5, %ymm1, %ymm1
260256 ; KNL-NEXT: vpmovsxwd %ymm1, %zmm1
261 ; KNL-NEXT: vpmovdb %zmm1, %xmm1
262 ; KNL-NEXT: vpmovsxbd %xmm1, %zmm1
263257 ; KNL-NEXT: vptestmd %zmm1, %zmm1, %k0
264258 ; KNL-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
265259 ; KNL-NEXT: vpcmpeqw %ymm4, %ymm0, %ymm0
266260 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
267 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
268 ; KNL-NEXT: vpmovsxbd %xmm0, %zmm0
269261 ; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0
270262 ; KNL-NEXT: kmovw %k0, (%rsp)
271263 ; KNL-NEXT: vpcmpeqw %ymm7, %ymm3, %ymm0
272264 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
273 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
274 ; KNL-NEXT: vpmovsxbd %xmm0, %zmm0
275265 ; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0
276266 ; KNL-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
277267 ; KNL-NEXT: vpcmpeqw %ymm6, %ymm2, %ymm0
278268 ; KNL-NEXT: vpmovsxwd %ymm0, %zmm0
279 ; KNL-NEXT: vpmovdb %zmm0, %xmm0
280 ; KNL-NEXT: vpmovsxbd %xmm0, %zmm0
281269 ; KNL-NEXT: vptestmd %zmm0, %zmm0, %k0
282270 ; KNL-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
283271 ; KNL-NEXT: movl (%rsp), %ecx
9898 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
9999 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
100100 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
101 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
102 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
103101 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
104102 ; NoVLX-NEXT: kmovw %k0, (%rsp)
105103 ; NoVLX-NEXT: movl (%rsp), %eax
142140 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
143141 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
144142 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
145 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
146 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
147143 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
148144 ; NoVLX-NEXT: kmovw %k0, (%rsp)
149145 ; NoVLX-NEXT: movl (%rsp), %eax
273269 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
274270 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
275271 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
276 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
277 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
278272 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
279273 ; NoVLX-NEXT: kmovw %k0, (%rsp)
280274 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
322316 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
323317 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
324318 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
325 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
326 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
327319 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
328320 ; NoVLX-NEXT: kmovw %k0, (%rsp)
329321 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
12401232 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
12411233 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
12421234 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
1243 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1244 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
12451235 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
12461236 ; NoVLX-NEXT: kmovw %k0, (%rsp)
12471237 ; NoVLX-NEXT: movl (%rsp), %eax
12791269 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
12801270 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
12811271 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
1282 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1283 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
12841272 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
12851273 ; NoVLX-NEXT: kmovw %k0, (%rsp)
12861274 ; NoVLX-NEXT: movl (%rsp), %eax
13231311 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
13241312 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
13251313 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
1326 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1327 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
13281314 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
13291315 ; NoVLX-NEXT: kmovw %k0, (%rsp)
13301316 ; NoVLX-NEXT: movl (%rsp), %eax
13681354 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
13691355 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
13701356 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
1371 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1372 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
13731357 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
13741358 ; NoVLX-NEXT: kmovw %k0, (%rsp)
13751359 ; NoVLX-NEXT: movl (%rsp), %eax
14131397 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
14141398 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
14151399 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
1416 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1417 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
14181400 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
14191401 ; NoVLX-NEXT: kmovw %k0, (%rsp)
14201402 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
14571439 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
14581440 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
14591441 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
1460 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1461 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
14621442 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
14631443 ; NoVLX-NEXT: kmovw %k0, (%rsp)
14641444 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
15061486 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
15071487 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
15081488 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
1509 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1510 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
15111489 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
15121490 ; NoVLX-NEXT: kmovw %k0, (%rsp)
15131491 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
15561534 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
15571535 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
15581536 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
1559 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1560 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
15611537 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
15621538 ; NoVLX-NEXT: kmovw %k0, (%rsp)
15631539 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
17711747 ; NoVLX-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
17721748 ; NoVLX-NEXT: vpcmpeqw %ymm1, %ymm3, %ymm1
17731749 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
1774 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
1775 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
17761750 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
17771751 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
17781752 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
1779 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1780 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
17811753 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
17821754 ; NoVLX-NEXT: kmovw %k0, (%rsp)
17831755 ; NoVLX-NEXT: movl (%rsp), %ecx
19041876 ; NoVLX-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
19051877 ; NoVLX-NEXT: vpcmpeqw 32(%rdi), %ymm1, %ymm1
19061878 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
1907 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
1908 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
19091879 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
19101880 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
19111881 ; NoVLX-NEXT: vpcmpeqw (%rdi), %ymm0, %ymm0
19121882 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
1913 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
1914 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
19151883 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
19161884 ; NoVLX-NEXT: kmovw %k0, (%rsp)
19171885 ; NoVLX-NEXT: movl (%rsp), %ecx
44414409 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
44424410 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
44434411 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4444 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4445 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
44464412 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
44474413 ; NoVLX-NEXT: kmovw %k0, (%rsp)
44484414 ; NoVLX-NEXT: movl (%rsp), %eax
44804446 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
44814447 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
44824448 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4483 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4484 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
44854449 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
44864450 ; NoVLX-NEXT: kmovw %k0, (%rsp)
44874451 ; NoVLX-NEXT: movl (%rsp), %eax
45224486 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
45234487 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
45244488 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4525 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4526 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
45274489 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
45284490 ; NoVLX-NEXT: kmovw %k0, (%rsp)
45294491 ; NoVLX-NEXT: movl (%rsp), %eax
45654527 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
45664528 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
45674529 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4568 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4569 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
45704530 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
45714531 ; NoVLX-NEXT: kmovw %k0, (%rsp)
45724532 ; NoVLX-NEXT: movl (%rsp), %eax
46084568 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
46094569 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
46104570 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4611 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4612 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
46134571 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
46144572 ; NoVLX-NEXT: kmovw %k0, (%rsp)
46154573 ; NoVLX-NEXT: movl (%rsp), %eax
46514609 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
46524610 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
46534611 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4654 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4655 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
46564612 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
46574613 ; NoVLX-NEXT: kmovw %k0, (%rsp)
46584614 ; NoVLX-NEXT: movl (%rsp), %eax
46974653 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
46984654 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
46994655 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4700 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4701 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
47024656 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
47034657 ; NoVLX-NEXT: kmovw %k0, (%rsp)
47044658 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
47414695 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
47424696 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
47434697 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4744 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4745 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
47464698 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
47474699 ; NoVLX-NEXT: kmovw %k0, (%rsp)
47484700 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
47884740 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
47894741 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
47904742 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4791 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4792 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
47934743 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
47944744 ; NoVLX-NEXT: kmovw %k0, (%rsp)
47954745 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
48364786 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
48374787 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
48384788 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4839 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4840 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
48414789 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
48424790 ; NoVLX-NEXT: kmovw %k0, (%rsp)
48434791 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
48844832 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
48854833 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
48864834 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4887 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4888 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
48894835 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
48904836 ; NoVLX-NEXT: kmovw %k0, (%rsp)
48914837 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
49324878 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
49334879 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
49344880 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
4935 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
4936 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
49374881 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
49384882 ; NoVLX-NEXT: kmovw %k0, (%rsp)
49394883 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
83228266 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
83238267 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
83248268 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
8325 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
8326 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
83278269 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
83288270 ; NoVLX-NEXT: kmovw %k0, (%rsp)
83298271 ; NoVLX-NEXT: movl (%rsp), %eax
83668308 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
83678309 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
83688310 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
8369 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
8370 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
83718311 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
83728312 ; NoVLX-NEXT: kmovw %k0, (%rsp)
83738313 ; NoVLX-NEXT: movl (%rsp), %eax
84978437 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
84988438 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
84998439 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
8500 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
8501 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
85028440 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
85038441 ; NoVLX-NEXT: kmovw %k0, (%rsp)
85048442 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
85468484 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
85478485 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
85488486 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
8549 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
8550 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
85518487 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
85528488 ; NoVLX-NEXT: kmovw %k0, (%rsp)
85538489 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
94649400 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
94659401 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
94669402 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
9467 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9468 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
94699403 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
94709404 ; NoVLX-NEXT: kmovw %k0, (%rsp)
94719405 ; NoVLX-NEXT: movl (%rsp), %eax
95039437 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
95049438 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
95059439 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
9506 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9507 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
95089440 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
95099441 ; NoVLX-NEXT: kmovw %k0, (%rsp)
95109442 ; NoVLX-NEXT: movl (%rsp), %eax
95479479 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
95489480 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
95499481 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
9550 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9551 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
95529482 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
95539483 ; NoVLX-NEXT: kmovw %k0, (%rsp)
95549484 ; NoVLX-NEXT: movl (%rsp), %eax
95929522 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
95939523 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
95949524 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
9595 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9596 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
95979525 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
95989526 ; NoVLX-NEXT: kmovw %k0, (%rsp)
95999527 ; NoVLX-NEXT: movl (%rsp), %eax
96379565 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
96389566 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
96399567 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
9640 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9641 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
96429568 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
96439569 ; NoVLX-NEXT: kmovw %k0, (%rsp)
96449570 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
96819607 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
96829608 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
96839609 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
9684 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9685 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
96869610 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
96879611 ; NoVLX-NEXT: kmovw %k0, (%rsp)
96889612 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
97309654 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
97319655 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
97329656 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
9733 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9734 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
97359657 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
97369658 ; NoVLX-NEXT: kmovw %k0, (%rsp)
97379659 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
97809702 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
97819703 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
97829704 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
9783 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
9784 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
97859705 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
97869706 ; NoVLX-NEXT: kmovw %k0, (%rsp)
97879707 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
99959915 ; NoVLX-NEXT: vinserti128 $1, %xmm2, %ymm1, %ymm1
99969916 ; NoVLX-NEXT: vpcmpgtw %ymm1, %ymm3, %ymm1
99979917 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
9998 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
9999 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
100009918 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
100019919 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
100029920 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
10003 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
10004 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
100059921 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
100069922 ; NoVLX-NEXT: kmovw %k0, (%rsp)
100079923 ; NoVLX-NEXT: movl (%rsp), %ecx
1012810044 ; NoVLX-NEXT: vinserti128 $1, %xmm3, %ymm1, %ymm1
1012910045 ; NoVLX-NEXT: vpcmpgtw 32(%rdi), %ymm1, %ymm1
1013010046 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
10131 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
10132 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
1013310047 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
1013410048 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1013510049 ; NoVLX-NEXT: vpcmpgtw (%rdi), %ymm0, %ymm0
1013610050 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
10137 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
10138 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1013910051 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1014010052 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1014110053 ; NoVLX-NEXT: movl (%rsp), %ecx
1266512577 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1266612578 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1266712579 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12668 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12669 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1267012580 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1267112581 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1267212582 ; NoVLX-NEXT: movl (%rsp), %eax
1270412614 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1270512615 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1270612616 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12707 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12708 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1270912617 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1271012618 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1271112619 ; NoVLX-NEXT: movl (%rsp), %eax
1274612654 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1274712655 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1274812656 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12749 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12750 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1275112657 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1275212658 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1275312659 ; NoVLX-NEXT: movl (%rsp), %eax
1278912695 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1279012696 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1279112697 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12792 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12793 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1279412698 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1279512699 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1279612700 ; NoVLX-NEXT: movl (%rsp), %eax
1283212736 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1283312737 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1283412738 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12835 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12836 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1283712739 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1283812740 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1283912741 ; NoVLX-NEXT: movl (%rsp), %eax
1287512777 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1287612778 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1287712779 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12878 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12879 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1288012780 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1288112781 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1288212782 ; NoVLX-NEXT: movl (%rsp), %eax
1292112821 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1292212822 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1292312823 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12924 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12925 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1292612824 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1292712825 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1292812826 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1296512863 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1296612864 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1296712865 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
12968 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
12969 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1297012866 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1297112867 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1297212868 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1301212908 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1301312909 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1301412910 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
13015 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
13016 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1301712911 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1301812912 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1301912913 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1306012954 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1306112955 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1306212956 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
13063 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
13064 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1306512957 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1306612958 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1306712959 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1310813000 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1310913001 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1311013002 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
13111 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
13112 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1311313003 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1311413004 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1311513005 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1315613046 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1315713047 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1315813048 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
13159 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
13160 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1316113049 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1316213050 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1316313051 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1655616444 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1655716445 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1655816446 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
16559 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
16560 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1656116447 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1656216448 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1656316449 ; NoVLX-NEXT: movl (%rsp), %eax
1660416490 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1660516491 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1660616492 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
16607 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
16608 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1660916493 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1661016494 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1661116495 ; NoVLX-NEXT: movl (%rsp), %eax
1674516629 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1674616630 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1674716631 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
16748 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
16749 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1675016632 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1675116633 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1675216634 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1679816680 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1679916681 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1680016682 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
16801 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
16802 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1680316683 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1680416684 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1680516685 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1777417654 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1777517655 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1777617656 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
17777 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
17778 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1777917657 ; NoVLX-NEXT: vpslld $31, %zmm0, %zmm0
1778017658 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1778117659 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1781717695 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1781817696 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1781917697 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
17820 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
17821 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1782217698 ; NoVLX-NEXT: vpslld $31, %zmm0, %zmm0
1782317699 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1782417700 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1786517741 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1786617742 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1786717743 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
17868 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
17869 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1787017744 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1787117745 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1787217746 ; NoVLX-NEXT: movl (%rsp), %eax
1791417788 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
1791517789 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1791617790 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
17917 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
17918 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1791917791 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1792017792 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1792117793 ; NoVLX-NEXT: movl (%rsp), %eax
1796117833 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1796217834 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1796317835 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
17964 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
17965 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1796617836 ; NoVLX-NEXT: vpslld $31, %zmm0, %zmm0
1796717837 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1796817838 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1800917879 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1801017880 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1801117881 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
18012 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
18013 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1801417882 ; NoVLX-NEXT: vpslld $31, %zmm0, %zmm0
1801517883 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1801617884 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1806217930 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1806317931 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1806417932 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
18065 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
18066 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1806717933 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1806817934 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1806917935 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1811617982 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1811717983 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1811817984 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
18119 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
18120 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1812117985 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1812217986 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1812317987 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
1833318197 ; NoVLX-NEXT: vpcmpeqd %ymm2, %ymm2, %ymm2
1833418198 ; NoVLX-NEXT: vpxor %ymm2, %ymm1, %ymm1
1833518199 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
18336 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
18337 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
1833818200 ; NoVLX-NEXT: vpslld $31, %zmm1, %zmm1
1833918201 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
1834018202 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1834118203 ; NoVLX-NEXT: vpxor %ymm2, %ymm0, %ymm0
1834218204 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
18343 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
18344 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1834518205 ; NoVLX-NEXT: vpslld $31, %zmm0, %zmm0
1834618206 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1834718207 ; NoVLX-NEXT: kmovw %k0, (%rsp)
1847418334 ; NoVLX-NEXT: vpcmpeqd %ymm2, %ymm2, %ymm2
1847518335 ; NoVLX-NEXT: vpxor %ymm2, %ymm1, %ymm1
1847618336 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
18477 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
18478 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
1847918337 ; NoVLX-NEXT: vpslld $31, %zmm1, %zmm1
1848018338 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
1848118339 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
1848218340 ; NoVLX-NEXT: vpxor %ymm2, %ymm0, %ymm0
1848318341 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
18484 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
18485 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
1848618342 ; NoVLX-NEXT: vpslld $31, %zmm0, %zmm0
1848718343 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
1848818344 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2102120877 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2102220878 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2102320879 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21024 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21025 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2102620880 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2102720881 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2102820882 ; NoVLX-NEXT: movl (%rsp), %eax
2106020914 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2106120915 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2106220916 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21063 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21064 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2106520917 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2106620918 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2106720919 ; NoVLX-NEXT: movl (%rsp), %eax
2110220954 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2110320955 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2110420956 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21105 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21106 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2110720957 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2110820958 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2110920959 ; NoVLX-NEXT: movl (%rsp), %eax
2114520995 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2114620996 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2114720997 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21148 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21149 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2115020998 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2115120999 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2115221000 ; NoVLX-NEXT: movl (%rsp), %eax
2118821036 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2118921037 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2119021038 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21191 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21192 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2119321039 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2119421040 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2119521041 ; NoVLX-NEXT: movl (%rsp), %eax
2123121077 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2123221078 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2123321079 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21234 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21235 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2123621080 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2123721081 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2123821082 ; NoVLX-NEXT: movl (%rsp), %eax
2127721121 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2127821122 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2127921123 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21280 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21281 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2128221124 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2128321125 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2128421126 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2132121163 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2132221164 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2132321165 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21324 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21325 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2132621166 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2132721167 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2132821168 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2136821208 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2136921209 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2137021210 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21371 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21372 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2137321211 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2137421212 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2137521213 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2141621254 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2141721255 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2141821256 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21419 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21420 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2142121257 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2142221258 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2142321259 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2146421300 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2146521301 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2146621302 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21467 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21468 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2146921303 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2147021304 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2147121305 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2151221346 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2151321347 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2151421348 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
21515 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
21516 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2151721349 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2151821350 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2151921351 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2491124743 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2491224744 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2491324745 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
24914 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
24915 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2491624746 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2491724747 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2491824748 ; NoVLX-NEXT: movl (%rsp), %eax
2495824788 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2495924789 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2496024790 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
24961 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
24962 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2496324791 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2496424792 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2496524793 ; NoVLX-NEXT: movl (%rsp), %eax
2509824926 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2509924927 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2510024928 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
25101 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
25102 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2510324929 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2510424930 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2510524931 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2515024976 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2515124977 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2515224978 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
25153 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
25154 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2515524979 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2515624980 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2515724981 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2611925943 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2612025944 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2612125945 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
26122 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26123 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2612425946 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2612525947 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2612625948 ; NoVLX-NEXT: movl (%rsp), %eax
2616125983 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2616225984 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2616325985 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
26164 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26165 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2616625986 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2616725987 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2616825988 ; NoVLX-NEXT: movl (%rsp), %eax
2620826028 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2620926029 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2621026030 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
26211 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26212 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2621326031 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2621426032 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2621526033 ; NoVLX-NEXT: movl (%rsp), %eax
2625626074 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2625726075 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2625826076 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
26259 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26260 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2626126077 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2626226078 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2626326079 ; NoVLX-NEXT: movl (%rsp), %eax
2630426120 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2630526121 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2630626122 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
26307 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26308 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2630926123 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2631026124 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2631126125 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2635126165 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2635226166 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2635326167 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
26354 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26355 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2635626168 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2635726169 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2635826170 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2640326215 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2640426216 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2640526217 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
26406 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26407 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2640826218 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2640926219 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2641026220 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2645626266 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2645726267 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2645826268 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
26459 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26460 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2646126269 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2646226270 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2646326271 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2667326481 ; NoVLX-NEXT: vpxor %ymm4, %ymm2, %ymm2
2667426482 ; NoVLX-NEXT: vpcmpgtw %ymm3, %ymm2, %ymm2
2667526483 ; NoVLX-NEXT: vpmovsxwd %ymm2, %zmm2
26676 ; NoVLX-NEXT: vpmovdb %zmm2, %xmm2
26677 ; NoVLX-NEXT: vpmovsxbd %xmm2, %zmm2
2667826484 ; NoVLX-NEXT: vptestmd %zmm2, %zmm2, %k0
2667926485 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2668026486 ; NoVLX-NEXT: vpxor %ymm4, %ymm0, %ymm0
2668126487 ; NoVLX-NEXT: vpxor %ymm4, %ymm1, %ymm1
2668226488 ; NoVLX-NEXT: vpcmpgtw %ymm0, %ymm1, %ymm0
2668326489 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
26684 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26685 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2668626490 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2668726491 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2668826492 ; NoVLX-NEXT: movl (%rsp), %ecx
2681226616 ; NoVLX-NEXT: vpxor 32(%rdi), %ymm2, %ymm3
2681326617 ; NoVLX-NEXT: vpcmpgtw %ymm1, %ymm3, %ymm1
2681426618 ; NoVLX-NEXT: vpmovsxwd %ymm1, %zmm1
26815 ; NoVLX-NEXT: vpmovdb %zmm1, %xmm1
26816 ; NoVLX-NEXT: vpmovsxbd %xmm1, %zmm1
2681726619 ; NoVLX-NEXT: vptestmd %zmm1, %zmm1, %k0
2681826620 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2681926621 ; NoVLX-NEXT: vpxor %ymm2, %ymm0, %ymm0
2682026622 ; NoVLX-NEXT: vpxor (%rdi), %ymm2, %ymm1
2682126623 ; NoVLX-NEXT: vpcmpgtw %ymm0, %ymm1, %ymm0
2682226624 ; NoVLX-NEXT: vpmovsxwd %ymm0, %zmm0
26823 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
26824 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2682526625 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2682626626 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2682726627 ; NoVLX-NEXT: movl (%rsp), %ecx
2936129161 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2936229162 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2936329163 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29364 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29365 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2936629164 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2936729165 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2936829166 ; NoVLX-NEXT: movl (%rsp), %eax
2940029198 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2940129199 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2940229200 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29403 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29404 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2940529201 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2940629202 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2940729203 ; NoVLX-NEXT: movl (%rsp), %eax
2944229238 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2944329239 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2944429240 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29445 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29446 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2944729241 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2944829242 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2944929243 ; NoVLX-NEXT: movl (%rsp), %eax
2948529279 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2948629280 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2948729281 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29488 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29489 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2949029282 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2949129283 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2949229284 ; NoVLX-NEXT: movl (%rsp), %eax
2952829320 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2952929321 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2953029322 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29531 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29532 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2953329323 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2953429324 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2953529325 ; NoVLX-NEXT: movl (%rsp), %eax
2957129361 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
2957229362 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2957329363 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29574 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29575 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2957629364 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2957729365 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2957829366 ; NoVLX-NEXT: movl (%rsp), %eax
2961729405 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2961829406 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2961929407 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29620 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29621 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2962229408 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2962329409 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2962429410 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2966129447 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2966229448 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2966329449 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29664 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29665 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2966629450 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2966729451 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2966829452 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2970829492 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2970929493 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2971029494 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29711 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29712 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2971329495 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2971429496 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2971529497 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2975629538 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2975729539 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2975829540 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29759 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29760 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2976129541 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2976229542 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2976329543 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2980429584 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2980529585 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2980629586 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29807 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29808 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2980929587 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2981029588 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2981129589 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
2985229630 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2985329631 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
2985429632 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
29855 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
29856 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
2985729633 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
2985829634 ; NoVLX-NEXT: kmovw %k0, (%rsp)
2985929635 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3525735033 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3525835034 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3525935035 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35260 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35261 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3526235036 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3526335037 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3526435038 ; NoVLX-NEXT: movl (%rsp), %eax
3529635070 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3529735071 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3529835072 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35299 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35300 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3530135073 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3530235074 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3530335075 ; NoVLX-NEXT: movl (%rsp), %eax
3533635108 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3533735109 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3533835110 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35339 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35340 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3534135111 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3534235112 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3534335113 ; NoVLX-NEXT: movl (%rsp), %eax
3537935149 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3538035150 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3538135151 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35382 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35383 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3538435152 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3538535153 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3538635154 ; NoVLX-NEXT: movl (%rsp), %eax
3542235190 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3542335191 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3542435192 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35425 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35426 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3542735193 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3542835194 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3542935195 ; NoVLX-NEXT: movl (%rsp), %eax
3546635232 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3546735233 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3546835234 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35469 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35470 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3547135235 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3547235236 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3547335237 ; NoVLX-NEXT: movl (%rsp), %eax
3555435318 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3555535319 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3555635320 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35557 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35558 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3555935321 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3556035322 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3556135323 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3559835360 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3559935361 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3560035362 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35601 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35602 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3560335363 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3560435364 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3560535365 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3564335403 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3564435404 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3564535405 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35646 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35647 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3564835406 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3564935407 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3565035408 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3569135449 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3569235450 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3569335451 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35694 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35695 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3569635452 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3569735453 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3569835454 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3573935495 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3574035496 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3574135497 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35742 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35743 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3574435498 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3574535499 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3574635500 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3578835542 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3578935543 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3579035544 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
35791 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
35792 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3579335545 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3579435546 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3579535547 ; NoVLX-NEXT: movl {{[0-9]+}}(%rsp), %ecx
3928639038 ; NoVLX-NEXT: kxorw %k0, %k0, %k0
3928739039 ; NoVLX-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
3928839040 ; NoVLX-NEXT: vpternlogd $255, %zmm0, %zmm0, %zmm0 {%k1} {z}
39289 ; NoVLX-NEXT: vpmovdb %zmm0, %xmm0
39290 ; NoVLX-NEXT: vpmovsxbd %xmm0, %zmm0
3929139041 ; NoVLX-NEXT: vptestmd %zmm0, %zmm0, %k0
3929239042 ; NoVLX-NEXT: kmovw %k0, (%rsp)
3929339043 ; NoVLX-NEXT: movl (%rsp), %eax
5959 ; AVX512F-NEXT: subq $32, %rsp
6060 ; AVX512F-NEXT: vpcmpgtw %ymm3, %ymm1, %ymm1
6161 ; AVX512F-NEXT: vpmovsxwd %ymm1, %zmm1
62 ; AVX512F-NEXT: vpmovdb %zmm1, %xmm1
63 ; AVX512F-NEXT: vpmovsxbd %xmm1, %zmm1
6462 ; AVX512F-NEXT: vptestmd %zmm1, %zmm1, %k0
6563 ; AVX512F-NEXT: kmovw %k0, {{[0-9]+}}(%rsp)
6664 ; AVX512F-NEXT: vpcmpgtw %ymm2, %ymm0, %ymm0
6765 ; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0
68 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
69 ; AVX512F-NEXT: vpmovsxbd %xmm0, %zmm0
7066 ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k0
7167 ; AVX512F-NEXT: kmovw %k0, (%rsp)
7268 ; AVX512F-NEXT: movl (%rsp), %eax
8080 ; AVX512F-LABEL: trunc_v16i16_to_v16i8:
8181 ; AVX512F: # %bb.0:
8282 ; AVX512F-NEXT: vpmovsxwd (%rdi), %zmm0
83 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
84 ; AVX512F-NEXT: vmovdqa %xmm0, (%rsi)
83 ; AVX512F-NEXT: vpmovdb %zmm0, (%rsi)
8584 ; AVX512F-NEXT: vzeroupper
8685 ; AVX512F-NEXT: retq
8786 ;
8887 ; AVX512VL-LABEL: trunc_v16i16_to_v16i8:
8988 ; AVX512VL: # %bb.0:
9089 ; AVX512VL-NEXT: vpmovsxwd (%rdi), %zmm0
91 ; AVX512VL-NEXT: vpmovdb %zmm0, %xmm0
92 ; AVX512VL-NEXT: vmovdqa %xmm0, (%rsi)
90 ; AVX512VL-NEXT: vpmovdb %zmm0, (%rsi)
9391 ; AVX512VL-NEXT: vzeroupper
9492 ; AVX512VL-NEXT: retq
9593 ;
11251125 ; AVX512F-LABEL: trunc16i16_16i8:
11261126 ; AVX512F: # %bb.0: # %entry
11271127 ; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0
1128 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
1129 ; AVX512F-NEXT: vmovdqu %xmm0, (%rax)
1128 ; AVX512F-NEXT: vpmovdb %zmm0, (%rax)
11301129 ; AVX512F-NEXT: vzeroupper
11311130 ; AVX512F-NEXT: retq
11321131 ;
11331132 ; AVX512VL-LABEL: trunc16i16_16i8:
11341133 ; AVX512VL: # %bb.0: # %entry
11351134 ; AVX512VL-NEXT: vpmovsxwd %ymm0, %zmm0
1136 ; AVX512VL-NEXT: vpmovdb %zmm0, %xmm0
1137 ; AVX512VL-NEXT: vmovdqu %xmm0, (%rax)
1135 ; AVX512VL-NEXT: vpmovdb %zmm0, (%rax)
11381136 ; AVX512VL-NEXT: vzeroupper
11391137 ; AVX512VL-NEXT: retq
11401138 ;
11891187 ; AVX512F: # %bb.0: # %entry
11901188 ; AVX512F-NEXT: vpsraw $8, %ymm0, %ymm0
11911189 ; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0
1192 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
1193 ; AVX512F-NEXT: vmovdqu %xmm0, (%rax)
1190 ; AVX512F-NEXT: vpmovdb %zmm0, (%rax)
11941191 ; AVX512F-NEXT: vzeroupper
11951192 ; AVX512F-NEXT: retq
11961193 ;
11981195 ; AVX512VL: # %bb.0: # %entry
11991196 ; AVX512VL-NEXT: vpsraw $8, %ymm0, %ymm0
12001197 ; AVX512VL-NEXT: vpmovsxwd %ymm0, %zmm0
1201 ; AVX512VL-NEXT: vpmovdb %zmm0, %xmm0
1202 ; AVX512VL-NEXT: vmovdqu %xmm0, (%rax)
1198 ; AVX512VL-NEXT: vpmovdb %zmm0, (%rax)
12031199 ; AVX512VL-NEXT: vzeroupper
12041200 ; AVX512VL-NEXT: retq
12051201 ;
12561252 ; AVX512F: # %bb.0: # %entry
12571253 ; AVX512F-NEXT: vpsrlw $8, %ymm0, %ymm0
12581254 ; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0
1259 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
1260 ; AVX512F-NEXT: vmovdqu %xmm0, (%rax)
1255 ; AVX512F-NEXT: vpmovdb %zmm0, (%rax)
12611256 ; AVX512F-NEXT: vzeroupper
12621257 ; AVX512F-NEXT: retq
12631258 ;
12651260 ; AVX512VL: # %bb.0: # %entry
12661261 ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0
12671262 ; AVX512VL-NEXT: vpmovsxwd %ymm0, %zmm0
1268 ; AVX512VL-NEXT: vpmovdb %zmm0, %xmm0
1269 ; AVX512VL-NEXT: vmovdqu %xmm0, (%rax)
1263 ; AVX512VL-NEXT: vpmovdb %zmm0, (%rax)
12701264 ; AVX512VL-NEXT: vzeroupper
12711265 ; AVX512VL-NEXT: retq
12721266 ;
20612055 ; AVX512F-NEXT: vpsrlw $8, %ymm0, %ymm0
20622056 ; AVX512F-NEXT: vpsrlw $8, %ymm1, %ymm1
20632057 ; AVX512F-NEXT: vpmovsxwd %ymm0, %zmm0
2064 ; AVX512F-NEXT: vpmovdb %zmm0, %xmm0
20652058 ; AVX512F-NEXT: vpmovsxwd %ymm1, %zmm1
2066 ; AVX512F-NEXT: vpmovdb %zmm1, %xmm1
2067 ; AVX512F-NEXT: vmovdqu %xmm0, (%rsi)
2068 ; AVX512F-NEXT: vmovdqu %xmm1, 16(%rsi)
2059 ; AVX512F-NEXT: vpmovdb %zmm0, (%rsi)
2060 ; AVX512F-NEXT: vpmovdb %zmm1, 16(%rsi)
20692061 ; AVX512F-NEXT: vzeroupper
20702062 ; AVX512F-NEXT: retq
20712063 ;
20762068 ; AVX512VL-NEXT: vpsrlw $8, %ymm0, %ymm0
20772069 ; AVX512VL-NEXT: vpsrlw $8, %ymm1, %ymm1
20782070 ; AVX512VL-NEXT: vpmovsxwd %ymm0, %zmm0
2079 ; AVX512VL-NEXT: vpmovdb %zmm0, %xmm0
20802071 ; AVX512VL-NEXT: vpmovsxwd %ymm1, %zmm1
2081 ; AVX512VL-NEXT: vpmovdb %zmm1, %xmm1
2082 ; AVX512VL-NEXT: vmovdqu %xmm0, (%rsi)
2083 ; AVX512VL-NEXT: vmovdqu %xmm1, 16(%rsi)
2072 ; AVX512VL-NEXT: vpmovdb %zmm0, (%rsi)
2073 ; AVX512VL-NEXT: vpmovdb %zmm1, 16(%rsi)
20842074 ; AVX512VL-NEXT: vzeroupper
20852075 ; AVX512VL-NEXT: retq
20862076 ;