• Home
  • Raw
  • Download

Lines Matching refs:opc

798 multiclass avx512_broadcast_scalar<bits<8> opc, string OpcodeStr,
802 def r_s : I< opc, MRMSrcReg, (outs DestInfo.RC:$dst),
808 def rk_s : I< opc, MRMSrcReg, (outs DestInfo.RC:$dst),
817 def rkz_s : I< opc, MRMSrcReg, (outs DestInfo.RC:$dst),
828 multiclass avx512_broadcast_rm<bits<8> opc, string OpcodeStr,
831 defm r : AVX512_maskable<opc, MRMSrcReg, DestInfo, (outs DestInfo.RC:$dst),
835 defm m : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
842 defm m_Int : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
851 multiclass avx512_fp_broadcast_vl<bits<8> opc, string OpcodeStr,
853 defm Z : avx512_broadcast_rm<opc, OpcodeStr, _.info512, _.info128>,
854 avx512_broadcast_scalar<opc, OpcodeStr, _.info512, _.info128>,
858 defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, _.info256, _.info128>,
859 avx512_broadcast_scalar<opc, OpcodeStr, _.info256, _.info128>,
885 multiclass avx512_int_broadcast_reg<bits<8> opc, X86VectorVTInfo _,
887 defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
893 multiclass avx512_int_broadcast_reg_vl<bits<8> opc, AVX512VLVectorVTInfo _,
896 defm Z : avx512_int_broadcast_reg<opc, _.info512, SrcRC>, EVEX_V512;
898 defm Z256 : avx512_int_broadcast_reg<opc, _.info256, SrcRC>, EVEX_V256;
899 defm Z128 : avx512_int_broadcast_reg<opc, _.info128, SrcRC>, EVEX_V128;
934 multiclass avx512_int_broadcast_rm_vl<bits<8> opc, string OpcodeStr,
937 defm Z : avx512_broadcast_rm<opc, OpcodeStr, _.info512, _.info128>,
944 defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, _.info256, _.info128>,
947 defm Z128 : avx512_broadcast_rm<opc, OpcodeStr, _.info128, _.info128>,
961 multiclass avx512_subvec_broadcast_rm<bits<8> opc, string OpcodeStr,
963 defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
1014 multiclass avx512_common_broadcast_32x2<bits<8> opc, string OpcodeStr,
1017 defm Z : avx512_broadcast_rm<opc, OpcodeStr, _Dst.info512, _Src.info128>,
1020 defm Z256 : avx512_broadcast_rm<opc, OpcodeStr, _Dst.info256, _Src.info128>,
1024 multiclass avx512_common_broadcast_i32x2<bits<8> opc, string OpcodeStr,
1026 avx512_common_broadcast_32x2<opc, OpcodeStr, _Dst, _Src> {
1029 defm Z128 : avx512_broadcast_rm<opc, OpcodeStr, _Dst.info128, _Src.info128>,
1051 multiclass avx512_mask_broadcastm<bits<8> opc, string OpcodeStr,
1053 def rr : AVX512XS8I<opc, MRMSrcReg, (outs _.RC:$dst), (ins KRC:$src),
1058 multiclass avx512_mask_broadcast<bits<8> opc, string OpcodeStr,
1061 defm Z : avx512_mask_broadcastm<opc, OpcodeStr, VTInfo.info512, KRC>, EVEX_V512;
1063 defm Z256 : avx512_mask_broadcastm<opc, OpcodeStr, VTInfo.info256, KRC>, EVEX_V256;
1064 defm Z128 : avx512_mask_broadcastm<opc, OpcodeStr, VTInfo.info128, KRC>, EVEX_V128;
1075 multiclass avx512_perm_i<bits<8> opc, string OpcodeStr,
1078 defm rr: AVX512_maskable_3src_cast<opc, MRMSrcReg, _, IdxVT, (outs _.RC:$dst),
1084 defm rm: AVX512_maskable_3src_cast<opc, MRMSrcMem, _, IdxVT, (outs _.RC:$dst),
1092 multiclass avx512_perm_i_mb<bits<8> opc, string OpcodeStr,
1095 defm rmb: AVX512_maskable_3src_cast<opc, MRMSrcMem, _, IdxVT, (outs _.RC:$dst),
1104 multiclass avx512_perm_i_sizes<bits<8> opc, string OpcodeStr,
1107 defm NAME: avx512_perm_i<opc, OpcodeStr, VTInfo.info512,
1109 avx512_perm_i_mb<opc, OpcodeStr, VTInfo.info512,
1112 defm NAME#128: avx512_perm_i<opc, OpcodeStr, VTInfo.info128,
1114 avx512_perm_i_mb<opc, OpcodeStr, VTInfo.info128,
1116 defm NAME#256: avx512_perm_i<opc, OpcodeStr, VTInfo.info256,
1118 avx512_perm_i_mb<opc, OpcodeStr, VTInfo.info256,
1123 multiclass avx512_perm_i_sizes_bw<bits<8> opc, string OpcodeStr,
1128 defm NAME: avx512_perm_i<opc, OpcodeStr, VTInfo.info512,
1131 defm NAME#128: avx512_perm_i<opc, OpcodeStr, VTInfo.info128,
1133 defm NAME#256: avx512_perm_i<opc, OpcodeStr, VTInfo.info256,
1154 multiclass avx512_perm_t<bits<8> opc, string OpcodeStr,
1157 defm rr: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
1163 defm rm: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
1171 multiclass avx512_perm_t_mb<bits<8> opc, string OpcodeStr,
1174 defm rmb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
1183 multiclass avx512_perm_t_sizes<bits<8> opc, string OpcodeStr,
1186 defm NAME: avx512_perm_t<opc, OpcodeStr, VTInfo.info512,
1188 avx512_perm_t_mb<opc, OpcodeStr, VTInfo.info512,
1191 defm NAME#128: avx512_perm_t<opc, OpcodeStr, VTInfo.info128,
1193 avx512_perm_t_mb<opc, OpcodeStr, VTInfo.info128,
1195 defm NAME#256: avx512_perm_t<opc, OpcodeStr, VTInfo.info256,
1197 avx512_perm_t_mb<opc, OpcodeStr, VTInfo.info256,
1202 multiclass avx512_perm_t_sizes_bw<bits<8> opc, string OpcodeStr,
1207 defm NAME: avx512_perm_t<opc, OpcodeStr, VTInfo.info512,
1210 defm NAME#128: avx512_perm_t<opc, OpcodeStr, VTInfo.info128,
1212 defm NAME#256: avx512_perm_t<opc, OpcodeStr, VTInfo.info256,
1235 multiclass avx512_blendmask<bits<8> opc, string OpcodeStr, X86VectorVTInfo _> {
1238 def rr : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
1243 def rrk : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
1251 def rrkz : AVX5128I<opc, MRMSrcReg, (outs _.RC:$dst),
1257 def rm : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1262 def rmk : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1271 def rmkz : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1278 multiclass avx512_blendmask_rmb<bits<8> opc, string OpcodeStr, X86VectorVTInfo _> {
1280 def rmbk : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1291 def rmb : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst),
1300 multiclass blendmask_dq <bits<8> opc, string OpcodeStr,
1302 defm Z : avx512_blendmask <opc, OpcodeStr, VTInfo.info512>,
1303 avx512_blendmask_rmb <opc, OpcodeStr, VTInfo.info512>, EVEX_V512;
1306 defm Z256 : avx512_blendmask<opc, OpcodeStr, VTInfo.info256>,
1307 avx512_blendmask_rmb <opc, OpcodeStr, VTInfo.info256>, EVEX_V256;
1308 defm Z128 : avx512_blendmask<opc, OpcodeStr, VTInfo.info128>,
1309 avx512_blendmask_rmb <opc, OpcodeStr, VTInfo.info128>, EVEX_V128;
1313 multiclass blendmask_bw <bits<8> opc, string OpcodeStr,
1316 defm Z : avx512_blendmask <opc, OpcodeStr, VTInfo.info512>, EVEX_V512;
1319 defm Z256 : avx512_blendmask <opc, OpcodeStr, VTInfo.info256>, EVEX_V256;
1320 defm Z128 : avx512_blendmask <opc, OpcodeStr, VTInfo.info128>, EVEX_V128;
1432 multiclass avx512_icmp_packed<bits<8> opc, string OpcodeStr, SDNode OpNode,
1434 def rr : AVX512BI<opc, MRMSrcReg,
1439 def rm : AVX512BI<opc, MRMSrcMem,
1445 def rrk : AVX512BI<opc, MRMSrcReg,
1452 def rmk : AVX512BI<opc, MRMSrcMem,
1463 multiclass avx512_icmp_packed_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
1465 avx512_icmp_packed<opc, OpcodeStr, OpNode, _> {
1466 def rmb : AVX512BI<opc, MRMSrcMem,
1473 def rmbk : AVX512BI<opc, MRMSrcMem,
1486 multiclass avx512_icmp_packed_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
1489 defm Z : avx512_icmp_packed<opc, OpcodeStr, OpNode, VTInfo.info512>,
1493 defm Z256 : avx512_icmp_packed<opc, OpcodeStr, OpNode, VTInfo.info256>,
1495 defm Z128 : avx512_icmp_packed<opc, OpcodeStr, OpNode, VTInfo.info128>,
1500 multiclass avx512_icmp_packed_rmb_vl<bits<8> opc, string OpcodeStr,
1504 defm Z : avx512_icmp_packed_rmb<opc, OpcodeStr, OpNode, VTInfo.info512>,
1508 defm Z256 : avx512_icmp_packed_rmb<opc, OpcodeStr, OpNode, VTInfo.info256>,
1510 defm Z128 : avx512_icmp_packed_rmb<opc, OpcodeStr, OpNode, VTInfo.info128>,
1557 multiclass avx512_icmp_cc<bits<8> opc, string Suffix, SDNode OpNode,
1559 def rri : AVX512AIi8<opc, MRMSrcReg,
1566 def rmi : AVX512AIi8<opc, MRMSrcMem,
1574 def rrik : AVX512AIi8<opc, MRMSrcReg,
1584 def rmik : AVX512AIi8<opc, MRMSrcMem,
1598 def rri_alt : AVX512AIi8<opc, MRMSrcReg,
1604 def rmi_alt : AVX512AIi8<opc, MRMSrcMem,
1609 def rrik_alt : AVX512AIi8<opc, MRMSrcReg,
1617 def rmik_alt : AVX512AIi8<opc, MRMSrcMem,
1627 multiclass avx512_icmp_cc_rmb<bits<8> opc, string Suffix, SDNode OpNode,
1629 avx512_icmp_cc<opc, Suffix, OpNode, _> {
1630 def rmib : AVX512AIi8<opc, MRMSrcMem,
1640 def rmibk : AVX512AIi8<opc, MRMSrcMem,
1654 def rmib_alt : AVX512AIi8<opc, MRMSrcMem,
1661 def rmibk_alt : AVX512AIi8<opc, MRMSrcMem,
1671 multiclass avx512_icmp_cc_vl<bits<8> opc, string Suffix, SDNode OpNode,
1674 defm Z : avx512_icmp_cc<opc, Suffix, OpNode, VTInfo.info512>, EVEX_V512;
1677 defm Z256 : avx512_icmp_cc<opc, Suffix, OpNode, VTInfo.info256>, EVEX_V256;
1678 defm Z128 : avx512_icmp_cc<opc, Suffix, OpNode, VTInfo.info128>, EVEX_V128;
1682 multiclass avx512_icmp_cc_rmb_vl<bits<8> opc, string Suffix, SDNode OpNode,
1685 defm Z : avx512_icmp_cc_rmb<opc, Suffix, OpNode, VTInfo.info512>,
1689 defm Z256 : avx512_icmp_cc_rmb<opc, Suffix, OpNode, VTInfo.info256>,
1691 defm Z128 : avx512_icmp_cc_rmb<opc, Suffix, OpNode, VTInfo.info128>,
1826 multiclass avx512_scalar_fpclass<bits<8> opc, string OpcodeStr, SDNode OpNode,
1829 def rr : AVX512<opc, MRMSrcReg, (outs _.KRC:$dst),//_.KRC:$dst),
1834 def rrk : AVX512<opc, MRMSrcReg, (outs _.KRC:$dst),
1842 def rm : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
1849 def rmk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
1863 multiclass avx512_vector_fpclass<bits<8> opc, string OpcodeStr, SDNode OpNode,
1865 def rr : AVX512<opc, MRMSrcReg, (outs _.KRC:$dst),
1870 def rrk : AVX512<opc, MRMSrcReg, (outs _.KRC:$dst),
1877 def rm : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
1884 def rmk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
1891 def rmb : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
1900 def rmbk : AVX512<opc, MRMSrcMem, (outs _.KRC:$dst),
1913 AVX512VLVectorVTInfo _, bits<8> opc, SDNode OpNode, Predicate prd,
1916 defm Z : avx512_vector_fpclass<opc, OpcodeStr, OpNode, _.info512, "{z}",
1920 defm Z128 : avx512_vector_fpclass<opc, OpcodeStr, OpNode, _.info128, "{x}",
1922 defm Z256 : avx512_vector_fpclass<opc, OpcodeStr, OpNode, _.info256, "{y}",
2196 multiclass avx512_mask_unop<bits<8> opc, string OpcodeStr,
2200 def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src),
2205 multiclass avx512_mask_unop_all<bits<8> opc, string OpcodeStr,
2207 defm B : avx512_mask_unop<opc, !strconcat(OpcodeStr, "b"), VK8, OpNode,
2209 defm W : avx512_mask_unop<opc, !strconcat(OpcodeStr, "w"), VK16, OpNode,
2211 defm D : avx512_mask_unop<opc, !strconcat(OpcodeStr, "d"), VK32, OpNode,
2213 defm Q : avx512_mask_unop<opc, !strconcat(OpcodeStr, "q"), VK64, OpNode,
2252 multiclass avx512_mask_binop<bits<8> opc, string OpcodeStr,
2256 def rr : I<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src1, KRC:$src2),
2262 multiclass avx512_mask_binop_all<bits<8> opc, string OpcodeStr,
2265 defm B : avx512_mask_binop<opc, !strconcat(OpcodeStr, "b"), VK8, OpNode,
2267 defm W : avx512_mask_binop<opc, !strconcat(OpcodeStr, "w"), VK16, OpNode,
2269 defm D : avx512_mask_binop<opc, !strconcat(OpcodeStr, "d"), VK32, OpNode,
2271 defm Q : avx512_mask_binop<opc, !strconcat(OpcodeStr, "q"), VK64, OpNode,
2378 multiclass avx512_mask_testop<bits<8> opc, string OpcodeStr, RegisterClass KRC,
2381 def rr : I<opc, MRMSrcReg, (outs), (ins KRC:$src1, KRC:$src2),
2386 multiclass avx512_mask_testop_w<bits<8> opc, string OpcodeStr, SDNode OpNode,
2388 defm B : avx512_mask_testop<opc, OpcodeStr#"b", VK8, OpNode, HasDQI>,
2390 defm W : avx512_mask_testop<opc, OpcodeStr#"w", VK16, OpNode, prdW>,
2392 defm Q : avx512_mask_testop<opc, OpcodeStr#"q", VK64, OpNode, HasBWI>,
2394 defm D : avx512_mask_testop<opc, OpcodeStr#"d", VK32, OpNode, HasBWI>,
2402 multiclass avx512_mask_shiftop<bits<8> opc, string OpcodeStr, RegisterClass KRC,
2405 def ri : Ii8<opc, MRMSrcReg, (outs KRC:$dst), (ins KRC:$src, u8imm:$imm),
2517 multiclass avx512_load<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
2522 def rr : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst), (ins _.RC:$src),
2525 def rrkz : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst),
2536 def rm : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst), (ins _.MemOp:$src),
2542 def rrk : AVX512PI<opc, MRMSrcReg, (outs _.RC:$dst),
2551 def rmk : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst),
2561 def rmkz : AVX512PI<opc, MRMSrcMem, (outs _.RC:$dst),
2580 multiclass avx512_alignedload_vl<bits<8> opc, string OpcodeStr,
2585 defm Z : avx512_load<opc, OpcodeStr, _.info512, _.info512.AlignedLdFrag,
2589 defm Z256 : avx512_load<opc, OpcodeStr, _.info256, _.info256.AlignedLdFrag,
2591 defm Z128 : avx512_load<opc, OpcodeStr, _.info128, _.info128.AlignedLdFrag,
2596 multiclass avx512_load_vl<bits<8> opc, string OpcodeStr,
2602 defm Z : avx512_load<opc, OpcodeStr, _.info512, _.info512.LdFrag,
2607 defm Z256 : avx512_load<opc, OpcodeStr, _.info256, _.info256.LdFrag,
2610 defm Z128 : avx512_load<opc, OpcodeStr, _.info128, _.info128.LdFrag,
2616 multiclass avx512_store<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
2620 def rr_REV : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst), (ins _.RC:$src),
2623 def rrk_REV : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst),
2628 def rrkz_REV : AVX512PI<opc, MRMDestReg, (outs _.RC:$dst),
2635 def mr : AVX512PI<opc, MRMDestMem, (outs), (ins _.MemOp:$dst, _.RC:$src),
2638 def mrk : AVX512PI<opc, MRMDestMem, (outs),
2649 multiclass avx512_store_vl< bits<8> opc, string OpcodeStr,
2652 defm Z : avx512_store<opc, OpcodeStr, _.info512, store,
2656 defm Z256 : avx512_store<opc, OpcodeStr, _.info256, store,
2658 defm Z128 : avx512_store<opc, OpcodeStr, _.info128, store,
2663 multiclass avx512_alignedstore_vl<bits<8> opc, string OpcodeStr,
2666 defm Z : avx512_store<opc, OpcodeStr, _.info512, alignedstore512,
2670 defm Z256 : avx512_store<opc, OpcodeStr, _.info256, alignedstore256,
2672 defm Z128 : avx512_store<opc, OpcodeStr, _.info128, alignedstore,
3311 multiclass avx512_movnt<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
3315 def mr : AVX512PI<opc, MRMDestMem, (outs), (ins _.MemOp:$dst, _.RC:$src),
3321 multiclass avx512_movnt_vl<bits<8> opc, string OpcodeStr,
3324 defm Z : avx512_movnt<opc, OpcodeStr, VTInfo.info512>, EVEX_V512;
3327 defm Z256 : avx512_movnt<opc, OpcodeStr, VTInfo.info256>, EVEX_V256;
3328 defm Z128 : avx512_movnt<opc, OpcodeStr, VTInfo.info128>, EVEX_V128;
3403 multiclass avx512_binop_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
3406 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3413 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3422 multiclass avx512_binop_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
3425 avx512_binop_rm<opc, OpcodeStr, OpNode, _, itins, IsCommutable> {
3426 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3437 multiclass avx512_binop_rm_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
3441 defm Z : avx512_binop_rm<opc, OpcodeStr, OpNode, VTInfo.info512, itins,
3445 defm Z256 : avx512_binop_rm<opc, OpcodeStr, OpNode, VTInfo.info256, itins,
3447 defm Z128 : avx512_binop_rm<opc, OpcodeStr, OpNode, VTInfo.info128, itins,
3452 multiclass avx512_binop_rmb_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
3456 defm Z : avx512_binop_rmb<opc, OpcodeStr, OpNode, VTInfo.info512, itins,
3460 defm Z256 : avx512_binop_rmb<opc, OpcodeStr, OpNode, VTInfo.info256, itins,
3462 defm Z128 : avx512_binop_rmb<opc, OpcodeStr, OpNode, VTInfo.info128, itins,
3467 multiclass avx512_binop_rm_vl_q<bits<8> opc, string OpcodeStr, SDNode OpNode,
3470 defm NAME : avx512_binop_rmb_vl<opc, OpcodeStr, OpNode, avx512vl_i64_info,
3475 multiclass avx512_binop_rm_vl_d<bits<8> opc, string OpcodeStr, SDNode OpNode,
3478 defm NAME : avx512_binop_rmb_vl<opc, OpcodeStr, OpNode, avx512vl_i32_info,
3482 multiclass avx512_binop_rm_vl_w<bits<8> opc, string OpcodeStr, SDNode OpNode,
3485 defm NAME : avx512_binop_rm_vl<opc, OpcodeStr, OpNode, avx512vl_i16_info,
3489 multiclass avx512_binop_rm_vl_b<bits<8> opc, string OpcodeStr, SDNode OpNode,
3492 defm NAME : avx512_binop_rm_vl<opc, OpcodeStr, OpNode, avx512vl_i8_info,
3526 multiclass avx512_binop_rm2<bits<8> opc, string OpcodeStr, OpndItins itins,
3530 defm rr : AVX512_maskable<opc, MRMSrcReg, _Dst, (outs _Dst.RC:$dst),
3538 defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3546 defm rmb : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3585 multiclass avx512_binop_all<bits<8> opc, string OpcodeStr, OpndItins itins,
3589 defm NAME#Z : avx512_binop_rm2<opc, OpcodeStr, itins, OpNode,
3594 defm NAME#Z256 : avx512_binop_rm2<opc, OpcodeStr, itins, OpNode,
3598 defm NAME#Z128 : avx512_binop_rm2<opc, OpcodeStr, itins, OpNode,
3615 multiclass avx512_packs_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
3617 defm rmb : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3628 multiclass avx512_packs_rm<bits<8> opc, string OpcodeStr,
3631 defm rr : AVX512_maskable<opc, MRMSrcReg, _Dst, (outs _Dst.RC:$dst),
3638 defm rm : AVX512_maskable<opc, MRMSrcMem, _Dst, (outs _Dst.RC:$dst),
3646 multiclass avx512_packs_all_i32_i16<bits<8> opc, string OpcodeStr,
3649 defm NAME#Z : avx512_packs_rm<opc, OpcodeStr, OpNode, v16i32_info,
3651 avx512_packs_rmb<opc, OpcodeStr, OpNode, v16i32_info,
3654 defm NAME#Z256 : avx512_packs_rm<opc, OpcodeStr, OpNode, v8i32x_info,
3656 avx512_packs_rmb<opc, OpcodeStr, OpNode, v8i32x_info,
3658 defm NAME#Z128 : avx512_packs_rm<opc, OpcodeStr, OpNode, v4i32x_info,
3660 avx512_packs_rmb<opc, OpcodeStr, OpNode, v4i32x_info,
3664 multiclass avx512_packs_all_i16_i8<bits<8> opc, string OpcodeStr,
3667 defm NAME#Z : avx512_packs_rm<opc, OpcodeStr, OpNode, v32i16_info,
3670 defm NAME#Z256 : avx512_packs_rm<opc, OpcodeStr, OpNode, v16i16x_info,
3672 defm NAME#Z128 : avx512_packs_rm<opc, OpcodeStr, OpNode, v8i16x_info,
3677 multiclass avx512_vpmadd<bits<8> opc, string OpcodeStr,
3681 defm NAME#Z : avx512_packs_rm<opc, OpcodeStr, OpNode, _Src.info512,
3684 defm NAME#Z256 : avx512_packs_rm<opc, OpcodeStr, OpNode, _Src.info256,
3686 defm NAME#Z128 : avx512_packs_rm<opc, OpcodeStr, OpNode, _Src.info128,
3744 multiclass avx512_fp_scalar<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
3748 defm rr_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3755 defm rm_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
3764 def rr : I< opc, MRMSrcReg, (outs _.FRC:$dst),
3769 def rm : I< opc, MRMSrcMem, (outs _.FRC:$dst),
3777 multiclass avx512_fp_scalar_round<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
3780 defm rrb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3787 multiclass avx512_fp_scalar_sae<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
3790 defm rrb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3797 multiclass avx512_binop_s_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
3800 defm SSZ : avx512_fp_scalar<opc, OpcodeStr#"ss", f32x_info, OpNode, VecNode,
3802 avx512_fp_scalar_round<opc, OpcodeStr#"ss", f32x_info, VecNode,
3805 defm SDZ : avx512_fp_scalar<opc, OpcodeStr#"sd", f64x_info, OpNode, VecNode,
3807 avx512_fp_scalar_round<opc, OpcodeStr#"sd", f64x_info, VecNode,
3812 multiclass avx512_binop_s_sae<bits<8> opc, string OpcodeStr, SDNode OpNode,
3815 defm SSZ : avx512_fp_scalar<opc, OpcodeStr#"ss", f32x_info, OpNode, VecNode,
3817 avx512_fp_scalar_sae<opc, OpcodeStr#"ss", f32x_info, VecNode,
3820 defm SDZ : avx512_fp_scalar<opc, OpcodeStr#"sd", f64x_info, OpNode, VecNode,
3822 avx512_fp_scalar_sae<opc, OpcodeStr#"sd", f64x_info, VecNode,
3835 multiclass avx512_comutable_binop_s<bits<8> opc, string OpcodeStr,
3838 def rr : I< opc, MRMSrcReg, (outs _.FRC:$dst),
3843 def rm : I< opc, MRMSrcMem, (outs _.FRC:$dst),
3866 multiclass avx512_fp_packed<bits<8> opc, string OpcodeStr, SDNode OpNode,
3868 defm rr: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3872 defm rm: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3876 defm rmb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3885 multiclass avx512_fp_round_packed<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd,
3887 defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3895 multiclass avx512_fp_sae_packed<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd,
3897 defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3904 multiclass avx512_fp_binop_p<bits<8> opc, string OpcodeStr, SDNode OpNode,
3907 defm PSZ : avx512_fp_packed<opc, OpcodeStr, OpNode, v16f32_info,
3910 defm PDZ : avx512_fp_packed<opc, OpcodeStr, OpNode, v8f64_info,
3917 defm PSZ128 : avx512_fp_packed<opc, OpcodeStr, OpNode, v4f32x_info,
3920 defm PSZ256 : avx512_fp_packed<opc, OpcodeStr, OpNode, v8f32x_info,
3923 defm PDZ128 : avx512_fp_packed<opc, OpcodeStr, OpNode, v2f64x_info,
3926 defm PDZ256 : avx512_fp_packed<opc, OpcodeStr, OpNode, v4f64x_info,
3932 multiclass avx512_fp_binop_p_round<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd> {
3933 defm PSZ : avx512_fp_round_packed<opc, OpcodeStr, OpNodeRnd, v16f32_info>,
3935 defm PDZ : avx512_fp_round_packed<opc, OpcodeStr, OpNodeRnd, v8f64_info>,
3939 multiclass avx512_fp_binop_p_sae<bits<8> opc, string OpcodeStr, SDNode OpNodeRnd> {
3940 defm PSZ : avx512_fp_sae_packed<opc, OpcodeStr, OpNodeRnd, v16f32_info>,
3942 defm PDZ : avx512_fp_sae_packed<opc, OpcodeStr, OpNodeRnd, v8f64_info>,
3967 multiclass avx512_fp_scalef_p<bits<8> opc, string OpcodeStr, SDNode OpNode,
3969 defm rr: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
3973 defm rm: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3977 defm rmb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
3986 multiclass avx512_fp_scalef_scalar<bits<8> opc, string OpcodeStr, SDNode OpNode,
3988 defm rr: AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
3992 defm rm: AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
4000 multiclass avx512_fp_scalef_all<bits<8> opc, bits<8> opcScaler, string OpcodeStr, SDNode OpNode, SD…
4001 defm PSZ : avx512_fp_scalef_p<opc, OpcodeStr, OpNode, v16f32_info>,
4002 avx512_fp_round_packed<opc, OpcodeStr, OpNode, v16f32_info>,
4004 defm PDZ : avx512_fp_scalef_p<opc, OpcodeStr, OpNode, v8f64_info>,
4005 avx512_fp_round_packed<opc, OpcodeStr, OpNode, v8f64_info>,
4016 defm PSZ128 : avx512_fp_scalef_p<opc, OpcodeStr, OpNode, v4f32x_info>,
4018 defm PSZ256 : avx512_fp_scalef_p<opc, OpcodeStr, OpNode, v8f32x_info>,
4020 defm PDZ128 : avx512_fp_scalef_p<opc, OpcodeStr, OpNode, v2f64x_info>,
4022 defm PDZ256 : avx512_fp_scalef_p<opc, OpcodeStr, OpNode, v4f64x_info>,
4032 multiclass avx512_vptest<bits<8> opc, string OpcodeStr, SDNode OpNode,
4035 defm rr : AVX512_maskable_cmp<opc, MRMSrcReg, _, (outs _.KRC:$dst),
4040 defm rm : AVX512_maskable_cmp<opc, MRMSrcMem, _, (outs _.KRC:$dst),
4049 multiclass avx512_vptest_mb<bits<8> opc, string OpcodeStr, SDNode OpNode,
4051 defm rmb : AVX512_maskable_cmp<opc, MRMSrcMem, _, (outs _.KRC:$dst),
4073 multiclass avx512_vptest_dq_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
4076 defm Z : avx512_vptest<opc, OpcodeStr, OpNode, _.info512>,
4077 avx512_vptest_mb<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
4080 defm Z256 : avx512_vptest<opc, OpcodeStr, OpNode, _.info256>,
4081 avx512_vptest_mb<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
4082 defm Z128 : avx512_vptest<opc, OpcodeStr, OpNode, _.info128>,
4083 avx512_vptest_mb<opc, OpcodeStr, OpNode, _.info128>, EVEX_V128;
4091 multiclass avx512_vptest_dq<bits<8> opc, string OpcodeStr, SDNode OpNode> {
4092 defm D : avx512_vptest_dq_sizes<opc, OpcodeStr#"d", OpNode,
4094 defm Q : avx512_vptest_dq_sizes<opc, OpcodeStr#"q", OpNode,
4098 multiclass avx512_vptest_wb<bits<8> opc, string OpcodeStr,
4101 defm WZ: avx512_vptest<opc, OpcodeStr#"w", OpNode, v32i16_info>,
4103 defm BZ: avx512_vptest<opc, OpcodeStr#"b", OpNode, v64i8_info>,
4108 defm WZ256: avx512_vptest<opc, OpcodeStr#"w", OpNode, v16i16x_info>,
4110 defm WZ128: avx512_vptest<opc, OpcodeStr#"w", OpNode, v8i16x_info>,
4112 defm BZ256: avx512_vptest<opc, OpcodeStr#"b", OpNode, v32i8x_info>,
4114 defm BZ128: avx512_vptest<opc, OpcodeStr#"b", OpNode, v16i8x_info>,
4139 multiclass avx512_shift_rmi<bits<8> opc, Format ImmFormR, Format ImmFormM,
4141 defm ri : AVX512_maskable<opc, ImmFormR, _, (outs _.RC:$dst),
4146 defm mi : AVX512_maskable<opc, ImmFormM, _, (outs _.RC:$dst),
4154 multiclass avx512_shift_rmbi<bits<8> opc, Format ImmFormM,
4156 defm mbi : AVX512_maskable<opc, ImmFormM, _, (outs _.RC:$dst),
4163 multiclass avx512_shift_rrm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4166 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
4171 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
4179 multiclass avx512_shift_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
4183 defm Z : avx512_shift_rrm<opc, OpcodeStr, OpNode, SrcVT, bc_frag,
4187 defm Z256 : avx512_shift_rrm<opc, OpcodeStr, OpNode, SrcVT, bc_frag,
4190 defm Z128 : avx512_shift_rrm<opc, OpcodeStr, OpNode, SrcVT, bc_frag,
4206 multiclass avx512_shift_rmi_sizes<bits<8> opc, Format ImmFormR, Format ImmFormM,
4210 defm Z: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
4212 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
4215 defm Z256: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
4217 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
4219 defm Z128: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
4221 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
4268 multiclass avx512_var_shift<bits<8> opc, string OpcodeStr, SDNode OpNode,
4270 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
4275 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
4284 multiclass avx512_var_shift_mb<bits<8> opc, string OpcodeStr, SDNode OpNode,
4286 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
4295 multiclass avx512_var_shift_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
4298 defm Z : avx512_var_shift<opc, OpcodeStr, OpNode, _.info512>,
4299 avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
4302 defm Z256 : avx512_var_shift<opc, OpcodeStr, OpNode, _.info256>,
4303 avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
4304 defm Z128 : avx512_var_shift<opc, OpcodeStr, OpNode, _.info128>,
4305 avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info128>, EVEX_V128;
4309 multiclass avx512_var_shift_types<bits<8> opc, string OpcodeStr,
4311 defm D : avx512_var_shift_sizes<opc, OpcodeStr#"d", OpNode,
4313 defm Q : avx512_var_shift_sizes<opc, OpcodeStr#"q", OpNode,
4338 multiclass avx512_var_shift_w<bits<8> opc, string OpcodeStr,
4341 defm WZ: avx512_var_shift<opc, OpcodeStr, OpNode, v32i16_info>,
4345 defm WZ256: avx512_var_shift<opc, OpcodeStr, OpNode, v16i16x_info>,
4347 defm WZ128: avx512_var_shift<opc, OpcodeStr, OpNode, v8i16x_info>,
4372 multiclass avx512_vperm_dq_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode,
4375 defm Z : avx512_var_shift<opc, OpcodeStr, OpNode, _.info512>,
4376 avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
4379 defm Z256 : avx512_var_shift<opc, OpcodeStr, OpNode, _.info256>,
4380 avx512_var_shift_mb<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
4383 multiclass avx512_vpermi_dq_sizes<bits<8> opc, Format ImmFormR, Format ImmFormM,
4387 defm Z: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
4389 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
4392 defm Z256: avx512_shift_rmi<opc, ImmFormR, ImmFormM, OpcodeStr, OpNode,
4394 avx512_shift_rmbi<opc, ImmFormM, OpcodeStr, OpNode,
4398 multiclass avx512_vperm_bw<bits<8> opc, string OpcodeStr,
4402 defm Z: avx512_var_shift<opc, OpcodeStr, OpNode, _.info512>,
4405 defm Z256: avx512_var_shift<opc, OpcodeStr, OpNode, _.info256>,
4407 defm Z128: avx512_var_shift<opc, OpcodeStr, OpNode, _.info128>,
4501 multiclass avx512_pshufb_sizes<bits<8> opc, string OpcodeStr, SDNode OpNode> {
4503 defm Z: avx512_var_shift<opc, OpcodeStr, OpNode, v64i8_info>, EVEX_V512;
4506 defm Z256: avx512_var_shift<opc, OpcodeStr, OpNode, v32i8x_info>, EVEX_V256;
4507 defm Z128: avx512_var_shift<opc, OpcodeStr, OpNode, v16i8x_info>, EVEX_V128;
4543 multiclass avx512_mov_hilo_packed<bits<8> opc, string OpcodeStr, SDNode OpNode,
4545 def rm : AVX512<opc, MRMSrcMem, (outs _.RC:$dst),
4651 multiclass avx512_fma3p_213_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4653 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4659 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4665 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4674 multiclass avx512_fma3_213_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
4676 defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4684 multiclass avx512_fma3p_213_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
4687 defm Z : avx512_fma3p_213_rm<opc, OpcodeStr, OpNode, _.info512>,
4688 avx512_fma3_213_round<opc, OpcodeStr, OpNodeRnd, _.info512>,
4692 defm Z256 : avx512_fma3p_213_rm<opc, OpcodeStr, OpNode, _.info256>,
4694 defm Z128 : avx512_fma3p_213_rm<opc, OpcodeStr, OpNode, _.info128>,
4699 multiclass avx512_fma3p_213_f<bits<8> opc, string OpcodeStr, SDNode OpNode,
4701 defm PS : avx512_fma3p_213_common<opc, OpcodeStr#"ps", OpNode, OpNodeRnd,
4703 defm PD : avx512_fma3p_213_common<opc, OpcodeStr#"pd", OpNode, OpNodeRnd,
4716 multiclass avx512_fma3p_231_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4718 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4724 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4730 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4739 multiclass avx512_fma3_231_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
4741 defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4749 multiclass avx512_fma3p_231_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
4752 defm Z : avx512_fma3p_231_rm<opc, OpcodeStr, OpNode, _.info512>,
4753 avx512_fma3_231_round<opc, OpcodeStr, OpNodeRnd, _.info512>,
4757 defm Z256 : avx512_fma3p_231_rm<opc, OpcodeStr, OpNode, _.info256>,
4759 defm Z128 : avx512_fma3p_231_rm<opc, OpcodeStr, OpNode, _.info128>,
4764 multiclass avx512_fma3p_231_f<bits<8> opc, string OpcodeStr, SDNode OpNode,
4766 defm PS : avx512_fma3p_231_common<opc, OpcodeStr#"ps", OpNode, OpNodeRnd,
4768 defm PD : avx512_fma3p_231_common<opc, OpcodeStr#"pd", OpNode, OpNodeRnd,
4780 multiclass avx512_fma3p_132_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4782 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4788 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4794 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4803 multiclass avx512_fma3_132_round<bits<8> opc, string OpcodeStr, SDNode OpNode,
4805 defm rb: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4813 multiclass avx512_fma3p_132_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
4816 defm Z : avx512_fma3p_132_rm<opc, OpcodeStr, OpNode, _.info512>,
4817 avx512_fma3_132_round<opc, OpcodeStr, OpNodeRnd, _.info512>,
4821 defm Z256 : avx512_fma3p_132_rm<opc, OpcodeStr, OpNode, _.info256>,
4823 defm Z128 : avx512_fma3p_132_rm<opc, OpcodeStr, OpNode, _.info128>,
4828 multiclass avx512_fma3p_132_f<bits<8> opc, string OpcodeStr, SDNode OpNode,
4830 defm PS : avx512_fma3p_132_common<opc, OpcodeStr#"ps", OpNode, OpNodeRnd,
4832 defm PD : avx512_fma3p_132_common<opc, OpcodeStr#"pd", OpNode, OpNodeRnd,
4845 multiclass avx512_fma3s_common<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
4848 defm r_Int: AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
4852 defm m_Int: AVX512_maskable_3src_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
4856 defm rb_Int: AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
4862 def r : AVX512FMA3<opc, MRMSrcReg, (outs _.FRC:$dst),
4867 def m : AVX512FMA3<opc, MRMSrcMem, (outs _.FRC:$dst),
4937 multiclass avx512_pmadd52_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
4939 defm r: AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
4945 defm m: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4951 defm mb: AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
4961 multiclass avx512_pmadd52_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
4964 defm Z : avx512_pmadd52_rm<opc, OpcodeStr, OpNode, _.info512>,
4968 defm Z256 : avx512_pmadd52_rm<opc, OpcodeStr, OpNode, _.info256>,
4970 defm Z128 : avx512_pmadd52_rm<opc, OpcodeStr, OpNode, _.info128>,
4984 multiclass avx512_vcvtsi<bits<8> opc, SDNode OpNode, RegisterClass SrcRC,
4988 def rr : SI<opc, MRMSrcReg, (outs DstVT.FRC:$dst),
4993 def rm : SI<opc, MRMSrcMem, (outs DstVT.FRC:$dst),
4999 def rr_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst),
5007 def rm_Int : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst),
5017 multiclass avx512_vcvtsi_round<bits<8> opc, SDNode OpNode, RegisterClass SrcRC,
5019 def rrb_Int : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst),
5029 multiclass avx512_vcvtsi_common<bits<8> opc, SDNode OpNode, RegisterClass SrcRC,
5032 defm NAME : avx512_vcvtsi_round<opc, OpNode, SrcRC, DstVT, asm>,
5033 avx512_vcvtsi<opc, OpNode, SrcRC, DstVT, x86memop, ld_frag, asm>,
5104 multiclass avx512_cvt_s_int_round<bits<8> opc, X86VectorVTInfo SrcVT ,
5107 def rr : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst), (ins SrcVT.RC:$src),
5111 def rb : SI<opc, MRMSrcReg, (outs DstVT.RC:$dst), (ins SrcVT.RC:$src, AVX512RC:$rc),
5115 def rm : SI<opc, MRMSrcMem, (outs DstVT.RC:$dst), (ins SrcVT.ScalarMemOp:$src),
5183 multiclass avx512_cvt_s_all<bits<8> opc, string asm, X86VectorVTInfo _SrcRC,
5187 def rr : SI<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.FRC:$src),
5190 def rb : SI<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.FRC:$src),
5193 def rm : SI<opc, MRMSrcMem, (outs _DstRC.RC:$dst), (ins _SrcRC.ScalarMemOp:$src),
5199 def rr_Int : SI<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.RC:$src),
5203 def rb_Int : SI<opc, MRMSrcReg, (outs _DstRC.RC:$dst), (ins _SrcRC.RC:$src),
5209 def rm_Int : SI<opc, MRMSrcMem, (outs _DstRC.RC:$dst),
5258 multiclass avx512_cvt_fp_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
5260 defm rr : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5266 defm rm : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
5276 multiclass avx512_cvt_fp_sae_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
5278 defm rrb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5288 multiclass avx512_cvt_fp_rc_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
5290 defm rrb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5298 multiclass avx512_cvt_fp_scalar_sd2ss<bits<8> opc, string OpcodeStr, SDNode OpNode,
5302 defm Z : avx512_cvt_fp_scalar<opc, OpcodeStr, _dst, _src, OpNode>,
5303 avx512_cvt_fp_rc_scalar<opc, OpcodeStr, _dst, _src,
5309 multiclass avx512_cvt_fp_scalar_ss2sd<bits<8> opc, string OpcodeStr, SDNode OpNode,
5313 defm Z : avx512_cvt_fp_scalar<opc, OpcodeStr, _dst, _src, OpNode>,
5314 avx512_cvt_fp_sae_scalar<opc, OpcodeStr, _dst, _src, OpNodeRnd>,
5349 multiclass avx512_vcvt_fp<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
5354 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5358 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5363 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5371 multiclass avx512_vcvt_fp_sae<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
5373 defm rrb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5382 multiclass avx512_vcvt_fp_rc<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
5384 defm rrb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5392 multiclass avx512_cvtps2pd<bits<8> opc, string OpcodeStr> {
5394 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f64_info, v8f32x_info, fextend>,
5395 avx512_vcvt_fp_sae<opc, OpcodeStr, v8f64_info, v8f32x_info,
5399 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2f64x_info, v4f32x_info,
5401 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f64x_info, v4f32x_info, fextend>,
5407 multiclass avx512_cvtpd2ps<bits<8> opc, string OpcodeStr> {
5409 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f32x_info, v8f64_info, fround>,
5410 avx512_vcvt_fp_rc<opc, OpcodeStr, v8f32x_info, v8f64_info,
5414 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4f32x_info, v2f64x_info,
5416 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f32x_info, v4f64x_info, fround,
5435 multiclass avx512_cvtdq2pd<bits<8> opc, string OpcodeStr, SDNode OpNode,
5439 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f64_info, v8i32x_info, OpNode>,
5443 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2f64x_info, v4i32x_info,
5445 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f64x_info, v4i32x_info, OpNode>,
5451 multiclass avx512_cvtdq2ps<bits<8> opc, string OpcodeStr, SDNode OpNode,
5454 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16f32_info, v16i32_info, OpNode>,
5455 avx512_vcvt_fp_rc<opc, OpcodeStr, v16f32_info, v16i32_info,
5459 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4f32x_info, v4i32x_info, OpNode>,
5461 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8f32x_info, v8i32x_info, OpNode>,
5467 multiclass avx512_cvttps2dq<bits<8> opc, string OpcodeStr,
5470 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f32_info, OpNode>,
5471 avx512_vcvt_fp_sae<opc, OpcodeStr, v16i32_info, v16f32_info,
5475 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f32x_info, OpNode>,
5477 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f32x_info, OpNode>,
5483 multiclass avx512_cvtps2dq<bits<8> opc, string OpcodeStr,
5486 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v16i32_info, v16f32_info, OpNode>,
5487 avx512_vcvt_fp_rc<opc, OpcodeStr, v16i32_info, v16f32_info,
5491 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f32x_info, OpNode>,
5493 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f32x_info, OpNode>,
5499 multiclass avx512_cvttpd2dq<bits<8> opc, string OpcodeStr,
5502 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f64_info, OpNode>,
5503 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i32x_info, v8f64_info,
5511 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v2f64x_info, OpNode,
5513 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNode,
5519 multiclass avx512_cvtpd2dq<bits<8> opc, string OpcodeStr,
5522 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i32x_info, v8f64_info, OpNode>,
5523 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i32x_info, v8f64_info,
5531 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v2f64x_info, OpNode,
5533 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i32x_info, v4f64x_info, OpNode,
5539 multiclass avx512_cvtpd2qq<bits<8> opc, string OpcodeStr,
5542 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f64_info, OpNode>,
5543 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i64_info, v8f64_info,
5547 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v2f64x_info, OpNode>,
5549 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f64x_info, OpNode>,
5555 multiclass avx512_cvttpd2qq<bits<8> opc, string OpcodeStr,
5558 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f64_info, OpNode>,
5559 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f64_info,
5563 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v2f64x_info, OpNode>,
5565 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f64x_info, OpNode>,
5571 multiclass avx512_cvtqq2pd<bits<8> opc, string OpcodeStr,
5574 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f64_info, v8i64_info, OpNode>,
5575 avx512_vcvt_fp_rc<opc, OpcodeStr, v8f64_info, v8i64_info,
5579 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2f64x_info, v2i64x_info, OpNode>,
5581 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f64x_info, v4i64x_info, OpNode>,
5587 multiclass avx512_cvtps2qq<bits<8> opc, string OpcodeStr,
5590 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f32x_info, OpNode>,
5591 avx512_vcvt_fp_rc<opc, OpcodeStr, v8i64_info, v8f32x_info,
5597 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v4f32x_info, OpNode,
5599 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNode>,
5605 multiclass avx512_cvttps2qq<bits<8> opc, string OpcodeStr,
5608 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8i64_info, v8f32x_info, OpNode>,
5609 avx512_vcvt_fp_sae<opc, OpcodeStr, v8i64_info, v8f32x_info,
5615 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v2i64x_info, v4f32x_info, OpNode,
5617 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4i64x_info, v4f32x_info, OpNode>,
5623 multiclass avx512_cvtqq2ps<bits<8> opc, string OpcodeStr,
5626 defm Z : avx512_vcvt_fp<opc, OpcodeStr, v8f32x_info, v8i64_info, OpNode>,
5627 avx512_vcvt_fp_rc<opc, OpcodeStr, v8f32x_info, v8i64_info,
5635 defm Z128 : avx512_vcvt_fp<opc, OpcodeStr, v4f32x_info, v2i64x_info, OpNode,
5637 defm Z256 : avx512_vcvt_fp<opc, OpcodeStr, v4f32x_info, v4i64x_info, OpNode,
5837 multiclass avx512_ord_cmp_sae<bits<8> opc, X86VectorVTInfo _, SDNode OpNode,
5839 def rb: AVX512<opc, MRMSrcReg, (outs), (ins _.RC:$src1, _.RC:$src2),
5891 multiclass avx512_fp14_s<bits<8> opc, string OpcodeStr, SDNode OpNode,
5894 defm rr : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5898 defm rm : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
5916 multiclass avx512_fp14_p<bits<8> opc, string OpcodeStr, SDNode OpNode,
5918 defm r: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
5921 defm m: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5925 defm mb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
5933 multiclass avx512_fp14_p_vl_all<bits<8> opc, string OpcodeStr, SDNode OpNode> {
5934 defm PSZ : avx512_fp14_p<opc, !strconcat(OpcodeStr, "ps"), OpNode, v16f32_info>,
5936 defm PDZ : avx512_fp14_p<opc, !strconcat(OpcodeStr, "pd"), OpNode, v8f64_info>,
5941 defm PSZ128 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "ps"),
5944 defm PSZ256 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "ps"),
5947 defm PDZ128 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "pd"),
5950 defm PDZ256 : avx512_fp14_p<opc, !strconcat(OpcodeStr, "pd"),
5960 multiclass avx512_fp28_s<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
5963 defm r : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5969 defm rb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
5975 defm m : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
5983 multiclass avx512_eri_s<bits<8> opc, string OpcodeStr, SDNode OpNode> {
5984 defm SS : avx512_fp28_s<opc, OpcodeStr#"ss", f32x_info, OpNode>,
5986 defm SD : avx512_fp28_s<opc, OpcodeStr#"sd", f64x_info, OpNode>,
5998 multiclass avx512_fp28_p<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
6001 defm r : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6005 defm m : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6011 defm mb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6018 multiclass avx512_fp28_p_round<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
6020 defm rb : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6026 multiclass avx512_eri<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6027 defm PS : avx512_fp28_p<opc, OpcodeStr#"ps", v16f32_info, OpNode>,
6028 avx512_fp28_p_round<opc, OpcodeStr#"ps", v16f32_info, OpNode>,
6030 defm PD : avx512_fp28_p<opc, OpcodeStr#"pd", v8f64_info, OpNode>,
6031 avx512_fp28_p_round<opc, OpcodeStr#"pd", v8f64_info, OpNode>,
6035 multiclass avx512_fp_unaryop_packed<bits<8> opc, string OpcodeStr,
6039 defm PSZ128 : avx512_fp28_p<opc, OpcodeStr#"ps", v4f32x_info, OpNode>,
6041 defm PSZ256 : avx512_fp28_p<opc, OpcodeStr#"ps", v8f32x_info, OpNode>,
6043 defm PDZ128 : avx512_fp28_p<opc, OpcodeStr#"pd", v2f64x_info, OpNode>,
6045 defm PDZ256 : avx512_fp28_p<opc, OpcodeStr#"pd", v4f64x_info, OpNode>,
6058 multiclass avx512_sqrt_packed_round<bits<8> opc, string OpcodeStr,
6060 defm rb: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6066 multiclass avx512_sqrt_packed<bits<8> opc, string OpcodeStr,
6068 defm r: AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6071 defm m: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6076 defm mb: AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6084 multiclass avx512_sqrt_packed_all<bits<8> opc, string OpcodeStr,
6086 defm PSZ : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ps"), OpNode,
6089 defm PDZ : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "pd"), OpNode,
6094 defm PSZ128 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ps"),
6097 defm PSZ256 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "ps"),
6100 defm PDZ128 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "pd"),
6103 defm PDZ256 : avx512_sqrt_packed<opc, !strconcat(OpcodeStr, "pd"),
6109 multiclass avx512_sqrt_packed_all_round<bits<8> opc, string OpcodeStr,
6111 defm PSZ : avx512_sqrt_packed_round<opc, !strconcat(OpcodeStr, "ps"), OpNodeRnd,
6113 defm PDZ : avx512_sqrt_packed_round<opc, !strconcat(OpcodeStr, "pd"), OpNodeRnd,
6117 multiclass avx512_sqrt_scalar<bits<8> opc, string OpcodeStr,X86VectorVTInfo _,
6120 defm r_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
6126 defm m_Int : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
6134 defm rb_Int : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
6143 def r : I<opc, MRMSrcReg, (outs _.FRC:$dst),
6148 def m : I<opc, MRMSrcMem, (outs _.FRC:$dst),
6162 multiclass avx512_sqrt_scalar_all<bits<8> opc, string OpcodeStr> {
6163 defm SSZ : avx512_sqrt_scalar<opc, OpcodeStr#"ss", f32x_info, "SS", fsqrt,
6165 defm SDZ : avx512_sqrt_scalar<opc, OpcodeStr#"sd", f64x_info, "SD", fsqrt,
6188 avx512_rndscale_scalar<bits<8> opc, string OpcodeStr, X86VectorVTInfo _> {
6191 defm r : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
6197 defm rb : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
6203 defm m : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
6256 multiclass avx512_trunc_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
6260 defm rr : AVX512_maskable<opc, MRMDestReg, DestInfo, (outs DestInfo.RC:$dst),
6286 def mr : AVX512XS8I<opc, MRMDestMem, (outs),
6291 def mrk : AVX512XS8I<opc, MRMDestMem, (outs),
6329 multiclass avx512_trunc<bits<8> opc, string OpcodeStr, SDNode OpNode,
6337 defm Z128: avx512_trunc_common<opc, OpcodeStr, OpNode, VTSrcInfo.info128,
6342 defm Z256: avx512_trunc_common<opc, OpcodeStr, OpNode, VTSrcInfo.info256,
6348 defm Z: avx512_trunc_common<opc, OpcodeStr, OpNode, VTSrcInfo.info512,
6354 multiclass avx512_trunc_sat<bits<8> opc, string OpcodeStr, SDNode OpNode,
6361 defm Z128: avx512_trunc_common<opc, OpcodeStr, OpNode, VTSrcInfo.info128,
6366 defm Z256: avx512_trunc_common<opc, OpcodeStr, OpNode, VTSrcInfo.info256,
6372 defm Z: avx512_trunc_common<opc, OpcodeStr, OpNode, VTSrcInfo.info512,
6378 multiclass avx512_trunc_qb<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6379 defm NAME: avx512_trunc<opc, OpcodeStr, OpNode, avx512vl_i64_info,
6383 multiclass avx512_trunc_sat_qb<bits<8> opc, string sat, SDNode OpNode> {
6384 defm NAME: avx512_trunc_sat<opc, "vpmov"##sat##"qb", OpNode, avx512vl_i64_info,
6389 multiclass avx512_trunc_qw<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6390 defm NAME: avx512_trunc<opc, OpcodeStr, OpNode, avx512vl_i64_info,
6394 multiclass avx512_trunc_sat_qw<bits<8> opc, string sat, SDNode OpNode> {
6395 defm NAME: avx512_trunc_sat<opc, "vpmov"##sat##"qw", OpNode, avx512vl_i64_info,
6400 multiclass avx512_trunc_qd<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6401 defm NAME: avx512_trunc<opc, OpcodeStr, OpNode, avx512vl_i64_info,
6405 multiclass avx512_trunc_sat_qd<bits<8> opc, string sat, SDNode OpNode> {
6406 defm NAME: avx512_trunc_sat<opc, "vpmov"##sat##"qd", OpNode, avx512vl_i64_info,
6411 multiclass avx512_trunc_db<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6412 defm NAME: avx512_trunc<opc, OpcodeStr, OpNode, avx512vl_i32_info,
6416 multiclass avx512_trunc_sat_db<bits<8> opc, string sat, SDNode OpNode> {
6417 defm NAME: avx512_trunc_sat<opc, "vpmov"##sat##"db", OpNode, avx512vl_i32_info,
6422 multiclass avx512_trunc_dw<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6423 defm NAME: avx512_trunc<opc, OpcodeStr, OpNode, avx512vl_i32_info,
6427 multiclass avx512_trunc_sat_dw<bits<8> opc, string sat, SDNode OpNode> {
6428 defm NAME: avx512_trunc_sat<opc, "vpmov"##sat##"dw", OpNode, avx512vl_i32_info,
6433 multiclass avx512_trunc_wb<bits<8> opc, string OpcodeStr, SDNode OpNode> {
6434 defm NAME: avx512_trunc<opc, OpcodeStr, OpNode, avx512vl_i16_info,
6438 multiclass avx512_trunc_sat_wb<bits<8> opc, string sat, SDNode OpNode> {
6439 defm NAME: avx512_trunc_sat<opc, "vpmov"##sat##"wb", OpNode, avx512vl_i16_info,
6485 multiclass avx512_extend_common<bits<8> opc, string OpcodeStr,
6488 defm rr : AVX512_maskable<opc, MRMSrcReg, DestInfo, (outs DestInfo.RC:$dst),
6493 defm rm : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
6499 multiclass avx512_extend_BW<bits<8> opc, string OpcodeStr,
6503 defm Z128: avx512_extend_common<opc, OpcodeStr, v8i16x_info,
6507 defm Z256: avx512_extend_common<opc, OpcodeStr, v16i16x_info,
6512 defm Z : avx512_extend_common<opc, OpcodeStr, v32i16_info,
6518 multiclass avx512_extend_BD<bits<8> opc, string OpcodeStr,
6522 defm Z128: avx512_extend_common<opc, OpcodeStr, v4i32x_info,
6526 defm Z256: avx512_extend_common<opc, OpcodeStr, v8i32x_info,
6531 defm Z : avx512_extend_common<opc, OpcodeStr, v16i32_info,
6537 multiclass avx512_extend_BQ<bits<8> opc, string OpcodeStr,
6541 defm Z128: avx512_extend_common<opc, OpcodeStr, v2i64x_info,
6545 defm Z256: avx512_extend_common<opc, OpcodeStr, v4i64x_info,
6550 defm Z : avx512_extend_common<opc, OpcodeStr, v8i64_info,
6556 multiclass avx512_extend_WD<bits<8> opc, string OpcodeStr,
6560 defm Z128: avx512_extend_common<opc, OpcodeStr, v4i32x_info,
6564 defm Z256: avx512_extend_common<opc, OpcodeStr, v8i32x_info,
6569 defm Z : avx512_extend_common<opc, OpcodeStr, v16i32_info,
6575 multiclass avx512_extend_WQ<bits<8> opc, string OpcodeStr,
6579 defm Z128: avx512_extend_common<opc, OpcodeStr, v2i64x_info,
6583 defm Z256: avx512_extend_common<opc, OpcodeStr, v4i64x_info,
6588 defm Z : avx512_extend_common<opc, OpcodeStr, v8i64_info,
6594 multiclass avx512_extend_DQ<bits<8> opc, string OpcodeStr,
6599 defm Z128: avx512_extend_common<opc, OpcodeStr, v2i64x_info,
6603 defm Z256: avx512_extend_common<opc, OpcodeStr, v4i64x_info,
6608 defm Z : avx512_extend_common<opc, OpcodeStr, v8i64_info,
6672 multiclass avx512_gather<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
6676 def rm : AVX5128I<opc, MRMSrcMem, (outs _.RC:$dst, _.KRCWM:$mask_wb),
6729 multiclass avx512_scatter<bits<8> opc, string OpcodeStr, X86VectorVTInfo _,
6734 def mr : AVX5128I<opc, MRMDestMem, (outs _.KRCWM:$mask_wb),
6786 multiclass avx512_gather_scatter_prefetch<bits<8> opc, Format F, string OpcodeStr,
6789 def m : AVX5128I<opc, F, (outs), (ins KRC:$mask, memop:$src),
6846 multiclass cvt_by_vec_width<bits<8> opc, X86VectorVTInfo Vec, string OpcodeStr > {
6847 def rr : AVX512XS8I<opc, MRMSrcReg, (outs Vec.RC:$dst), (ins Vec.KRC:$src),
6852 multiclass cvt_mask_by_elt_width<bits<8> opc, AVX512VLVectorVTInfo VTInfo,
6855 defm Z : cvt_by_vec_width<opc, VTInfo.info512, OpcodeStr>, EVEX_V512;
6858 defm Z256 : cvt_by_vec_width<opc, VTInfo.info256, OpcodeStr>, EVEX_V256;
6859 defm Z128 : cvt_by_vec_width<opc, VTInfo.info128, OpcodeStr>, EVEX_V128;
6876 multiclass convert_vector_to_mask_common<bits<8> opc, X86VectorVTInfo _, string OpcodeStr > {
6877 def rr : AVX512XS8I<opc, MRMSrcReg, (outs _.KRC:$dst), (ins _.RC:$src),
6894 multiclass avx512_convert_vector_to_mask<bits<8> opc, string OpcodeStr,
6897 defm Z : convert_vector_to_mask_common <opc, VTInfo.info512, OpcodeStr>,
6901 defm Z256 : convert_vector_to_mask_common<opc, VTInfo.info256, OpcodeStr>,
6903 defm Z128 : convert_vector_to_mask_common<opc, VTInfo.info128, OpcodeStr>,
6925 multiclass compress_by_vec_width<bits<8> opc, X86VectorVTInfo _,
6927 defm rr : AVX512_maskable<opc, MRMDestReg, _, (outs _.RC:$dst),
6932 def mr : AVX5128I<opc, MRMDestMem, (outs),
6937 def mrk : AVX5128I<opc, MRMDestMem, (outs),
6946 multiclass compress_by_elt_width<bits<8> opc, string OpcodeStr,
6948 defm Z : compress_by_vec_width<opc, VTInfo.info512, OpcodeStr>, EVEX_V512;
6951 defm Z256 : compress_by_vec_width<opc, VTInfo.info256, OpcodeStr>, EVEX_V256;
6952 defm Z128 : compress_by_vec_width<opc, VTInfo.info128, OpcodeStr>, EVEX_V128;
6966 multiclass expand_by_vec_width<bits<8> opc, X86VectorVTInfo _,
6968 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
6972 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
6979 multiclass expand_by_elt_width<bits<8> opc, string OpcodeStr,
6981 defm Z : expand_by_vec_width<opc, VTInfo.info512, OpcodeStr>, EVEX_V512;
6984 defm Z256 : expand_by_vec_width<opc, VTInfo.info256, OpcodeStr>, EVEX_V256;
6985 defm Z128 : expand_by_vec_width<opc, VTInfo.info128, OpcodeStr>, EVEX_V128;
7002 multiclass avx512_unary_fp_packed_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7004 defm rri : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
7010 defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7016 defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7026 multiclass avx512_unary_fp_sae_packed_imm<bits<8> opc, string OpcodeStr,
7028 defm rrib : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
7038 AVX512VLVectorVTInfo _, bits<8> opc, SDNode OpNode, Predicate prd>{
7040 defm Z : avx512_unary_fp_packed_imm<opc, OpcodeStr, OpNode, _.info512>,
7041 avx512_unary_fp_sae_packed_imm<opc, OpcodeStr, OpNode, _.info512>,
7045 defm Z128 : avx512_unary_fp_packed_imm<opc, OpcodeStr, OpNode, _.info128>,
7047 defm Z256 : avx512_unary_fp_packed_imm<opc, OpcodeStr, OpNode, _.info256>,
7056 multiclass avx512_fp_packed_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7058 defm rri : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
7065 defm rmi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7072 defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7084 multiclass avx512_3Op_rm_imm8<bits<8> opc, string OpcodeStr, SDNode OpNode,
7087 defm rri : AVX512_maskable<opc, MRMSrcReg, DestInfo, (outs DestInfo.RC:$dst),
7093 defm rmi : AVX512_maskable<opc, MRMSrcMem, DestInfo, (outs DestInfo.RC:$dst),
7105 multiclass avx512_3Op_imm8<bits<8> opc, string OpcodeStr, SDNode OpNode,
7107 avx512_3Op_rm_imm8<opc, OpcodeStr, OpNode, _, _>{
7109 defm rmbi : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7121 multiclass avx512_fp_scalar_imm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7124 defm rri : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
7131 defm rmi : AVX512_maskable_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),
7141 defm rmi_alt :AVX512_maskable_in_asm<opc, MRMSrcMem, _, (outs _.FRC:$dst),
7149 multiclass avx512_fp_sae_packed_imm<bits<8> opc, string OpcodeStr,
7151 defm rrib : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
7161 multiclass avx512_fp_sae_scalar_imm<bits<8> opc, string OpcodeStr,
7163 defm NAME#rrib : AVX512_maskable_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
7174 AVX512VLVectorVTInfo _, bits<8> opc, SDNode OpNode, Predicate prd>{
7176 defm Z : avx512_fp_packed_imm<opc, OpcodeStr, OpNode, _.info512>,
7177 avx512_fp_sae_packed_imm<opc, OpcodeStr, OpNode, _.info512>,
7182 defm Z128 : avx512_fp_packed_imm<opc, OpcodeStr, OpNode, _.info128>,
7184 defm Z256 : avx512_fp_packed_imm<opc, OpcodeStr, OpNode, _.info256>,
7189 multiclass avx512_common_3Op_rm_imm8<bits<8> opc, SDNode OpNode, string OpStr,
7192 defm Z : avx512_3Op_rm_imm8<opc, OpStr, OpNode, DestInfo.info512,
7196 defm Z128 : avx512_3Op_rm_imm8<opc, OpStr, OpNode, DestInfo.info128,
7198 defm Z256 : avx512_3Op_rm_imm8<opc, OpStr, OpNode, DestInfo.info256,
7204 bits<8> opc, SDNode OpNode>{
7206 defm Z : avx512_3Op_imm8<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
7209 defm Z128 : avx512_3Op_imm8<opc, OpcodeStr, OpNode, _.info128>, EVEX_V128;
7210 defm Z256 : avx512_3Op_imm8<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
7215 X86VectorVTInfo _, bits<8> opc, SDNode OpNode, Predicate prd>{
7217 defm Z128 : avx512_fp_scalar_imm<opc, OpcodeStr, OpNode, _>,
7218 avx512_fp_sae_scalar_imm<opc, OpcodeStr, OpNode, _>;
7268 bits<8> opc, SDNode OpNode = X86Shuf128>{
7270 defm Z : avx512_3Op_imm8<opc, OpcodeStr, OpNode, _.info512>, EVEX_V512;
7274 defm Z256 : avx512_3Op_imm8<opc, OpcodeStr, OpNode, _.info256>, EVEX_V256;
7345 multiclass avx512_unary_rm<bits<8> opc, string OpcodeStr, SDNode OpNode,
7347 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
7352 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7359 multiclass avx512_unary_rmb<bits<8> opc, string OpcodeStr, SDNode OpNode,
7361 avx512_unary_rm<opc, OpcodeStr, OpNode, _> {
7362 defm rmb : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7371 multiclass avx512_unary_rm_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
7374 defm Z : avx512_unary_rm<opc, OpcodeStr, OpNode, VTInfo.info512>, EVEX_V512;
7377 defm Z256 : avx512_unary_rm<opc, OpcodeStr, OpNode, VTInfo.info256>,
7379 defm Z128 : avx512_unary_rm<opc, OpcodeStr, OpNode, VTInfo.info128>,
7384 multiclass avx512_unary_rmb_vl<bits<8> opc, string OpcodeStr, SDNode OpNode,
7387 defm Z : avx512_unary_rmb<opc, OpcodeStr, OpNode, VTInfo.info512>,
7391 defm Z256 : avx512_unary_rmb<opc, OpcodeStr, OpNode, VTInfo.info256>,
7393 defm Z128 : avx512_unary_rmb<opc, OpcodeStr, OpNode, VTInfo.info128>,
7432 multiclass avx512_ctlz<bits<8> opc, string OpcodeStr, Predicate prd>{
7434 defm NAME : avx512_unary_rm_vl_dq<opc, opc, OpcodeStr, ctlz, prd>;
7443 multiclass avx512_replicate<bits<8> opc, string OpcodeStr, SDNode OpNode>{
7444 defm NAME: avx512_unary_rm_vl<opc, OpcodeStr, OpNode, avx512vl_f32_info,
7455 multiclass avx512_movddup_128<bits<8> opc, string OpcodeStr, SDNode OpNode,
7457 defm rr : AVX512_maskable<opc, MRMSrcReg, _, (outs _.RC:$dst),
7460 defm rm : AVX512_maskable<opc, MRMSrcMem, _, (outs _.RC:$dst),
7467 multiclass avx512_movddup_common<bits<8> opc, string OpcodeStr, SDNode OpNode,
7470 defm Z : avx512_unary_rm<opc, OpcodeStr, OpNode, VTInfo.info512>, EVEX_V512;
7473 defm Z256 : avx512_unary_rm<opc, OpcodeStr, OpNode, VTInfo.info256>,
7475 defm Z128 : avx512_movddup_128<opc, OpcodeStr, OpNode, VTInfo.info128>,
7480 multiclass avx512_movddup<bits<8> opc, string OpcodeStr, SDNode OpNode>{
7481 defm NAME: avx512_movddup_common<opc, OpcodeStr, OpNode,
7520 multiclass avx512_extract_elt_bw_m<bits<8> opc, string OpcodeStr, SDNode OpNode,
7522 def mr : AVX512Ii8<opc, MRMDestMem, (outs),
7587 multiclass avx512_insert_elt_m<bits<8> opc, string OpcodeStr, SDNode OpNode,
7589 def rm : AVX512Ii8<opc, MRMSrcMem, (outs _.RC:$dst),
7597 multiclass avx512_insert_elt_bw<bits<8> opc, string OpcodeStr, SDNode OpNode,
7600 def rr : AVX512Ii8<opc, MRMSrcReg, (outs _.RC:$dst),
7606 defm NAME : avx512_insert_elt_m<opc, OpcodeStr, OpNode, _, LdFrag>;
7610 multiclass avx512_insert_elt_dq<bits<8> opc, string OpcodeStr,
7613 def rr : AVX512Ii8<opc, MRMSrcReg, (outs _.RC:$dst),
7620 defm NAME : avx512_insert_elt_m<opc, OpcodeStr, insertelt, _,
7647 multiclass avx512_shift_packed<bits<8> opc, SDNode OpNode, Format MRMr,
7649 def rr : AVX512<opc, MRMr,
7653 def rm : AVX512<opc, MRMm,
7661 multiclass avx512_shift_packed_all<bits<8> opc, SDNode OpNode, Format MRMr,
7664 defm Z512 : avx512_shift_packed<opc, OpNode, MRMr, MRMm,
7667 defm Z256 : avx512_shift_packed<opc, OpNode, MRMr, MRMm,
7669 defm Z128 : avx512_shift_packed<opc, OpNode, MRMr, MRMm,
7679 multiclass avx512_psadbw_packed<bits<8> opc, SDNode OpNode,
7682 def rr : AVX512BI<opc, MRMSrcReg,
7688 def rm : AVX512BI<opc, MRMSrcMem,
7697 multiclass avx512_psadbw_packed_all<bits<8> opc, SDNode OpNode,
7700 defm Z512 : avx512_psadbw_packed<opc, OpNode, OpcodeStr, v8i64_info,
7703 defm Z256 : avx512_psadbw_packed<opc, OpNode, OpcodeStr, v4i64x_info,
7705 defm Z128 : avx512_psadbw_packed<opc, OpNode, OpcodeStr, v2i64x_info,
7713 multiclass avx512_ternlog<bits<8> opc, string OpcodeStr, SDNode OpNode,
7716 defm rri : AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
7723 defm rmi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
7731 defm rmbi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
7759 multiclass avx512_fixupimm_packed<bits<8> opc, string OpcodeStr, SDNode OpNode,
7762 defm rri : AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
7770 defm rmi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
7778 defm rmbi : AVX512_maskable_3src<opc, MRMSrcMem, _, (outs _.RC:$dst),
7790 multiclass avx512_fixupimm_packed_sae<bits<8> opc, string OpcodeStr,
7793 defm rrib : AVX512_maskable_3src<opc, MRMSrcReg, _, (outs _.RC:$dst),
7805 multiclass avx512_fixupimm_scalar<bits<8> opc, string OpcodeStr, SDNode OpNode,
7808 defm rri : AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
7817 defm rrib : AVX512_maskable_3src_scalar<opc, MRMSrcReg, _, (outs _.RC:$dst),
7826 defm rmi : AVX512_maskable_3src_scalar<opc, MRMSrcMem, _, (outs _.RC:$dst),